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

问题描述

这是我在网站上的第一篇文章。我正在上第三周的编码课,除了这个问题,我已经完成了所有的工作。我们正在使用 ZyBooks。除了这个参与练习,我已经完成了所有的事情。它没有分级;然而,它让我发疯。 如果 user_grade 的值在 9 到 12 之间(包括 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。然后我收到这个错误

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

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

预期输出: 不是高中

解决方法

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

if  9 <= user_grade <= 12:

因为现在您正在检查:

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

如果您输入 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

,

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

 all_tr = html.xpath("//tr")

 for tr in all_tr: 

     # relative xpath in `tr` (using `.` at start)
     header = tr.xpath('.//td[@headers="Times"')

     if "7:30" in header[0].text: 

         # relative xpath in `tr` (using `.` at start)
         avaliable = tr.xpath('.//td[@headers="Avaliable"]')

         avaliable[0].click()