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
相关产品推荐
相关产品推荐

