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

自定义阶乘函数触发TypeError:字符串与整数无法执行减法运算

解决阶乘代码中的TypeError问题

嘿,我一眼就揪出问题啦!你遇到的TypeError: unsupported operand type(s) for -: 'str' and 'int'错误,根源特别简单:input()函数默认返回的是字符串类型,你直接把这个字符串传给factorial函数后,函数里执行n-1时,字符串和整数根本没法做减法运算,这不就报错了嘛。

修正方案

只需要把输入的字符串转换成整数类型就行,用int()函数就能搞定,同时我还帮你优化了代码的边界处理(比如0的阶乘是1,负数没有阶乘),甚至加了异常处理让代码更健壮:

try:
    # 转换输入为整数,同时修正提示文字(原来的提示是平方,和阶乘需求不符)
    num = int(input("Enter the number to calculate factorial for: "))
    
    def factorial(n):
        if n < 0:
            return "Oops! Negative numbers don't have factorials."
        elif n == 0 or n == 1:
            return 1
        else:
            return n * factorial(n-1)
    
    print(factorial(num))
except ValueError:
    print("Please enter a valid whole number!")

额外小提示

  • 我把变量名从f改成了num,这样代码可读性更强;
  • 修正了提示文字的错误(原来写的是"squared"平方,和你要计算阶乘的需求不匹配);
  • 增加了异常处理,防止用户输入字母、小数这类非整数内容导致程序崩溃;
  • 补充了负数判断逻辑,因为负数没有阶乘,给用户更友好的反馈。

内容的提问来源于stack exchange,提问作者Pranav K S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:40:24