如何解决无法捕获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 举报,一经查实,本站将立刻删除。