ValueError:在我的程序中 int() 和 if 语句中的文字无效,例外



我有一个程序,它接受输入并将其添加到列表中并吐出所述列表的平均值。我想这样做,以便您可以键入 MENU,它将停止 programy(( 并让您退出或重新启动 programy((。一切正常,直到您键入 MENU(全部大写(。谢谢大家!:)对python来说仍然是新手。

from functools import reduce
def programy():
running = True
print("I output the average of a list that you add files to.")
listy = []
while running == True:
def listaverage(givenlist):
print(sum(listy) / len(listy))
currentnum = input("Please type a number to add to the list: ")
try:
val = int(currentnum)
except ValueError:
if str(currentnum) == "MENU":
running = False
else:
print("Not a number!")
continue
listy.append(int(currentnum))
listaverage(listy)
answer = input("Please type either: EXIT or RESTART")
if str(answer) == "RESTART":
running = True
if answer == "EXIT":
exit
programy()
Traceback (most recent call last):
File "C:UsershullbOneDriveDesktopaverage_via_input.py", line 34, in <module>
programy()
File "C:UsershullbOneDriveDesktopaverage_via_input.py", line 24, in programy
listy.append(int(currentnum))
ValueError: invalid literal for int() with base 10: 'MENU
if str(currentnum) == "MENU":
running = False

while条件设置为false并停止运行下一个迭代,但当前迭代尚未结束,因此在int(currentnum)中,您尝试将"MENU"转换为 int。

请改用isdigit()来检查值

if currentnum.isdigit():
listy.append(int(currentnum))
listaverage(listy)
else:
if str(currentnum) == "MENU":
running = False
else:
print("Not a number!")

错误很简单,你把一个字符串作为输入, 说是否退出循环,即菜单,并在行中

listy.append(int(currentnum))

您正在将其类型转换为整数。这就是您收到上述错误的原因。 无需更改太多代码,您只需移动几行即可完成。 只需移动

listy.append(int(currentnum))
listaverage(listy)

在 try 块下,如果它是一个数字,您可以根据需要执行。 还要在主程序之外定义函数 listaverage(listy(,除非你想让它充当生成器。

最新更新