无法捕获 EOFError
Can't catch EOFError
我对这段代码的期望是,我输入了一些数字,然后当我输入字符串时,输出是 'Not Valid',但是当我在没有输入任何值的情况下按回车键时,输出是总和我们之前输入的数字。但是当我 运行 它在 VSCode 上时,每当我按回车时,结果总是 'Not Valid',并且无法跳出循环。
例如,我输入: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()
将return 为空字符串。将它转换为整数是无效的,所以你得到 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>", line 1, in <module>
EOFError
这里的^D
代表我在键盘上按Ctrl + D(不是 直接输入“^D”)。
我对这段代码的期望是,我输入了一些数字,然后当我输入字符串时,输出是 'Not Valid',但是当我在没有输入任何值的情况下按回车键时,输出是总和我们之前输入的数字。但是当我 运行 它在 VSCode 上时,每当我按回车时,结果总是 'Not Valid',并且无法跳出循环。
例如,我输入: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()
将return 为空字符串。将它转换为整数是无效的,所以你得到 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:
>>> input()
^DTraceback (most recent call last):
File "<stdin>", line 1, in <module>
EOFError
这里的^D
代表我在键盘上按Ctrl + D(不是 直接输入“^D”)。