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

编写Python数字输入求最值程序遇问题,请求排查错误

你的Python程序存在以下错误:
  • 函数内变量命名冲突+极值未初始化
    maximum()和minimum()函数里,你用函数名当极值变量(比如maximum = n),这会直接和函数名冲突,程序跑不起来。而且你没给极值变量设初始值,比如找最大值得先把初始值设成列表里第一个元素,或者负无穷,不然第一次比较时变量都没定义。
    改完的例子:

    def maximum():
        if not numbers:
            print("没输入任何数字")
            return
        max_val = numbers[0]
        for num in numbers:
            if num > max_val:
                max_val = num
        print("Maximum is: ", max_val)
    
  • while循环里的continue放错位置了
    try-except之后直接写continue,会导致后面的numbers.append(n)和break完全执行不到——也就是说你永远没法往列表里加数字,也没法输入'done'退出循环。应该把continue放到except块里,只有输入无效数字(不是'done')的时候才跳过后续步骤。

  • 存进列表的是字符串不是数字
    你把输入的原字符串n加到列表里,但明明已经转成了浮点型的fval。存字符串的话,后续比较大小会出问题(比如字符串"100"比"2"小),得改成numbers.append(fval)。

  • 输入'done'会被当成无效输入
    用户输入'done'时,float(n)会报错,程序会打印"Invalid input",但'done'是合法的终止指令,不该被判定为无效。得在try之前先判断输入是不是'done',是的话直接退出循环;或者在except里判断如果是'done'就不报错。
    改完的循环逻辑例子:

    while True:
        n = input('Enter a number: ')
        if n == 'done':
            break
        try:
            fval = float(n)
            numbers.append(fval)
        except:
            print("Invalid input")
    
  • 循环终止逻辑冗余且无效
    你既用了while n != 'done'当循环条件,又在后面写if n == 'done': break,但因为前面的continue,这个break根本执行不到。换成上面那种while True加break的逻辑更清晰,也不会出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:55:15