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

如何修复Python代码中出现的TypeError: str类型相减操作数错误

Python到站时间差计算TypeError报错修复

报错原因

  • input()方法返回值默认是字符串类型,原代码未提前将输入的时、分值转成数值类型,就直接参与乘法、减法运算,直接触发unsupported operand type(s) for -: 'str' and 'str'报错
  • 存在两处会在类型问题修复后继续触发错误的逻辑问题:
    1. 类型转换顺序颠倒:原代码先让字符串和数值做乘法(Python中字符串乘整数的效果是重复拼接字符串,并非数学运算),最后才尝试把计算结果转成整数,运算逻辑本身不成立
    2. 打印环节误将数值变量razlika作为函数调用,写法razlika('sati')会触发“非可调用对象”的类型错误

可直接运行的修复代码

# 读取输入时直接转换为整数,从根源避免字符串运算问题
v2sat = int(input())
v2minut = int(input())
print('Jelena je stigla na stanicu u:', v2sat, v2minut)
v1sat = int(input())
v1minut = int(input())
print('Ivana je stigla na stanicu u:', v1sat, v1minut)

# 统一换算为总秒数计算
v2sekunde = v2sat * 3600 + v2minut * 60
v1sekunde = v1sat * 3600 + v1minut * 60

# 计算以小时为单位的时间差
razlika = (v1sekunde - v2sekunde) / 3600
# 修正打印逻辑
print('Razlika je:', razlika, 'sati')

核心修复动作

  • 类型转换前置:读取到input()返回的字符串后立刻用int()转为整数,后续所有运算都是数值间操作,从根源消除字符串运算报错
  • 调整运算顺序:先完成类型转换,再执行乘除、加减计算,符合Python数值运算规则,避免出现字符串重复拼接的无效计算
  • 修正打印语法:删除对razlika的错误函数调用,把单位文本sati作为print的独立参数传入完成结果输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 04:24:00