我的代码部分,我问用户他们是否想要一些蛋糕让我感到困惑。
import time
print("Here comes dat boi")
time.sleep(.5)
print("Waddup dat boi")
time.sleep(1)
name = input("Whats your name?\n")
print ("Hello,",name)
time.sleep(.5)
cake = input("Hello, want some cake?\n")
if cake == 'yes' or 'ya' or 'Ya':
print("Cool!")
else:
print('Aww..')
示例输入:
ya
yes
no
something other
预期产出:
Cool!
Cool!
Aww..
Aww..
实际输出
Cool!
Cool!
Cool!
Cool!
为什么行print('Aww..')
没有执行?
答案 0 :(得分:2)
if语句建立在条件之上。如果您打算使用包含多个不同“触发器”的声明,你必须说明每个人的新条件。
因此,您的陈述要求cake ==
表示每个潜在的真假结果。
import time
print("Here comes dat boi")
time.sleep(.5)
print("Waddup dat boi")
time.sleep(1)
name = input("Whats your name?\n")
print ("Hello,",name)
time.sleep(.5)
cake = input("Hello, want some cake?\n")
if cake == 'yes' or cake == 'ya' or cake == 'Ya':
print("Cool!")
else:
print('Aww..')
为了帮助您解决问题,我认为or 'ya' or 'Ya'
由于用户输入而导致真实,并且' ya' Ya'属于字符串类型。
请不要在最后一部分引用我。我的假设可能不正确。
编辑:您的评论"
Isaac它可能有用但是应该将它们连接起来。它早先工作了。它会用一个词来表达,但如果没有,它会以各种方式说酷!"表明我关于类型匹配导致真实的假设实际上是正确的。这可能就是为什么早期的测试可能使or
看起来像挂钩了不同的可能性。
以下代码if cake in ('yes', 'Ya','ya'):
是正确的“挂钩”方法。将不同的可能性转化为单一条件。
OP的固定答案:
import time
print("Here comes dat boi")
time.sleep(.5)
print("Waddup dat boi")
time.sleep(1)
name = input("Whats your name?\n")
print ("Hello,",name)
time.sleep(.5)
cake = input("Hello, want some cake?\n")
if cake in ('yes', 'Ya','ya', 'fine', 'sure'):
print("Cool!")
else:
print('Aww..')
答案 1 :(得分:1)
我之前没有写过一行python,但我的直觉说你需要替换
if cake == 'yes' or 'ya' or 'Ya':
与
if cake == 'yes' or cake == 'ya' or cake == 'Ya':
您可以尝试Word in array of words(再次,未经测试,只是猜测)
if cake in ['yes','ya','Ya']:
答案 2 :(得分:0)
在Python中,非空字符串始终被评估为True
。你的代码
if cake == 'yes' or 'ya' or 'Ya':
,使用布尔逻辑,无论你进入那里,都将始终执行它下面的任务。所以它始终打印"酷!"。
为了防止这种情况发生,您应该修改条件if
语句,以便只捕获'yes'
,'ya'
和'Ya'
这两个词。因此,if cake == 'yes' or 'ya' or 'Ya':
应替换为
if cake == 'yes' or cake == 'ya' or cake == 'Ya':
或者如果您已经熟悉Python列表
if cake in ['yes', 'ya', 'Ya']: # Evaluates to True if cake is
# equivalent to one of the strings in the list
阅读此thread以获取有关Python字符串真值的更多详细信息。