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

不使用数组求输入最小值时smallest变量应如何初始化

问题根源

你遇到的问题核心是给最小值变量设置了固定初始值,只要所有用户输入的数值都大于这个初始值,输入的数值就永远无法覆盖初始值,最终输出错误的初始固定值。

通用解决方案

方案1:初始化为正无穷(简洁方案)

Python中可以用float('inf')表示正无穷,所有整数、浮点数都小于这个值,只要用户输入了有效数值,第一次就会替换掉初始值,不受输入数值范围限制。如果后续需要写求最大值的同类逻辑,对应初始值设为负无穷float('-inf')即可。

修改后的代码如下:

# 初始值设为正无穷
smallest = float('inf')

while True:
    num = input("Enter a number: ")
    
    if num == "done":
        break

    current_num = int(num)
    if current_num < smallest:
        smallest = current_num
        
print("Minimum is", smallest)

这个方案的适用场景是可以确认用户至少会输入一个有效数值,若用户直接输入done,最终会输出inf,属于逻辑可接受范围。

方案2:初始化为None(健壮兼容方案)

如果需要兼容用户不输入任何数值直接结束的场景,可以用None作为未初始化的标记,第一次输入有效数值时再给最小值变量赋值,同时可以自定义无输入时的提示。

修改后的代码如下:

# 初始值设为None标记未初始化
smallest = None

while True:
    num = input("Enter a number: ")
    
    if num == "done":
        break
    
    current_num = int(num)
    # 第一次输入有效数值直接赋值
    if smallest is None:
        smallest = current_num
    else:
        if current_num < smallest:
            smallest = current_num

if smallest is None:
    print("未检测到有效输入的数值")
else:
    print("Minimum is", smallest)

内容的提问来源于stack exchange,提问作者Anon2002

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:05