为什么这个基本的 if-else 表达式会失败?

Why is this basic if-else expression failing?

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

带有输入的示例输出:10 在高中

这是我目前所拥有的: 如果我 post 对此有误,我深表歉意。

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

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

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

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

预期输出: 不在高中

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

if  9 <= user_grade <= 12:

因为现在您正在检查:

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

如果您输入 13,那么第一个检查将是 True。但由于第二次检查仅比较 9 和 12,因此它始终为真。因此,您永远不会测试 user_input 是否小于或等于 12.

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

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

比较的顺序很重要。 user_grade >= 9 <= 12 表示 user grade is inferior or equals to 9 AND 9 is inferior or equals to 12.

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

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

zybooks 问题的答案是:

8 < user_grade < 13