不使用数组求输入最小值时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
相关产品推荐
相关产品推荐

