我正在编写一个 python 程序,旨在读取用户输入以进行菜单遍历。每次我运行它时,都会得到 ValueError: invalidliteral for int() with base 10。相关代码如下
initialMenuSelection = 1
while initialMenuSelection != 0:
#Initial Menu
print("0: Quit")
print("1: Add Pokemon")
print("2: Set Weather")
print("3: Add/Remove Screens")
print("4: Calculate Damage")
initialMenuSelection = int(input())
我知道每当您尝试传递包含非整数字符或浮点数的字符串时都会发生错误,但错误甚至在到达用户输入之前就被返回。更奇怪的是,正如我所说,这种情况只在我运行它时才会发生。有谁知道为什么会这样?任何帮助,将不胜感激!我正在使用 Visual Studio Code,如果这有帮助的话。
编辑:我被告知要包含一个最小的可重现示例。就是下面这个
initialMenuSelection = 1
while initialMenuSelection != 0:
#Initial Menu
print("0: Quit")
print("1: Add Pokemon")
print("2: Set Weather")
print("3: Add/Remove Screens")
print("4: Calculate Damage")
initialMenuSelection = int(input())
完整的回溯错误是:
Traceback (most recent call last):
File "c:\Users\light\OneDrive\Desktop\minrepex.py", line 11, in <module>
initialMenuSelection = int(input())
^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: '& C:/Users/light/AppData/Local/Microsoft/WindowsApps/python3.11.exe c:/Users/light/OneDrive/Desktop/minrepex.py'
错误消息意味着提供给
int
的字符串无法解析为整数。最后的部分,在 :
之后,显示了提供的字符串。
在问题中描述的情况下,输入是一个空字符串,写为
''
。
这里是另一个例子 - 表示浮点值的字符串不能直接用
int
转换:
>>> int('55063.000000')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '55063.000000'
首先转换为
float
:
>>> int(float('55063.000000'))
55063
另外,我可以成功运行您使用 python 3.10.6 和 Visual Studio Code 提供的上面的代码