Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python错误:TypeError:需要一个整数_Python_Python 2.7 - Fatal编程技术网

python错误:TypeError:需要一个整数

python错误:TypeError:需要一个整数,python,python-2.7,Python,Python 2.7,在数组中存储元素列表时,我正在编写python脚本 当我试图将每个元素放入getControl以允许我更改宽度大小时,出现了一个非常奇怪的错误。我可以从数组中获取元素列表,没有任何问题 当我尝试这个: programs_width = list() for pos_X, prog_width, prog_ids in zip(program_X, program_width, program_id): if pos_X == '1073': #30 mins

在数组中存储元素列表时,我正在编写python脚本

当我试图将每个元素放入
getControl
以允许我更改宽度大小时,出现了一个非常奇怪的错误。我可以从数组中获取元素列表,没有任何问题

当我尝试这个:

programs_width = list()
for pos_X, prog_width, prog_ids in zip(program_X, program_width, program_id):
    if pos_X == '1073':    
        #30 mins
        if prog_width == '342':
            programs_width = 181

        #1 hour
        if prog_width == '691':
            programs_width = 181

        #need to find out how to get the programs_width outside
        print programs_width
        print prog_ids
        self.getControl(prog_ids).setWidth(programs_width)
这给了我一个错误:

01:03:24 T:2084   ERROR: Exception in thread All_Channels_BACKUP_thread:
Traceback (most recent call last):
File "C:\Program Files (x86)\XBMC\system\python\Lib\threading.py", line 532, in __bootstrap_inner
self.run()
File "C:\Users\user\AppData\Roaming\XBMC\addons\script.tvguide\test.py", line 8158, in run
self.xtarget()
File "C:\Users\user\AppData\Roaming\XBMC\addons\script.tvguide\test.py", line 1410, in All_Channels_BACKUP                                                   self.getControl(str(prog_ids)).setWidth(str(programs_width))
TypeError: an integer is required
错误正在该行上跳转:

self.getControl(prog_ids).setWidth(programs_width)
 elif pos_X == '1073':
以下是宽度和ID的输出:

01:13:18 T:5032  NOTICE: 181
01:13:18 T:5032  NOTICE: 3072
01:13:18 T:5032  NOTICE: 181
01:13:18 T:5032  NOTICE: 3211
01:13:18 T:5032  NOTICE: 181
01:13:18 T:5032  NOTICE: 3279
01:13:18 T:5032  NOTICE: 181
01:13:18 T:5032  NOTICE: 3348
01:13:18 T:5032  NOTICE: 181
01:13:18 T:5032  NOTICE: 3417
我不知道为什么会出现错误,我所要做的就是使用变量
prog\u id
从数组中获取每个元素,将每个id放入
getcontrol
中,然后才能使用变量
programs\u width
每次更改宽度大小。
program\u width
的类型是
int
prog\u id
的类型是
str
,它是一个字符串

你知道我为什么会出错吗?你知道如何修复它吗


编辑:我意识到问题来自这一行:

self.getControl(prog_ids).setWidth(programs_width)
 elif pos_X == '1073':
以下是元素列表:

15:34:08 T:5872  NOTICE: 375
15:34:08 T:5872  NOTICE: 724
15:34:08 T:5872  NOTICE: 2804
15:34:08 T:5872  NOTICE: 5226
15:34:08 T:5872  NOTICE: 5924
15:34:08 T:5872  NOTICE: 6273
15:34:08 T:5872  NOTICE: 6622
15:34:08 T:5872  NOTICE: 6971
15:34:08 T:5872  NOTICE: 7320
15:34:08 T:5872  NOTICE: 7669
15:34:08 T:5872  NOTICE: 8018
15:34:08 T:5872  NOTICE: 8716
15:34:08 T:5872  NOTICE: 9065
15:34:08 T:5872  NOTICE: 9414
15:34:08 T:5872  NOTICE: 9763
15:34:08 T:5872  NOTICE: 10112
15:34:08 T:5872  NOTICE: 10461
15:34:08 T:5872  NOTICE: 10810
15:34:08 T:5872  NOTICE: 11159
15:34:08 T:5872  NOTICE: 11508
15:34:08 T:5872  NOTICE: 11857
15:34:08 T:5872  NOTICE: 12206
15:34:08 T:5872  NOTICE: 13937
15:34:08 T:5872  NOTICE: 14635
15:34:08 T:5872  NOTICE: 14984
15:34:08 T:5872  NOTICE: 15333
15:34:08 T:5872  NOTICE: 15682
15:34:08 T:5872  NOTICE: 16031
15:34:08 T:5872  NOTICE: 16380
15:34:08 T:5872  NOTICE: 16729
15:34:08 T:5872  NOTICE: 17078
15:34:08 T:5872  NOTICE: 17427
15:34:08 T:5872  NOTICE: 17776
15:34:08 T:5872  NOTICE: 18125
15:34:08 T:5872  NOTICE: 18474
15:34:08 T:5872  NOTICE: 18823
15:34:08 T:5872  NOTICE: 19172
15:34:08 T:5872  NOTICE: 19521
15:34:08 T:5872  NOTICE: 19870
15:34:08 T:5872  NOTICE: 20219
15:34:08 T:5872  NOTICE: 20568
15:34:08 T:5872  NOTICE: 20917
15:34:08 T:5872  NOTICE: 22648
15:34:08 T:5872  NOTICE: 23346
15:34:08 T:5872  NOTICE: 23695
15:34:08 T:5872  NOTICE: 24044
15:34:08 T:5872  NOTICE: 24393
15:34:08 T:5872  NOTICE: 24742
15:34:08 T:5872  NOTICE: 25091
15:34:08 T:5872  NOTICE: 25440
15:34:08 T:5872  NOTICE: 26138
15:34:08 T:5872  NOTICE: 26487
15:34:08 T:5872  NOTICE: 26836
15:34:08 T:5872  NOTICE: 27185
15:34:08 T:5872  NOTICE: 27534
15:34:08 T:5872  NOTICE: 27883
15:34:08 T:5872  NOTICE: 28232
15:34:08 T:5872  NOTICE: 28581
15:34:08 T:5872  NOTICE: 28930
15:34:08 T:5872  NOTICE: 29279
15:34:08 T:5872  NOTICE: 29628
15:34:08 T:5872  NOTICE: 31359
15:34:08 T:5872  NOTICE: 32057
15:34:08 T:5872  NOTICE: 32406
15:34:08 T:5872  NOTICE: 32755
15:34:08 T:5872  NOTICE: 33104
15:34:08 T:5872  NOTICE: 33453
15:34:08 T:5872  NOTICE: 33802
15:34:08 T:5872  NOTICE: 34151
15:34:08 T:5872  NOTICE: 375
15:34:08 T:5872  NOTICE: 1073
15:34:08 T:5872  NOTICE: 3153

引号使这些值成为字符串,而不是整数。删除值上的引号。此外,错误消息清楚地指示错误行:

self.getControl(str(prog_ids)).setWidth(str(programs_width))
请注意,您正在显式地将参数转换为带有“str”的字符串。使用“int”,而不是:

self.getControl(str(prog_ids)).setWidth(int(programs_width))

。。。如果您知道输入已经是整数,也可以省略转换。

问题在于
程序\u width
是一个列表

programs_width = list()
如果没有这些
If
语句

if prog_width == '342':
    programs_width = 181

#1 hour
if prog_width == '691':
    programs_width = 181
触发器,则
programs\u width
仍将是此处的列表:

self.getControl(prog_ids).setWidth(programs_width)

这会导致一个错误。

self.getControl(prog_ids).setWidth(int(programs_width))
@AvinashRaj非常感谢您,但我在更改代码时仍然会遇到相同的错误。你知道为什么我仍然会遇到同样的错误吗?你说错误在
self.getControl(prog\u-ids).setWidth(programs\u-width)
行中,但在回溯中,它说该行实际上是
self.getControl(str(prog\u-ids)).setWidth(str(programs\u-width))
。这使得你很难知道你是否在运行你认为是的代码,或者你对类型的判断是否正确。在这种情况下,将相应的变量转换为类型
int
,然后在打印时将结果转换回
string
。我尝试了
self.getControl(str(prog_id)).setWidth(str(programs_width))
,但它给出了相同的错误。在我将其转换回字符串之前,是否需要使用类似于
int(programs\u width=181)
的东西?我已经删除了我的值上的引号,但仍然会得到相同的错误。我试过使用self.getControl(str(prog_id)).setWidth(int(programs_width)),它给了我同样的错误。你知道为什么,出了什么问题吗S@Rawling谢谢你的建议,你知道我需要做什么来解决这个问题吗?@David:我不确定你的代码应该做什么,但我想你应该设置一个默认值,当两个
if
-语句没有触发时使用。(一个整数!)我试图比较这个值,看看它是否匹配,然后做些什么。我需要做什么来解决这个问题?删除值上的引号?我意识到问题来自
如果pos_X==1073:
。我已经列出了
pos\u X
的元素列表,请参见我的问题中我已更新的内容。