我遇到了麻烦。我希望代码循环并询问'Hey, are you hungry?'
,但前提是饥饿变量不是True
或False
。但是,无论我输入什么答案,它就好像它是True
。
在我看来,如果我输入的是“是”的变体,那么饥饿应该是True
并且代码应该停止。如果我输入的变体为no,则代码应为False
并停止。如果我没有输入任何这些,那么饥饿将不会是True
或False
并且应该循环,再次提出问题。
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')
答案 0 :(得分:1)
你在这里遇到一些问题,尤其是为了一些不同的目的使用相同的变量名称,这不是好的风格,也没有真正使用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')
我们上面得到的是:
我们正在开始一个无限循环(同时为True)
我们将用户输入分配给饥饿变量 - 这就是它的全部内容
如果用户在'是'上输入变体或者没有'它会打印一个响应并突破while循环
如果他们没有提供是/否答案,则会再次回到循环的开头(即没有休息)
答案 1 :(得分:0)
你不能在Python中说if x == a or b or c
并让它做你想做的事。您需要改为使用if x in [a, b, c]
。
答案 2 :(得分:0)
条件hungry == 'yes' or 'ye' or 'y' or 'yeah'
不会检查hungry == 'yes'
或hungry == 'ye'
或hungry == 'y'
或hungry == 'yeah'
是否为真。它会检查(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')
答案 3 :(得分:0)
以这种方式尝试:
sorted(my_list, key=lambda x: sum(x))
答案 4 :(得分:0)
这是因为你编写的代码就像英文一样。当您将变量与两个布尔值进行比较时,首先要将变量与第一个布尔值进行比较,然后将变量与第二个布尔值进行比较。因此while hungry != True or False
应为while hungry != True or hungry != False
。如果你使用后者,你会得到错误的答案。对所有其他if
和while
语句执行相同操作。所以你的代码应该是:
hungry = None
while hungry != True or hungry == False:
hungry = input('Hey, are you hungry?')
if hungry == 'yes' or hungry == 'ye' or hungry == 'y' or hungry == 'yeah':
print ('oh you hungry huh')
hungry = True
elif hungry == 'no' or hungry =='n' or hungry =='nah' or hungry =='nope':
print ('no food for you then')
hungry = False
else:
print ('its a simple yes or no question pls')
编辑: 其他人则建议会员发言也有效。但是,既然看起来你是你编写的代码的初学者,我想我的解释会更容易理解。
答案 5 :(得分:0)
您的代码无效,因为您使用了错误的语句,例如hungry != True or False
,这是您的代码的工作版本:
hungry = None
while hungry not in (True, False): # Check if hungry is not True or 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')