again = True
while(again == True):
yn = input("Do you want to do it again? (y or n)").lower()
if(yn == 'y' or 'yes'):
again == True
elif(yn == 'n' or 'no):
again == False
如何使此代码生效?当我运行它时,它总是真实的。= /
答案 0 :(得分:6)
让我们从头开始:
while(again == True):
这里不需要括号
您不需要== True
位。 again
就足够了,因为它的布尔值为True。
if(yn == 'y' or 'yes'):
再次,不需要括号。
该行代码被翻译为if (yn == 'y') or ('yes'):
。这始终为真,因为'yes'
被视为True
(不是空字符串)
在python中,您需要执行if yn == 'y' or yn == 'yes':
或者你可以if yn in ('y', 'yes')
again == True
==
用于比较。 =
用于分配
这会发生在else
区块中。
答案 1 :(得分:1)
在您计划的最后4行中,您没有指定again
使值为true,而是检查again
是否等于True
/ False
。< / p>
==
与=
完全不同。
答案 2 :(得分:1)
这不起作用:
if (yn == 'y' or 'yes'):
# ...
elif(yn == 'n' or 'no):
正确的方法是:
if yn in ('y' or 'yes'):
# ...
elif yn in ('n' or 'no):
此外,在条件分配错误的情况下,请使用单个=
。他们应该是这样的:
again = True
# ...
again = False
答案 3 :(得分:0)
您错误地将等于运算符==
与赋值运算符=
混淆。语句yn == 'y' or 'yes'
也是错误的,因为右侧是非空字符串,在布尔上下文中求值为True
。
声明一个简单地处理循环终止的变量不是pythonic。我会完全重写您的代码:
while True:
yn = input("Do you want to do it again? (y or n)").lower()
if yn in ('n','no'):
break
答案 4 :(得分:0)
if(yn =='y'或'yes'): #----
上述陈述的值始终为真,与“yn”的值无关,因为“或”的右侧在您的情况下始终为真。所以它永远不会执行其他部分。所以为了避免这种情况,你必须将“yn”的值与每种可能性进行比较。
的一个简单方法if(yn == 'y' or yn == 'yes'):
again == True
elif(yn == 'n' or yn == 'no):
again == False
答案 5 :(得分:-1)
你的if else语句应该是
if xxx:again = True elif yyy:再次=假
注意=和==之间的区别。