Python循环程序优化问题:无效输入跳转与非数字输入防崩溃
问题解决方案
先给出修改后的完整可运行代码:
while True: # 处理第一个数字输入,直到输入有效 while True: try: n1 = float(input("Enter first number: ")) break except ValueError: print("请输入有效的数字!") # 处理第二个数字输入,直到输入有效 while True: try: n2 = float(input("Enter second number: ")) break except ValueError: print("请输入有效的数字!") tot = n1 + n2 print('total is', tot) # 处理重试输入,直到输入Y/N while True: n3 = input('Try Again? Y/N ') if n3.upper() == 'Y': break # 回到外层循环,重新计算 elif n3.upper() == 'N': print('Exiting...') exit() # 直接退出程序 else: print('Not a valid answer, please enter Y or N.')
针对问题1的处理逻辑
把"Try Again?"的输入环节单独套一层while True循环:
- 只有当用户输入Y或N时,才跳出这个内部循环
- 输入Y时,回到外层大循环重新开始数字计算
- 输入N时直接退出程序
- 其他无效输入会持续提示,直到用户输入符合要求的选项
针对问题2的处理逻辑
对每个数字输入使用try-except捕获ValueError异常:
- 将输入和类型转换代码放在
try块中,转换成功就跳出输入循环 - 如果输入无法转为浮点数,会触发
ValueError,此时打印提示并继续循环,直到用户输入有效的数字
内容的提问来源于stack exchange,提问作者Shredz
相关产品推荐
相关产品推荐

