2016-10-23 261 views
0

我想爲我的侄子做一個骰子tosser,所以他可以玩沒有骰子的棋盤遊戲。即使我輸入了一個真實的條件,我也陷入了一個while循環。我試圖讓他選擇他想用的骰子,但是如果他選擇了一個錯誤的骰子,那麼它會要求他再次輸入。我的代碼是...卡在while循環

dice_select = input('Enter the amount of sides are on the dice you want to throw, either 4, 6, or 12: ') 
while dice_select != 4 or dice_select != 6 or dice_select != 12: 
    dice_select = int(input('Sorry thats not quite right. Enter the amount of sides are on the dice you want to throw, either 4, 6, or 12: ')) 

如果我輸入4,6或12,那麼當它應該繼續時,它仍然使我進入循環。

+0

條件可能是錯誤的唯一方法是如果'dice_select'等於4,6和12全部在同一時間。 –

+0

重新閱讀你的狀況。評估它的價值,你尋求。當'dice_select'是'4'時會發生什麼? – njzk2

回答

2

試試這個:

dice_select = int(input('Enter the amount of sides are on the dice you want to throw, either 4, 6, or 12: ')) 
    while not (dice_select == 4 or dice_select == 6 or dice_select == 12): 
     dice_select = int(input('Sorry thats not quite right. Enter the amount of sides are on the dice you want to throw, either 4, 6, or 12: ')) 

這意味着循環,直到dice_select等於4,6或12

隨着你的計劃,你的while循環的條件永遠是正確的,因爲當它等於4,你的程序正在檢查錯誤或真實或真實,這將永遠是真實的。

換句話說,您的程序正在尋找何時dice_select等於4,6和12的時間。這是不可能的。

+0

嗨,感謝您的回覆。我現在得到這個 – Lomore

+0

輸入你想投擲的骰子的數量,無論是4,6還是12:12 對不起,這不太對。輸入你想投擲的骰子的數量,無論是4,6還是12:12 你選擇擲出12面骰子,結果是1 – Lomore

+0

因爲在你的第一個陳述中,你不會將你的輸入轉換成一個整數,然後你會比較一個字符串和一個整數,這在python中總是爲false。我將編輯我的上述代碼以反映這一點。 – creeperdomain