V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
SorRines
V2EX  ›  Python

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

  •  
  •   SorRines · 2020-03-15 13:37:22 +08:00 · 2495 次点击
    这是一个创建于 1749 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 项 ('输入错误')也会触发?
    14 条回复    2020-03-21 21:04:30 +08:00
    blueset
        1
    blueset  
       2020-03-15 13:42:27 +08:00
    把代码放进这里逐步跑一下就知道了。

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

    (老年人的九宫格输入法…)
    SorRines
        10
    SorRines  
    OP
       2020-03-15 13:51:45 +08:00
    明白 感谢各位 不逐一回复各位了 哈哈
    humor66
        11
    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
        12
    zhangyangkam1  
       2020-03-15 13:55:19 +08:00
    语法错了。。。
    因为不满足 60 > score >= 0 所以进入 else
    wuwukai007
        13
    wuwukai007  
       2020-03-15 14:05:35 +08:00
    打个断点,else 只跟上一个 if
    nightan
        14
    nightan  
       2020-03-21 21:04:30 +08:00 via Android
    判断多个条件是——
    if…
    elif…
    elif…
    else
    而你的写法
    else 匹配之前的 if

    也就是说
    if 60 > score >= 0 :
    print('D')
    else :
    print('输入错误')
    这几行构成了一个逻辑
    因为 60 不满足 60 > score >= 0 这个条件
    所以触发了 else 后的代码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1948 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:50 · PVG 08:50 · LAX 16:50 · JFK 19:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.