【问题标题】:How to compare the value without cause the error [duplicate]如何比较值而不导致错误[重复]
【发布时间】:2015-02-24 11:02:27
【问题描述】:

我正在处理我的 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: an integer is required.

我发现的问题来自这个:

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 的值,看看我是否有匹配值而不需要整数?

【问题讨论】:

  • @qqvc 感谢您的帮助,但它仍然给我错误:TypeError: an integer is required。我不明白问题是什么。你知道问题出在哪里吗?
  • it won't get pass on 是什么意思?你的意思是 if 语句没有处理?
  • @qqvc 是的,你是对的。但我意识到为什么 if 语句没有处理是因为变量 pos_X 是一个字符串,它需要将它从 str 转换为 int。你能告诉我如何从 str 转换为 int 吗?

标签: python python-2.7


【解决方案1】:

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

因此:

1073 == int('1073')

'1073' == str(1073)

【讨论】:

  • 是的,你当然是对的。我正在尝试比较值 1073 的整数以查看它是否匹配。我刚刚意识到pos_X 的类型是一个字符串。你能告诉我如何从 str 转换为 int 吗?
  • 1073 == int('1073')
  • 非常感谢您的帮助。我如何比较该值以查看它是否与我想使用 if 语句匹配?我需要使用if 1073 == int('1073') 吗?如何在 if 语句中使用 pos_X 来比较使用 int 的值?
  • 使用if int(pos_X) == 1073,如qqvc回答
  • @qqvc 非常感谢您的帮助,我可以看到它已经解决了这个问题,但是有一个问题。我在这一行收到错误TypeError: an integer is requiredself.getControl(prog_ids).setWidth(int(program_width))programs_width 的类型是一个列表。你知道我为什么会出错吗?
【解决方案2】:
if int(pos_X) == 1073: 

这将解决您的问题。

【讨论】:

    【解决方案3】:

    int(pos_X) == 1073
    

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

    【讨论】:

    • 为什么是 int('1073')?只要 1073 也可以。他必须转换 pos_X,而不是 value。
    • @qqvc 但 OP 说,他的值是字符串,而不是整数。所以我们需要将其转换为整数才能压缩
    • pos_X = 整数,他必须转换 pos_X,而不是 pos_X 的值
    • @qqvc 我的答案现在好吗?
    • @qqvc 哦,是的,抱歉愚蠢的错误:) 已更正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多