我完全是编程新手,我现在正在通过edX学习,我遇到了这段代码,但我真的不知道为什么这段代码被称为不正确,即使它给出了输出。会在edx平台上询问,但课程在两年前就结束了,只是从归档中学习。谢谢。
结果是‘我赢了’和‘平局’,它有一个输出,为什么它仍然是不正确的?
comp = 'rock'
user = 'rock'
if comp == 'rock':
print 'I win *_*!'
if user == 'paper':
print 'You win.'
else:
print 'Tie.'
非常感谢您对我的问题的回复,但要进一步澄清,请查看此处的代码: comp == 'rock‘user == 'rock’
if comp == 'paper' and user == 'paper':
print('tie')
elif comp == 'rock':
if user == 'scissors':
print ('I win')
else:
print ('You win')
else:
print ('tie')
对于用户是'rock',它将打印来自第二个测试(elif)的'you win‘,但据说输出是不正确的,但如果用户是’==‘,它将打印'I win’,这被认为是正确的。我关心的是为什么,是什么区别使得第二个elif下的if是正确的,而同一elif下的else是不正确的?
发布于 2018-08-30 07:42:05
所以if语句发生的事情是这样的。如果您的代码命中if
语句,它将查看条件并根据条件执行它,当第一个if
语句没有执行时,接下来会发生什么,它会查看是否有任何后续的elif
或else
。在所有的if
、elif
和else
中,只有一个将被执行。可以把它想象成一大块,从if
开始,到else
结束。如果有另一条if
语句,您的代码将再次查看它,而不管上一条if
是否正在执行,因为您的代码会认为它是另一个条件块。
因此,在您的代码中,即使您的输入属于第一个if
语句,它仍然会查看第二个if
并检查条件。
为了让代码更直观,我在代码中添加了一些注释:
comp = 'rock'
user = 'rock'
# a code block that needs to be looked at
if comp == 'rock':
print 'I win *_*!'
# another code block that still has to be checked since it's starting with another if statement
if user == 'paper':
print 'You win.'
else:
print 'Tie.'
用elif
替换第二个if
可以解决这个问题。
发布于 2018-08-30 08:47:36
您的代码将正常工作,但需要进行一些语法更正:
comp = 'rock'
user = 'rock'
if comp == 'rock':
print('I win *_*!')
elif user == 'paper':
print('You win.')
else:
print('Tie.')
我在这里所做的就是将第二个if
更改为elif
,并用括号将print
语句输出括起来。在Python中,'else if‘写成'elif’。您可以拥有任意数量的elif
语句。
https://stackoverflow.com/questions/52087398
复制相似问题