ValueError: invalid literal for int() in my program and if statement inside a except
ValueError: invalid literal for int() in my program and if statement inside a except
我有一个程序可以接收输入并将其添加到列表中,然后输出所述列表的平均值。我想这样做,这样你就可以键入 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:\Users\hullb\OneDrive\Desktop\average_via_input.py", line 34, in <module>
programy()
File "C:\Users\hullb\OneDrive\Desktop\average_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!")
错误很简单,您将字符串作为输入,
说是否退出循环,即 MENU,并在
行
listy.append(int(currentnum))
您正在将其类型转换为整数。这就是您收到上述错误的原因。
无需更改太多代码,您只需移动几行即可完成。
就动
listy.append(int(currentnum))
listaverage(listy)
在 try 块下,如果它是一个数字,则按要求执行。
还要在主程序之外定义函数 listaverage(listy),除非你希望它充当生成器。
我有一个程序可以接收输入并将其添加到列表中,然后输出所述列表的平均值。我想这样做,这样你就可以键入 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:\Users\hullb\OneDrive\Desktop\average_via_input.py", line 34, in <module>
programy()
File "C:\Users\hullb\OneDrive\Desktop\average_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!")
错误很简单,您将字符串作为输入, 说是否退出循环,即 MENU,并在
行listy.append(int(currentnum))
您正在将其类型转换为整数。这就是您收到上述错误的原因。 无需更改太多代码,您只需移动几行即可完成。 就动
listy.append(int(currentnum))
listaverage(listy)
在 try 块下,如果它是一个数字,则按要求执行。 还要在主程序之外定义函数 listaverage(listy),除非你希望它充当生成器。