2016-05-23 20 views
-1

此循环内部的if/else语句不起作用。如果我输入“否”,它仍然继续循环。我不明白为什么,任何帮助将不胜感激。If/Then语句不在while循环中工作

while keepPlaying == True: 
    play = input(str('Would you like to play rock, paper, scissors? Yes or no?\n')) 

    if play == str('yes') or str('Yes'): 
     playerChoice = input(str('Ok! what\'s your choice?\n')) 
    else: 
     keepPlaying = False 

print ('Thanks for playing.') 

我已经把代码通过一个可视化工具,甚至如果变量戏!= yes或有仍选择了==到路径。

+1

为什么你不断地把字符串转换成字符串? – Matthias

回答

4

问题是这样的:

if play == str('yes') or str('Yes'): 

它等效于:

if (play == str('yes')) or str('Yes'): 

注意str('Yes')总是truthy(并与or意味着你将永远不会获得false部分)。

你想:

if play in ('yes', 'Yes'): 

或许(只是一个提示):

if play.lower() == 'yes': 
0

更改if条件play in ('Yes', 'yes', 'y', 'Y')

的问题是,在or条款的第二部分(str('Yes')总是评估为true