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

无法捕获EOFError

如何解决无法捕获EOFError

通过编写此代码,我期望输入一些数字,然后在输入字符串时输出为“无效”,但是当我按Enter键而不输入任何值时,输出就是数字的总和。我们之前输入。但是当我在VSCode上运行它时,每当我按Enter键时,结果始终为“无效”,并且无法退出循环。

例如,我输入:1 2 3 a z,然后我期望的输出是:Not valid Not valid 6

我不知道出什么问题了,两个月前我才学习python。

sum = 0
while True:
    try:
        sum += int(input())
    except ValueError:
        print('Not Valid')
    except EOFError:
        print(sum)
        break

解决方法

不输入任何内容时,input()将返回空字符串。将其转换为整数是无效的,因此您得到了ValueError

>>> input() # next line is empty because I just pressed Enter

'' # `input()` returned the empty string
>>> int('') # can't convert it to an integer
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
ValueError: invalid literal for int() with base 10: ''

要触发EOFError,请通过 Ctrl + D 发送EOF信号:

>>> input()
^DTraceback (most recent call last):
  File "<stdin>",in <module>
EOFError

这里的^D代表我按下键盘上的 Ctrl + D 不是实际键入“ ^ D”)。

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