Python 如果在while循环中
我如何使这个代码工作?当我运行它时,它总是会被证明是正确的 在程序的最后4行中,您没有再次赋值为true,而是再次检查是否等于true/FalsePython 如果在while循环中,python,Python,我如何使这个代码工作?当我运行它时,它总是会被证明是正确的 在程序的最后4行中,您没有再次赋值为true,而是再次检查是否等于true/False ==与=.完全不同。在程序的最后4行中,您没有再次赋值以使值为true,而是再次检查是否等于true/False ==与==完全不同。您将等式运算符==误认为赋值运算符=。另外,语句yn==“y”或“yes”也有问题,因为右侧是非空字符串,在布尔上下文中计算结果为True 简单地声明一个变量来处理循环终止不是pythonic的。我会将您的代码完全重写
==与=.完全不同。在程序的最后4行中,您没有再次赋值以使值为true,而是再次检查是否等于true/False
==与==完全不同。您将等式运算符==误认为赋值运算符=。另外,语句yn==“y”或“yes”也有问题,因为右侧是非空字符串,在布尔上下文中计算结果为True 简单地声明一个变量来处理循环终止不是pythonic的。我会将您的代码完全重写为:
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
您将相等运算符==误认为赋值运算符=。另外,语句yn==“y”或“yes”也有问题,因为右侧是非空字符串,在布尔上下文中计算结果为True 简单地声明一个变量来处理循环终止不是pythonic的。我会将您的代码完全重写为:
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
你的if-else状态应该是 如果xxx: 再次=正确 elif yyy: 再次=错误
请注意=和==之间的差异。您的if-else语句应该是 如果xxx: 再次=正确 elif yyy: 再次=错误 注意=和==之间的区别。这不起作用:
while True:
yn = input("Do you want to do it again? (y or n)").lower()
if yn in ('n','no'):
break
正确的方法是:
if (yn == 'y' or 'yes'):
# ...
elif(yn == 'n' or 'no):
此外,在赋值错误的条件下,使用单个=。它们应该是这样的:
if yn in ('y' or 'yes'):
# ...
elif yn in ('n' or 'no):
这行不通:
while True:
yn = input("Do you want to do it again? (y or n)").lower()
if yn in ('n','no'):
break
正确的方法是:
if (yn == 'y' or 'yes'):
# ...
elif(yn == 'n' or 'no):
此外,在赋值错误的条件下,使用单个=。它们应该是这样的:
if yn in ('y' or 'yes'):
# ...
elif yn in ('n' or 'no):
让我们从头开始: whileagain==真: 这里不需要括号 您不需要==真位。同样足够了,因为它将有一个布尔值True 如果n==“是”或“是”: 同样,不需要括号 这行代码被翻译成yn==“y”或“yes”:。这将始终为真,因为“是”被视为真而不是空字符串 在python中,如果yn=='y'或yn=='yes',则需要执行以下操作: 或者如果yn在“是”中,你也可以这样做 再次==真 ==用于比较这是作业 这发生在else块中
让我们从头开始: whileagain==真: 这里不需要括号 您不需要==真位。同样足够了,因为它将有一个布尔值True 如果n==“是”或“是”: 同样,不需要括号 这行代码被翻译成yn==“y”或“yes”:。这将始终为真,因为“是”被视为真而不是空字符串 在python中,如果yn=='y'或yn=='yes',则需要执行以下操作: 或者如果yn在“是”中,你也可以这样做 再次==真 ==用于比较这是作业 这发生在else块中 如果n==“是”或“是”: -- 上述语句的值始终为真,与“yn”的值无关,因为“or”的右侧在您的情况下始终为真。所以它永远不会执行其他部分。所以为了避免这种情况,您必须将“yn”的值与每种可能性进行比较。 一个简单的方法是
again = True
# ...
again = False
如果n==“是”或“是”:
--
上述语句的值始终为真,与“yn”的值无关,因为“or”的右侧在您的情况下始终为真。所以它永远不会执行其他部分。所以为了避免这种情况,您必须将“yn”的值与每种可能性进行比较。
一个简单的方法是
again = True
# ...
again = False
请注意,在倒数第二行,您缺少一个报价。elifyn=='n'或'no':请注意,在倒数第二行,您缺少一个引号。elifyn=='n'或'no':好的,现在可以了,但是当我输入除no以外的其他内容时,它会重复自身。如何使其仅响应yes?@user2840982然后在else中添加另一个条件:例如,为了考虑这种情况,请用户输入正确的输入。或者按照@JasonSundram的建议去做,用else替换整个elif行:好吧,现在可以了,但是当我输入除no之外的其他内容时,它会重复自身。如何使其仅响应yes?@user2840982然后在else中添加另一个条件:例如,为了考虑这种情况,请用户输入正确的输入。或者按照@JasonSundram的建议,用else替换整个elif行: