我在python中使用了一个非常简单和基本的if elif,但它只会给我相同的结果,而不是我的输入。
answer = input('Do you like christmas? ')
if answer == 'no' or 'No':
print('Your so uncool, just leave, this is a place for festive people you
heartless monster')
elif answer == 'yes' or 'Yes':
print('Your pretty cool, you can stay, just dont get drunk on the eggnog and
make out with the dog...')
elif 'brit' or 'Brit' in answer:
print('I was gunna be mean to brit, but its christmas and I am not allowed
because a fat man in a red suit will reck me')
else:
print('MAKE UP YOUR MIND, YOU SUCK')
输出是占位符,但是在我运行时我得到的是无答案的打印,天气我没有回答是或其他任何事情......
编辑:我现在看到在问题中我的缩进看起来非常糟糕,这不是我写的方式,但这只是在这里发布,请假设缩进是正确的。
你得到这个是因为你的第一个if
语句实际上是这样解析的:
if (answer == 'no') or ('No'):
这意味着如果answer == 'no'
或'No'
被认为是“真实的”,那么该声明将继续进行。 python中的任何非空字符串都被认为是true
,因此您将在第一个语句中始终获得True
。
bool('')
# will output False
bool('No')
# will output True
如果你真的想要执行这个,你必须每次运行比较...
if answer == 'no' or answer == 'No':
但是,有一些更简洁的方法,例如
answer.lower() == 'no'
# or, if you want lots more examples
answer in ['no', 'No', 'NOPE', 'Not at all', 'Never']
建议阅读
你的问题是if的陈述:
answer = 'yes'
if answer == 'no' or 'No':
1. ^ (this is saying, 'yes' == 'no' or 'No')
2. ^ (this is saying, False or 'No')
3. ^ (this is saying, False or True)
4. ^ (this is saying True)
在python strings are truthy中,意味着它们在布尔语句中被解释为true。
所以你的正确陈述(和其他人):
answer = 'yes'
if answer == 'no' or answer == 'No':
1. ^ (this is saying, 'yes' == 'no' or 'yest == ''No')
2. ^ (this is saying, False or False)
3. ^ (this is saying False)
就是这样了!哦,另一个提示,你可以比较任何类型的不/是这样的
answer = str.lower(input('Do you like christmas? '))
if answer == 'no':
^ Even if the user types 'No', it will be turned into 'no'.