2017-07-04 30 views
0
def PrintBlue(): 
    print (" You chose Blue!\r\n") 

def PrintRed(): 
    print (" You chose Red!\r\n") 

def PrintOrange(): 
    print (" You chose Orange!\r\n") 

def PrintYellow(): 
    print (" You chose Yellow!\r\n") 

#Let's create a dictionary with unique key 

ColorSelect = { 
    0:PrintBlue, 
    1:PrintRed, 
    2:PrintOrange, 
    3:PrintYellow 
    } 

Selection = 0 

while (Selection != 4): 
    print ("0.Blue") 
    print ("1.Red") 
    print ("2.Orange") 
    print ("3.Yellow") 
    try: 
     Selection = int(input("Select a color option: ")) 
     x=0 
     if (Selection < 0) and (Selection > 3): 
      raise KeyError(" Enter a number >=0 and <4)") 
     else: 
      ColorSelect[Selection]() # Run the function inside dictionary as well 
    except KeyError: 
     pass 

以上是我的python代碼。我正在使用2.7版本。但運行後我得到了不同的輸入= 4的結果。雖然我期待同樣的結果對於選擇< 0或> 3.Here是結果是這樣的:if(選擇<0)和(選擇> 3)條件對於輸入= 4的行爲不同。爲什麼?

0.Blue 1.Red 2.Orange 3.Yellow 選擇顏色選項:5 0.Blue 1.Red 2.Orange 3.Yellow 選擇色彩選項:4

通知後,我進入輸入= 4,蟒蛇出口從運行時間。當時我進入0,1,2,3,5,6,7,每次再問再次輸入值的時間,但當我輸入4時退出。

+2

正如你所提到的'while(selection!= 4)'它退出循環。 – shivsn

+0

感謝您的快速回復!我只是不好意思看到while(Selection!= 4):在我的代碼中。 –

+0

條件'if(選擇<0)和(選擇> 3)'總是假。選擇不能小於0且大於3.適當的運算符是'或',而不是'和'。 –

回答

1
if (Selection < 0) and (Selection > 3): 

的意思是「如果選擇小於零且大於三」,這是不可能發生的。我懷疑你的意思是

if (Selection < 0) or (Selection > 3): 

這將引發有效範圍之外的輸入錯誤。

當你進入4因爲

while (Selection != 4): 

如果這不是期望的行爲的程序退出時,您需要更改該行。例如,如果你希望循環一直運行下去,它可能只是

while True: 
+0

感謝您的好評,並給我一些見解! –

0

你「而(選擇= 4!)」上線24 - 當選擇等於4 while循環(和程序)退出。

+0

感謝您快速指出! –

相關問題