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

Python程序报TypeError:函数与整数无法相减,求修复方案

问题分析与修复

错误原因

报错TypeError: unsupported operand type(s) for -: 'function' and 'int'是因为你在bake_time_remaining函数中,直接用函数对象EXPECTED_BAKE_TIME和整数做减法,而非调用函数获取它的返回值。此外原代码还有两个关键问题:

  • EXPECTED_BAKE_TIME函数没有return语句,调用后不会返回有效数值(默认返回None)
  • bake_time_remaining硬编码了已用时间,不符合练习要求的通用性

修复方案

根据练习要求,提供两种可行的修复方式:

方式1:用函数返回固定预期时间

# 定义返回预期烘焙时间的函数
def EXPECTED_BAKE_TIME():
    return 40

# 计算剩余时间的函数,接收已用时间作为参数
def bake_time_remaining(elapsed_bake_time):
    # 调用函数获取预期时间,再减去已用时间
    return EXPECTED_BAKE_TIME() - elapsed_bake_time

# 示例调用:已烘焙15分钟
print(bake_time_remaining(15))  # 输出25

方式2:用常量存储预期时间

如果预期时间是固定值,直接用常量更直观:

# 定义预期烘焙时间常量
EXPECTED_BAKE_TIME = 40

def bake_time_remaining(elapsed_bake_time):
    return EXPECTED_BAKE_TIME - elapsed_bake_time

# 示例调用
print(bake_time_remaining(15))  # 输出25

关键修复点

  • 确保EXPECTED_BAKE_TIME能提供数值:函数要加return,常量直接赋值
  • 计算时必须使用EXPECTED_BAKE_TIME()(调用函数)或直接用常量名,而非函数对象本身
  • 让bake_time_remaining接收已用时间作为参数,而非硬编码数值,满足练习的通用要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:32:14