Python求输入整数最值程序问题求助:无法识别无效输入及计算最值
问题分析与代码修正
现有代码的核心问题
- 硬编码循环次数(
for i in range(2,10)),不符合"直到输入'done'才停止"的需求 - 未处理非数字输入的异常,直接执行
int()转换会触发报错崩溃 - 后段的while循环仅接收输入,未执行数字转换、最大最小值的计算逻辑
- 使用Python内置类型名
list作为变量名,会覆盖内置功能,属于不良编码习惯
修正后的代码
largest = None smallest = None while True: num_input = input("Enter a number: ") if num_input == "done": break try: num = int(num_input) except ValueError: print("Invalid input") continue # 初始化或更新最大值 if largest is None or num > largest: largest = num # 初始化或更新最小值 if smallest is None or num < smallest: smallest = num print(f"Maximum is {largest}") print(f"Minimum is {smallest}")
关键逻辑说明
- 循环控制:用
while True实现无限循环,直到用户输入'done'时触发break退出 - 异常处理:通过
try/except ValueError捕获非数字输入,打印提示后用continue跳过后续逻辑 - 最大最小值更新:
- 首次输入有效数字时,
largest和smallest为None,直接赋值 - 后续输入时,与当前存储的最大/最小值比较,更新为更大/更小的数值
- 首次输入有效数字时,
- 输出格式:使用f-string格式化输出,匹配预期的结果样式
测试输入7、2、bob、10、4时,输出与预期完全一致:
Invalid input
Maximum is 10
Minimum is 2
内容的提问来源于stack exchange,提问作者Joe Rai
相关产品推荐
相关产品推荐

