TypeError:不支持的操作数类型:'int' 和 'str

0 投票
2 回答
2494 浏览
提问于 2025-04-20 13:17

我写了一个脚本来计算一个叫做 program_width 的变量的值,但我遇到了一个奇怪的错误。

这个错误是:TypeError: 不支持的操作数类型:'int' 和 'str'

错误出现在这一行:

program_start = 350 + program_width

这是我使用的代码:

if datetime.timedelta(minutes = 10) <= program_duration <= datetime.timedelta(minutes = 30):
   program_width = "250"

elif datetime.timedelta(hours = 1) <= program_duration <= datetime.timedelta(hours = 1.29):
     program_width = "500"

elif datetime.timedelta(hours = 1.30) <= program_duration <= datetime.timedelta(hours = 1.45):
     program_width = "750"

elif datetime.timedelta(hours = 1.46) <= program_duration <= datetime.timedelta(hours = 2):
     program_width = "1000"


if program_width > 1:
   if program_notification:
      button_nofocus = 'channels_bar1.png'
      button_focus = 'channels_yellow.png'
   else:
      button_nofocus = 'channels_bar1.png'
      button_focus = 'channels_yellow.png'

      if program_width < 65:
         program_title = ''
      else:
         program_teststart = 350 + program_width
         print program_teststart = 350 + program_width

我希望把这个变量 program_width 的值加起来,得到一个返回值,比如说:350 + 500 = 850

有没有人知道怎么修复这个错误?

2 个回答

1

试试这个,在你给 program_width 赋值的所有地方:

program_width = 250

注意我把数字周围的 "" 去掉了。那些引号表示这个值是一个 字符串,而你不能把数字和字符串相加。我很确定你是想把 program_width 当作一个整数来使用。现在这样就可以正常工作了:

program_teststart = 350 + program_width
1

你把 program_width 设置成了一个字符串 "500",而不是整数 500。然后你试着把它和整数 350相加。这两者是不同的类型,错误信息正好告诉你哪里出错了,你不能把整数和字符串相加。

我猜你一开始就想要它是一个整数,所以

program_width = "500"

应该改成

program_width = 500

但是如果你真的有某种原因想把它当作字符串(你几乎肯定不需要这样做),你可以用 int() 函数把字符串转换成整数。

program_start = 350 + int(program_width)

撰写回答