【问题标题】:Why is this basic if-else expression failing?为什么这个基本的 if-else 表达式会失败?
【发布时间】:2021-01-24 00:53:20
【问题描述】:

这是我在网站上的第一篇文章。我在第三周的编码课上,除了这个问题,我已经完成了所有的事情。我们正在使用 ZyBooks。我已经完成了除了这个参与练习之外的所有事情。它没有分级;然而,它让我发疯。 如果 user_grade 的值介于 9 和 12(含)之间,我们被要求编写一个将打印“in high school”的表达式。

输入样本输出:10 高中的时候

这是我目前所拥有的: 如果我发错了,我深表歉意。

user_grade = int(input())
if user_grade >= 9 <= 12:
    print('in high school')
else:
    print('not in high school')

代码通过所有测试,直到它运行输入:13。然后我收到此错误:

输出不同。请参阅下面的重点。

特殊字符图例 你的输出: 高中的时候

预期输出: 高中没有

【问题讨论】:

  • 请重新访问有关多部分比较的文档。 Stack Overflow 无意取代现有的教程和文档。

标签: python if-statement chaining


【解决方案1】:

我认为您在 if 中的操作顺序略有错误。你的意思是:

if  9 <= user_grade <= 12:

因为你现在正在检查:

  • 小于或等于 user_grade 9 和
  • 小于等于 12 的 9

如果您输入13,那么第一个检查将是True。但由于第二次检查只比较 9 和 12,所以它总是正确的。因此,您永远不会测试 user_input 是否小于或等于 12。

【讨论】:

  • 我不认为是这样,因为如果你尝试 8,它会正确返回 False。我认为您的修复肯定是正确的,但我认为您的解释在 python 操作的顺序上是不正确的。
  • 在这种情况下,您所说的操作顺序是什么意思?
  • 第一个检查是看user_input是否
  • 哦,你是对的,我在解释中弄乱了顺序。我会尽力澄清这一点
  • 我认为您的“第二次检查”实际上并不正确,因为上面使用了运算符链接,因此将中间值与其他两个值进行比较
【解决方案2】:

你的条件不对。你应该使用:

if 9 <= user_grade <= 12:
    print('in high school')

比较的顺序很重要。 user_grade &gt;= 9 &lt;= 12 表示user grade is inferior or equals to 9 AND 9 is inferior or equals to 12

【讨论】:

    【解决方案3】:

    猜测它应该更具可读性,如下所示:

    def user_grade (input):
        if input >= 9 and input <= 12:
            print('in high school')
        else:
            print('not in high school')
        
    user_grade(13)
    

    【讨论】:

      【解决方案4】:

      zybooks问题的答案是:

      8 < user_grade < 13
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-01
        • 2018-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-10
        • 1970-01-01
        相关资源
        最近更新 更多