报错Execution failed. ValueError: invalid literal for int() with base 10的含义是什么?
搞定这个ValueError报错:invalid literal for int() with base 10
嘿,这个报错其实很好理解,我给你掰扯清楚:
报错到底啥意思?
ValueError: invalid literal for int() with base 10 翻译过来就是:你让int()函数去转换一个字符串,但这个字符串根本不是十进制整数的合法格式!
举个例子,int("123")完全没问题,但如果你给它"abc"、"12.3"、甚至是空字符串(直接按回车),int()就懵了——这玩意儿没法转成整数啊,于是就抛出这个错误。
你的代码为啥会触发这个错误?
看你写的这段代码:
L=input("\n") N=input("\n") for i in range(int(N)): W=input() H=input() if int(W)<int(L) or int(H)<int(L): print("UPLOAD ANOTHER\n") elif int(W)>=int(L) and int(H)>=int(L): if int(W)==int(H): print("ACCEPTED\n") else: print("CROP IT\n")
这里所有input()获取到的内容都是字符串,你直接丢给int()转换,但只要用户输入的不是纯数字(比如打错字输了字母、不小心带了空格、输入小数),就会触发这个报错。比如用户输入"100x"当宽度,int("100x")肯定要报错。
怎么修复?
给你两种靠谱的解决办法:
办法1:先验证输入再转换
写个小函数,确保用户输入的是整数才继续,不然一直提示重试:
def get_valid_integer(prompt): while True: user_input = input(prompt).strip() # 先去掉前后空格 if user_input.isdigit(): # 检查是不是纯数字字符串 return int(user_input) print("哎呀,输入不对!请输入一个整数~") # 用这个函数获取所有输入 L = get_valid_integer("\n请输入最小尺寸L:") N = get_valid_integer("\n请输入要处理的图片数量N:") for i in range(N): W = get_valid_integer("请输入图片宽度:") H = get_valid_integer("请输入图片高度:") # 后面的逻辑不变 if W < L or H < L: print("UPLOAD ANOTHER\n") elif W >= L and H >= L: if W == H: print("ACCEPTED\n") else: print("CROP IT\n")
办法2:用异常捕获处理错误
如果不想让用户一直重试,也可以用try-except捕获错误,直接提示输入无效:
try: # 先把所有输入转成整数,顺便去掉空格 L = int(input("\n").strip()) N = int(input("\n").strip()) for i in range(N): W = int(input().strip()) H = int(input().strip()) # 原逻辑保留 if W < L or H < L: print("UPLOAD ANOTHER\n") elif W >= L and H >= L: if W == H: print("ACCEPTED\n") else: print("CROP IT\n") except ValueError: print("输入无效!请确保所有输入都是整数哦~")
这样就能完美避开这个报错啦!
内容的提问来源于stack exchange,提问作者debashish debnath
相关产品推荐
相关产品推荐

