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

问题描述 投票:0回答:5

这是我在该网站上的第一篇文章。我已经进入编码课的第三周了,除了这个问题之外,我已经完成了所有的事情。我们正在使用 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。然后我收到此错误:

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

特殊人物传说 你的输出: 在高中

预期输出: 还没上高中

python if-statement chaining
5个回答
3
投票

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

if  9 <= user_grade <= 12:

因为现在你正在检查:

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

如果您输入

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


0
投票

你的情况是错误的。你应该使用:

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


0
投票

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

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

0
投票

这个答案在 Zybooks 中有效: 用户等级 = int(输入())

如果9<= user_grade and user_grade <= 12: print('in high school') else: print('not in high school')

书中的注释给出了答案的提示。


-1
投票

zybooks问题的答案是:

8 < user_grade < 13
© www.soinside.com 2019 - 2024. All rights reserved.