Python中无需字符串解析,能否获取触发ValueError的输入值以拦截空输入?
不解析错误信息获取触发ValueError的输入值
直接解析ValueError的错误信息不仅麻烦,还容易因为错误信息格式变化出问题。最可靠的方法是先保存原始输入内容,再尝试转换为整数,这样在触发异常时可以直接拿到原始输入值。
修改后的代码示例:
while True: try: # 先保存每个输入的原始内容 start_input = input("Starting number: ") start = int(start_input) fin_input = input("Ending number: ") fin = int(fin_input) amount_input = input("Count by: ") amount = int(amount_input) except ValueError: # 检查是否有输入为空字符串,是则退出循环 if not start_input or not fin_input or not amount_input: print("检测到空输入,退出程序") break # 其他无效输入的情况,提示后重启 print("输入不是有效整数,重新开始...") else: # 所有输入都转换成功,退出循环 break
逻辑说明:
- 每个输入步骤都先把用户输入的原始字符串存到变量(比如
start_input),再调用int()转换。 - 触发
ValueError时,直接检查这些原始输入变量是否为空字符串(not 字符串会在字符串为空时返回True)。 - 只要有一个输入为空,就执行退出逻辑;否则提示错误并重新开始循环。
这种方法完全不需要依赖错误信息的格式,逻辑清晰且兼容性更强,不会因为Python版本或环境差异导致解析错误信息失败。
内容的提问来源于stack exchange,提问作者pippo1980
相关产品推荐
相关产品推荐

