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

Python函数中使用input遇异常:仅print语句执行,求问题排查

问题分析与修复方案

你的代码只执行了开头的print语句,核心问题和修复点如下:

  • 函数未被调用:你定义了max_num函数,但全局代码里没有触发函数执行的语句,所以print执行后程序直接结束,函数内部逻辑完全没运行。
  • 冗余参数无意义:函数定义时写了num1, num2, num3, false=None,但内部直接用input覆盖了这些参数,完全不需要这些形参,反而会干扰函数调用。
  • 字符串直接比较逻辑错误:input获取的是字符串类型,直接用>=比较的是字符的ASCII码顺序,不是数值大小(比如"10"会比"2"小),必须先转成数值类型再比较。
  • isdigit用法错误:isdigit()方法不需要传参数,而且你的判断时机和逻辑都错了——应该先检查输入是否为数字,再进行比较,否则错误输入会先触发字符串比较的逻辑,且你写的条件是“三个输入都不是数字”才提示,但实际只要有一个不是就应该报错。
  • 无效递归语句:return max_num()放在了所有分支之后,永远不会被执行到,因为前面的if/elif/else已经覆盖了所有情况,要么return要么执行print,程序根本走不到这一行。

修正后的代码

print("I can tell you the maximum of 3 numbers")

def max_num():
    # 获取输入
    num1_input = input("enter first number: ")
    num2_input = input("enter second number: ")
    num3_input = input("enter third number: ")
    
    # 先检查是否都是数字
    if not (num1_input.isdigit() and num2_input.isdigit() and num3_input.isdigit()):
        print("no number available")
        return
    
    # 转换为整数类型
    num1 = int(num1_input)
    num2 = int(num2_input)
    num3 = int(num3_input)
    
    # 比较数值大小并输出结果
    if num1 >= num2 and num1 >= num3:
        print(f"The maximum number is: {num1}")
    elif num2 >= num1 and num2 >= num3:
        print(f"The maximum number is: {num2}")
    else:
        print(f"The maximum number is: {num3}")

# 调用函数触发执行
max_num()

额外优化(支持浮点数输入)

如果需要处理带小数点的数字(比如3.14),可以用try-except替代isdigit(),避免无法识别浮点数:

print("I can tell you the maximum of 3 numbers")

def max_num():
    try:
        # 直接转换为浮点数,同时捕获非数字输入的异常
        num1 = float(input("enter first number: "))
        num2 = float(input("enter second number: "))
        num3 = float(input("enter third number: "))
    except ValueError:
        print("no number available")
        return
    
    # 用Python内置max函数简化比较逻辑
    max_val = max(num1, num2, num3)
    print(f"The maximum number is: {max_val}")

max_num()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:33:25