自学 Python 小白求遇到不懂 求指教

2020-03-15 13:37:22 +08:00
 SorRines
score = int(input('请输入分数'))
if 100 >= score >= 90 :
print('A')
if 90 > score >= 80 :
print('B')
if 80 > score >= 60 :
print('C')
if 60 > score >= 0 :
print('D')
else :
print('输入错误')

为什么这个我输入 60,触发了 if 80 > score >= 60 :
print('C') 打印了 C 后,下面的 else 项 ('输入错误')也会触发?
2322 次点击
所在节点    Python
14 条回复
blueset
2020-03-15 13:42:27 +08:00
把代码放进这里逐步跑一下就知道了。

http://pythontutor.com/visualize.html
ClericPy
2020-03-15 13:44:19 +08:00
第二个 if 开始都改成 elif
czhfrank
2020-03-15 13:45:47 +08:00
从第二个 if 开始都要换 elif
SorRines
2020-03-15 13:46:46 +08:00
我知道正确答案要改成 elif 但是我想弄明白为什么我最后的 else 会触发
crella
2020-03-15 13:47:55 +08:00
我有个同事在 pyq 晒学 python,我也不知道为什么她也是犯了类似的错误,就是把 if elif else 嵌套 打成了多个 if 并列。runoob 上没有这种教法啊
42alex
2020-03-15 13:48:08 +08:00
因为最后一个 else 只对应上一个 if…跟前面的 if 没关系了
czhfrank
2020-03-15 13:48:53 +08:00
@SorRines 每个 if 都是独立的判断语录,所以最后一个 else 是跟随最后一个 if 组成完整语录的。整个程序每个独立判断语录都会按顺序运行
ssqjh
2020-03-15 13:49:32 +08:00
@SorRines 这...因为 60 不满足最后一个 if,肯定走 else 了呀
czhfrank
2020-03-15 13:49:56 +08:00
@czhfrank 语句*

(老年人的九宫格输入法…)
SorRines
2020-03-15 13:51:45 +08:00
明白 感谢各位 不逐一回复各位了 哈哈
humor66
2020-03-15 13:53:18 +08:00
if 100 >= score >= 90 :
print('A')

if 90 > score >= 80 :
print('B')

if 80 > score >= 60 :
print('C')

if 60 > score >= 0 :
print('D')
else :
print('输入错误')

这几个 if 是独立的,每个 if 都会去判断
zhangyangkam1
2020-03-15 13:55:19 +08:00
语法错了。。。
因为不满足 60 > score >= 0 所以进入 else
wuwukai007
2020-03-15 14:05:35 +08:00
打个断点,else 只跟上一个 if
nightan
2020-03-21 21:04:30 +08:00
判断多个条件是——
if…
elif…
elif…
else
而你的写法
else 匹配之前的 if

也就是说
if 60 > score >= 0 :
print('D')
else :
print('输入错误')
这几行构成了一个逻辑
因为 60 不满足 60 > score >= 0 这个条件
所以触发了 else 后的代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652963

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX