获取用户输入最大值与最小值结果异常,请求代码排查
代码错误分析与修正
错误点说明
使用字符串而非整数做数值比较
你代码里直接拿输入的字符串num和largest、smallest对比,但字符串比较是按字符ASCII码来的,不是数值大小。比如输入"10"和"2","10" < "2"会返回True,这显然和实际数值大小逻辑相反,导致最值判断完全错误。必须用转换后的整数ival来做比较。continue语句导致最小值逻辑被跳过
处理最大值的分支里,当largest初始为None时,赋值后直接continue,直接进入下一轮循环,后面处理最小值的代码根本没机会执行。第一次输入的数字永远不会被赋值给smallest,后续输入也可能因为这个逻辑跳过最小值判断,最终smallest要么是None,要么得到错误结果。
修正后的代码
largest = None smallest = None while True: num = input("Enter a number: ") if num == "done": break try: ival = int(num) except: print("Invalid input") continue # 更新最大值 if largest is None: largest = ival elif ival > largest: largest = ival # 更新最小值(移除continue,确保每次都执行) if smallest is None: smallest = ival elif ival < smallest: smallest = ival print("Maximum is", largest) print("Minimum is", smallest)
内容的提问来源于stack exchange,提问作者Julie Huynh
相关产品推荐
相关产品推荐

