如果在里面循环

时间:2013-10-03 03:12:34

标签: python

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

如何使此代码生效?当我运行它时,它总是真实的。= /

6 个答案:

答案 0 :(得分:6)

让我们从头开始:

while(again == True):

  1. 这里不需要括号

  2. 您不需要== True位。 again就足够了,因为它的布尔值为True。

  3. if(yn == 'y' or 'yes'):

    1. 再次,不需要括号。

    2. 该行代码被翻译为if (yn == 'y') or ('yes'):。这始终为真,因为'yes'被视为True(不是空字符串)

    3. 在python中,您需要执行if yn == 'y' or yn == 'yes':

    4. 或者你可以if yn in ('y', 'yes')

    5. again == True

      1. ==用于比较。 =用于分配

      2. 这会发生在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:再次=假

注意=和==之间的区别。