Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果在while循环中_Python - Fatal编程技术网

Python 如果在while循环中

Python 如果在while循环中,python,Python,我如何使这个代码工作?当我运行它时,它总是会被证明是正确的 在程序的最后4行中,您没有再次赋值为true,而是再次检查是否等于true/False ==与=.完全不同。在程序的最后4行中,您没有再次赋值以使值为true,而是再次检查是否等于true/False ==与==完全不同。您将等式运算符==误认为赋值运算符=。另外,语句yn==“y”或“yes”也有问题,因为右侧是非空字符串,在布尔上下文中计算结果为True 简单地声明一个变量来处理循环终止不是pythonic的。我会将您的代码完全重写

我如何使这个代码工作?当我运行它时,它总是会被证明是正确的

在程序的最后4行中,您没有再次赋值为true,而是再次检查是否等于true/False


==与=.完全不同。

在程序的最后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行: