Python作业求助:不使用列表或无穷大实现整数最值求解
问题分析与修正方案
原代码存在的问题
- 错误使用Python内置的
min、max函数作为比较基准,且min_value、max_value未初始化,运行时会直接抛出NameError。 - 循环内用
elif逻辑限制了更新条件,同一轮循环中只能更新最小值或最大值中的一个,且完全没处理初始值的赋值问题。 - 没有利用第一个输入的整数初始化最值,不符合“不能使用无穷大”的作业要求。
修正后的代码
int_num = int(input("How many integers would you like to enter? ")) print("Please enter", int_num, "integers.") # 用第一个输入的数初始化最值,规避无穷大的使用 first_num = int(input()) min_value = first_num max_value = first_num # 循环处理剩余的整数 for _ in range(int_num - 1): current_num = int(input()) if current_num < min_value: min_value = current_num if current_num > max_value: max_value = current_num print("min:", min_value) print("max:", max_value)
关键改动说明
- 初始值赋值:先获取第一个输入的整数,用它同时初始化最小值和最大值,完全符合作业“不能使用无穷大”的限制。
- 循环逻辑调整:循环次数改为
int_num - 1(已提前获取第一个数),用两个独立的if判断分别更新最值,避免出现判断互斥导致的更新遗漏。 - 变量命名优化:将循环内的输入变量改为
current_num,更清晰地表示当前处理的数值,避免命名混淆。
内容的提问来源于stack exchange,提问作者stickseason
相关产品推荐
相关产品推荐

