You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python入门练习:如何正确实现重复输入整数并计算最大最小值?

Python入门练习:如何正确实现重复输入整数并计算最大最小值?

Hi Alistair,很高兴你能主动思考更优解,你的思路方向是对的,但确实有更通用、更符合题目设计意图的方法,不用依赖硬编码删除某个位置的元素~

先说说你现有代码里的几个小问题:

  • 你把所有输入(包括无效的字符串)都加入了列表,之后手动pop(2)是硬编码位置——如果无效输入出现在其他位置(比如第一个就输了"bob"),这个方法直接就失效了,完全不通用。
  • 另外注意:不要用list作为变量名,这会覆盖Python内置的list类型,容易引发奇怪的隐性问题,建议换成num_list这类有意义的名字。
  • 你在try块里把输入转成了float(num),但最后又把列表元素转成int,其实可以统一处理(比如都转成int,如果题目要求整数的话,或者保留float看需求)。

更合理的解法:只保留有效输入

核心思路是只把验证成功的数字加入有效列表,无效输入直接跳过(只打印提示,不加入列表),这样循环结束后,有效列表里全是合法的数字,直接计算最大最小值即可,完全不用事后清理无效项。

修正后的代码如下:

# 用有意义的变量名,避免覆盖内置类型
valid_numbers = []

while True:
    num_input = input("Enter a number: ")
    if num_input == "done":
        break
    try:
        # 如果题目要求整数就转int,允许小数的话可以用float
        num = int(num_input)
        # 只有验证成功的数字,才加入有效列表
        valid_numbers.append(num)
    except ValueError:
        # 精准捕获「无法转成数字」的异常,避免捕获其他意外错误
        print("Invalid input")

# 加入空列表判断,防止用户直接输入"done"导致报错
if valid_numbers:
    largest = max(valid_numbers)
    smallest = min(valid_numbers)
    print("Maximum", largest)
    print("Minimum", smallest)
else:
    print("No valid numbers were entered.")

进阶版:不用列表,实时跟踪最大最小值

如果不想维护一个列表,也可以在循环里直接更新最大最小值,每次得到有效数字就对比更新,适合处理大量输入的场景(虽然这个题目里差异不大,但也是一种更轻量化的思路):

largest = None
smallest = None

while True:
    num_input = input("Enter a number: ")
    if num_input == "done":
        break
    try:
        num = int(num_input)
        # 初始化或更新最大值
        if largest is None or num > largest:
            largest = num
        # 初始化或更新最小值
        if smallest is None or num < smallest:
            smallest = num
    except ValueError:
        print("Invalid input")

if largest is not None and smallest is not None:
    print("Maximum", largest)
    print("Minimum", smallest)
else:
    print("No valid numbers were entered.")

这两种方法都比硬编码pop要更合理,也完全贴合题目考察try-except异常处理的初衷~

备注:内容来源于stack exchange,提问作者Alistair Prosser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:53:05