Python:如何终止异常循环的while语句?程序调试求助
问题修复方案
核心问题:排序选项循环无法终止
你的循环条件逻辑完全错误:
while order!=("ascending") or order!=("descending") or order!=("none"):
不管输入哪个合法选项,这个条件永远为True。比如输入ascending时,order!="descending"和order!="none"都是True,or逻辑只要有一个为真整体就为真,循环根本停不下来。
正确写法应该直接检查输入是否在合法列表内,简洁且逻辑正确:
while order not in ["ascending", "descending", "none"]:
其他问题修复
- 数字输入验证逻辑错误
原代码里all(ele.isdigit() for ele in partA)会把空格当成元素判断,导致输入"1 2 3"这种正常格式时直接报错。应该先分割字符串,再检查每个元素是否为数字,同时原代码的try-except用法错误(这里没有异常抛出,纯逻辑判断用if就行):
while True: partA = input("Please insert a list of numbers separated by a space ") if not partA.strip(): print("Error, please input numbers ") continue num_str_list = partA.split() if all(ele.isdigit() for ele in num_str_list): partB = [int(num) for num in num_str_list] break else: print("Error, please try again")
- 排序选项循环内冗余代码
修复循环条件后,内部的if-else和break可以简化,循环会自动在输入合法时终止,不需要额外判断。
完整修复代码
# 处理数字输入 while True: partA = input("Please insert a list of numbers separated by a space ") # 检查输入是否为空 if not partA.strip(): print("Error, please input numbers ") continue num_str_list = partA.split() # 检查每个元素是否都是数字 if all(ele.isdigit() for ele in num_str_list): partB = [int(num) for num in num_str_list] break else: print("Error, please try again") # 处理排序选项 order = "" valid_orders = ["ascending", "descending", "none"] while order not in valid_orders: order = input("What order would you like your numbers in? ascending, descending, or none? \n").strip() if order not in valid_orders: print("Error, please try again") # 执行排序并输出 if order == "ascending": partB.sort() print(partB) elif order == "descending": partB.sort(reverse=True) print(partB) else: # none print(partB)
内容的提问来源于stack exchange,提问作者Nolan
相关产品推荐
相关产品推荐

