首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么时候“if”语句代码不正确,即使在给出输出后也是如此?

什么时候“if”语句代码不正确,即使在给出输出后也是如此?
EN

Stack Overflow用户
提问于 2018-08-30 07:36:35
回答 2查看 74关注 0票数 0

我完全是编程新手,我现在正在通过edX学习,我遇到了这段代码,但我真的不知道为什么这段代码被称为不正确,即使它给出了输出。会在edx平台上询问,但课程在两年前就结束了,只是从归档中学习。谢谢。

结果是‘我赢了’和‘平局’,它有一个输出,为什么它仍然是不正确的?

代码语言:javascript
复制
comp = 'rock'
user = 'rock'

if comp == 'rock':
    print 'I win *_*!'
if user == 'paper':
    print 'You win.'
else:
    print 'Tie.'

非常感谢您对我的问题的回复,但要进一步澄清,请查看此处的代码: comp == 'rock‘user == 'rock’

代码语言:javascript
复制
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是不正确的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-30 07:42:05

所以if语句发生的事情是这样的。如果您的代码命中if语句,它将查看条件并根据条件执行它,当第一个if语句没有执行时,接下来会发生什么,它会查看是否有任何后续的elifelse。在所有的ifelifelse中,只有一个将被执行。可以把它想象成一大块,从if开始,到else结束。如果有另一条if语句,您的代码将再次查看它,而不管上一条if是否正在执行,因为您的代码会认为它是另一个条件块。

因此,在您的代码中,即使您的输入属于第一个if语句,它仍然会查看第二个if并检查条件。

为了让代码更直观,我在代码中添加了一些注释:

代码语言:javascript
复制
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可以解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2018-08-30 08:47:36

您的代码将正常工作,但需要进行一些语法更正:

代码语言:javascript
复制
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语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52087398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档