微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么这个基本的 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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。