Python 2.7 python新手-为什么只打印第一行?

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

我相信这对每个人来说都是非常基本的,但由于某些原因,我无法理解下面的代码只打印出“很高兴再次看到你”

我是编程新手,这是我第一次尝试创建一些小东西来与之交互。你知道为什么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 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:By
6
我的意思是
7
;)很好的解释(+1)。请注意,
read.lower();例如,它将允许
“是”
,而OP的代码则不允许。非常感谢您的快速和有用的响应。你能解释一下为什么这段代码不需要任何括号吗?elif next==“嘲弄熊”和“不移动熊”:打印“熊已经离开了门。你现在可以穿过它。”熊移动=True@user2093601:就像
1+2*3
6
,因为
*
的优先级高于
+
=
的优先级高于
@user2093601:By
6
我的意思是
7
;)请注意,在其内部调用
was_read()
可能会给您带来问题,因为每次发生这种情况时,您都会将函数调用堆积得更深。最好将例程包装为
,而为True:
循环,并在完成后将其中断。请注意,调用
was_read()
本身可能会给您带来问题,因为每次发生这种情况时,您都会将函数调用堆积得更深。最好将例程包装为
,而为True:
循环,并在完成后将其中断。