Python求最大最小值程序:双位数被拆分为单个数字的问题求助
问题分析与修复方案
核心问题
你的代码出错的关键原因是错误地遍历了输入的字符串num,而非使用转换后的整数intnum:
- 当输入像"10"这样的多位数时,
num是字符串类型,for size in (num)会把它拆成单个字符'1'和'0',后续的大小比较都是基于字符的ASCII值,不是数字的实际数值。这就导致程序把'0'当成了最小值,把'6'当成了最大值。 - 其实你已经通过
int(num)得到了正确的整数intnum,但完全没用到这个数值去做比较逻辑。
修复后的代码
删掉多余的for循环,直接用转换好的intnum来更新最大值和最小值:
largest = None smallest = None while True: num = input("Enter a number: ") if num == "done": break try: intnum = int(num) except ValueError: print('Invalid') continue # 初始化最大值和最小值(仅第一次有效输入时执行) if largest is None: largest = intnum if smallest is None: smallest = intnum # 更新最大值 if intnum > largest: largest = intnum # 更新最小值 if intnum < smallest: smallest = intnum print("Maximum is", largest) print('Minimum is', smallest)
测试结果
输入1、3、10、2、6后,程序会正确输出:
Maximum is 10 Minimum is 1
内容的提问来源于stack exchange,提问作者S. M
相关产品推荐
相关产品推荐

