Python 2.7 python新手-为什么只打印第一行?
我相信这对每个人来说都是非常基本的,但由于某些原因,我无法理解下面的代码只打印出“很高兴再次看到你” 我是编程新手,这是我第一次尝试创建一些小东西来与之交互。你知道为什么elif和else中的其他选项不打印吗Python 2.7 python新手-为什么只打印第一行?,python-2.7,Python 2.7,我相信这对每个人来说都是非常基本的,但由于某些原因,我无法理解下面的代码只打印出“很高兴再次看到你” 我是编程新手,这是我第一次尝试创建一些小东西来与之交互。你知道为什么elif和else中的其他选项不打印吗 def was_read(): print "Have you read this before?" read = raw_input('Yes or No? ') if read == 'Yes' or 'yes': print 'Glad to
def was_read():
print "Have you read this before?"
read = raw_input('Yes or No? ')
if read == 'Yes' or 'yes':
print 'Glad to see you back at it again.'
elif read == 'No' or 'no':
print 'Hope its a good one then!'
else:
print "I'm sorry I didn't understand that"
was_read()
虽然Python看起来像英语,但它不是英语。您所写的内容将被解释为:
if (read == 'Yes') or ('yes')
'yes'
是真实的,因此您的if
语句的实际行为如下:
if (read == 'Yes') or True
False或True
和True或True
都是True
,因此您的第一个if
语句始终为True
要明确:
if read == 'Yes' or read == 'yes'
或者用更简单的方法:
if read.lower() == 'yes'
虽然Python看起来像英语,但它不是英语。您所写的内容将被解释为:
if (read == 'Yes') or ('yes')
'yes'
是真实的,因此您的if
语句的实际行为如下:
if (read == 'Yes') or True
False或True
和True或True
都是True
,因此您的第一个if
语句始终为True
要明确:
if read == 'Yes' or read == 'yes'
或者用更简单的方法:
if read.lower() == 'yes'
很好的解释(+1)。请注意,
read.lower();例如,它将允许“是”
,而OP的代码则不允许。非常感谢您的快速和有用的响应。你能解释一下为什么这段代码不需要任何括号吗?elif next==“嘲弄熊”和“不移动熊”:打印“熊已经离开了门。你现在可以穿过它。”熊移动=True@user2093601:就像1+2*3
是6
,因为*
的优先级高于+
,=
的优先级高于和@user2093601:By6
我的意思是7
;)很好的解释(+1)。请注意,read.lower();例如,它将允许“是”
,而OP的代码则不允许。非常感谢您的快速和有用的响应。你能解释一下为什么这段代码不需要任何括号吗?elif next==“嘲弄熊”和“不移动熊”:打印“熊已经离开了门。你现在可以穿过它。”熊移动=True@user2093601:就像1+2*3
是6
,因为*
的优先级高于+
,=
的优先级高于和@user2093601:By6
我的意思是7
;)请注意,在其内部调用was_read()
可能会给您带来问题,因为每次发生这种情况时,您都会将函数调用堆积得更深。最好将例程包装为,而为True:
循环,并在完成后将其中断。请注意,调用was_read()
本身可能会给您带来问题,因为每次发生这种情况时,您都会将函数调用堆积得更深。最好将例程包装为,而为True:
循环,并在完成后将其中断。