如何比较值而不会导致错误

时间:2014-12-27 15:56:28

标签: python python-2.7

我正在处理我的python脚本,因为我比较了该值以查看它是否与之匹配然后执行某些操作。

我遇到了我正在使用的代码的问题。

当我尝试这个时:

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
    self.getControl(prog_ids).setWidth(programs_width)

我可以传递if语句,但它会给我错误:TypeError:需要一个整数。

我发现的问题来自于此:

if pos_X == '1073': 

如果我尝试这样做会有效,但它不会被传递:

if pos_X == 1073: 

以下是元素列表:

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

pos_X的类型是str。

您能告诉我如何将值与pos_X进行比较,看看我是否有匹配值而不需要整数?

3 个答案:

答案 0 :(得分:3)

if int(pos_X) == 1073: 

这将解决您的问题。

答案 1 :(得分:0)

int(pos_X) == 1073

要匹配这两个值,您需要将pos_X转换为整数。

答案 2 :(得分:-1)

pos_X == '1073'中,您正在比较pos_X是否为'1073'(等于'1'+'0'+'7'+'3'的STRING),而pos_X == 1073则比较为INTEGER值1073(1000 + 70 + 3)。您需要使用strint方法从/转换为字符串或整数,然后进行比较。

因此:

1073 == int('1073')

'1073' == str(1073)