Python ValueError:程序中int()的文本无效,if语句位于Exception中
我有一个程序,它接受输入并将其添加到列表中,然后吐出所述列表的平均值。我想让您可以键入MENU,它将停止programy(),让您退出或重新启动programy()。在您键入菜单(全部大写)之前,一切正常。谢谢大家!:)对python来说仍然是新手Python ValueError:程序中int()的文本无效,if语句位于Exception中,python,int,literals,valueerror,except,Python,Int,Literals,Valueerror,Except,我有一个程序,它接受输入并将其添加到列表中,然后吐出所述列表的平均值。我想让您可以键入MENU,它将停止programy(),让您退出或重新启动programy()。在您键入菜单(全部大写)之前,一切正常。谢谢大家!:)对python来说仍然是新手 from functools import reduce def programy(): running = True print("I output the average of a list that you add file
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()
回溯(最近一次呼叫最后一次):
文件“C:\Users\hulb\OneDrive\Desktop\average\via_input.py”,第34行,在
编程()
文件“C:\Users\hulb\OneDrive\Desktop\average\via_input.py”,第24行,在programy中
追加(int(currentnum))
ValueError:基为10的int()的文本无效:“菜单”
将while
条件设置为false
,并停止下一次迭代的运行,但当前迭代尚未结束,因此在int(currentnum)
中,您正在尝试将“菜单”
转换为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),除非您希望它充当生成器。您正在检查currentnum是否为字符串,然后尝试将其作为整数添加到列表中。当您将running设置为False时,它仍将执行listy.append()。在我看来,你可以只做break而不是运行=false。如果你需要调试你的程序,有多个逻辑错误。例如:在try块中,执行所有本应正常工作的操作(在“list.append”和下一行提示)此外,与菜单相关的代码也应位于循环中。将
try:int(currentnum)添加到此处的注释中,除了ValueError:if str(currentnum)=“menu”:
是不正确的,因为您正在检查有效的传入整数值而不是字符串,if/else语句应该在try/except之外,并且您并不真正需要else:
,因为这就是try:。。。除非:…
如果不是整数值输入,则引发异常…希望这有帮助:)是的,谢谢!!我对try/except的概念有点模糊。错误就在那之前,事实上,if语句不应该在try/except的except
块中,if/else逻辑似乎有点不正确,因为它检查字符串输入,然后说else:print('nota number')
@FishingCode-Right,错误在上面,但处理完后,上面的内容将使他完成这项工作,只需要两行轮班。好的。你在哪里移动你在回答中写的句子。。?
listy.append(int(currentnum))
listy.append(int(currentnum))
listaverage(listy)