【问题标题】:when is an 'if' statement code incorrect even after giving an output?即使给出输出,“if”语句代码何时不正确?
【发布时间】:2018-08-29 23:36:34
【问题描述】:

我对编程完全陌生,我现在正在通过 edX 学习,我遇到了这段代码,但我真的不知道为什么代码被称为不正确,即使它给出了输出。本来会在 edx 平台上问的,但该课程两年前就完成了,只是从存档的内容中学习。谢谢。

结果是 'i win' 和 'tie' 它有一个输出,为什么它仍然不正确?

comp = 'rock'
user = 'rock'

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

非常感谢您对我的问题的答复,但如需进一步说明,请在此处查看此代码: comp == '摇滚' 用户 == '摇滚'

if comp == 'paper' and user == 'paper':
    print('tie')
elif comp == 'rock':
    if user == 'scissors':
        print ('I win')
    else:
        print ('You win')
else:
    print ('tie')

对于“摇滚”用户,它会从第二个测试 (elif) 中打印“你赢”,但据说输出不正确,但如果用户 == '剪刀',它会打印“我赢”,据说是正确的。我关心的是为什么,使第二个 elif 下的 if 正确而同一 elif 下的 else 不正确的区别是什么?

【问题讨论】:

  • if 不是 elif
  • “我真的不知道为什么代码被称为不正确,即使它给出了输出”——我们不会仅仅因为它给出了输出就称代码正确。
  • @user2357112 这没用
  • 如果 comp == 'rock' 为真,则打印。然后程序继续并检查 user =='paper' 是否失败,所以转到 else 并打印你赢了。如果将 if user =='paper' 更改为 elif,则如果上述 if 语句为真,则不会运行。查找 Python 控制流en.wikibooks.org/wiki/Python_Programming/Control_Flow
  • @user2357112 我已经意识到这就是为什么我想知道为什么这个代码被称为不正确的原因。

标签: python if-statement


【解决方案1】:

当您使用 if 语句时,您不是在询问某事是否正确,而是询问某事是真假。这称为布尔运算符,根据它是真还是假,会导致 if 语句执行或不执行。

您之所以得到答案,是因为您使用了两个 if 语句,而不是一个 elif 语句。我在下面为你重构了它:

comp = 'rock'
user = 'rock'

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

更多阅读可以在这里找到:https://www.programiz.com/python-programming/if-elif-else

【讨论】:

    【解决方案2】:

    那么 if 语句会发生什么。 如果您的代码遇到if 语句,它将查看条件并根据条件执行它,接下来会发生什么,当第一个if 语句没有被执行时,它会查看是否有任何后续@ 987654323@s,或elses。 在所有ifelifs 和else 中,只有一个会被执行。把它想象成一个大块,从if 开始,以else 结束。 如果有另一个if 语句,无论前面的if 是否被执行,您的代码都会再次查看它,因为您的代码会认为它是另一组条件。

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

    我在您的代码中添加了一些 cmets 以使其更直观:

    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.'
    

    将第二个if 替换为elif 将解决问题。

    【讨论】:

      【解决方案3】:

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

      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 语句。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2022-06-15
        • 2021-04-22
        • 2020-11-01
        • 1970-01-01
        相关资源
        最近更新 更多