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
如何使此代码工作?当我运行它时,它总是会成真.. =/
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
如何使此代码工作?当我运行它时,它总是会成真.. =/
让我们从头开始:
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
块中。
在程序的最后 4 行中,您没有指定again
值为 true,而是在检查是否again
等于True
/ False
。
==
与 完全不同=
。
这不起作用:
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
if(yn == 'y' 或 'yes'): # ----
上述语句的值始终为真,与“yn”的值无关,因为“或”的右侧在您的情况下始终为真。所以它永远不会执行 else 部分。因此,为避免这种情况,您必须将“yn”的值与每种可能性进行比较。一种简单的方法是
if(yn == 'y' or yn == 'yes'):
again == True
elif(yn == 'n' or yn == 'no):
again == False
您将相等运算符==
与赋值运算符混淆了=
。该语句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
你的 if else 语句应该是
如果 xxx:再次 = 真 elif yyy:再次 = 假
注意 = 和 == 之间的区别。