Python while循环布尔值仅显示为Tru

2024-06-09 02:34:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有麻烦了。我希望代码循环并询问'Hey, are you hungry?',但前提是饥饿变量不是True或{}。然而,无论我输入什么答案,它的作用都好像是True。在

在我的头脑中,如果我输入yes的变体,那么hungry应该是True,代码应该停止。如果我输入no的变体,那么代码应该是False并停止。如果我没有输入这两个,那么hungry将不会是True或{},应该循环遍历,再次提出问题。在

hungry = None
while hungry != True or False:
    hungry = input('Hey, are you hungry?')
    if hungry == 'yes' or 'ye' or 'y' or 'yeah':
        print ('oh you hungry huh')
        hungry = True
    elif hungry == 'no' or 'n' or 'nah' or 'nope':
        print ('no food for you then')
        hungry = False
    else:
        print ('its a simple yes or no question pls')

Tags: orno答案代码youfalsetrue变体
3条回答

这里有几个问题,尤其是使用同一个变量名进行一些不同的用途,这不是一种好的风格,而且还没有真正使用python中的控制流原语-查找它(https://wiki.python.org/moin/WhileLoop)。在

简明扼要的工作解决方案如下:

while True:
    hungry = input('hungry?')
    if hungry in ('y','yes'):
        print('Eat up')
        break
    elif hungry in ('n','no'):
        print('Ok not hungry')
        break
    else:
        print('You need to tell me')

上面我们得到的是:

  • 我们正在启动一个无限循环(虽然是真的)

  • 我们将用户输入分配给hungry变量-这就是它的全部内容

  • 如果用户在“yes”或“no”上输入一个变量,它将打印一个响应并跳出while循环

  • 如果他们没有提供“是/否”的答案,它将再次返回循环的开始(即no break)

你不能用Python说if x == a or b or c,然后让它做你想做的事情。您需要使用if x in [a, b, c]。在

条件hungry == 'yes' or 'ye' or 'y' or 'yeah'不检查hungry == 'yes'或{}或{}或{}中的任何一个是真的。它检查(hungry == yes) or 'ye' or 'y' or 'yeah'(并且除了hungry == yes之外没有任何东西有真值)

类似地,hungry != True or False正在检查(hungry != True) or False,因此条件的False部分不执行任何操作。在

你应该这样写:

hungry = None
while hungry not in (True, False):
    hungry = input('Hey, are you hungry?')
    if hungry in ('yes', 'ye', 'y', 'yeah'):
        print ('oh you hungry huh')
        hungry = True
    elif hungry in ('no', 'n', 'nah', 'nope'):
        print ('no food for you then')
        hungry = False
    else:
        print ('its a simple yes or no question pls')

相关问题 更多 >