无法捕获 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”)。