比较数字(长)是否包含另一个数字(也很长)

时间:2017-06-09 09:43:42

标签: python-2.7 iteration

我正在寻找一些解决方案如何比较一个长号码,如果它包含另一个长号码。 我有一系列的电话号码,比方说: 范围从2333222000开始到2333222999.然后我迭代这个范围并试图找出,如果这些数字中的任何一个匹配例如:233322211 - 注意最后一个数字丢失,但对我来说仍然是匹配。 我当前的代码因错误而失败:

  

“TypeError:'long'类型的参数不可迭代”

这是我目前的解决方案:

print type(range_filter) #returns <type 'long'>
for i in range(long(range_from), long(range_to)):
   if range_filter in i:
      #Do something here if it matches

2 个答案:

答案 0 :(得分:0)

您可以将它们转换为字符串并比较这样的字符串:

a = str(2333222000)
b = str(233322211)
c = str(2333222999)

if b > a and b < c:
    print "the number is in the range"

答案 1 :(得分:0)

如果您使用range,那么停止值必须是您感兴趣的最后一个之后的停止值。

您的困难在于您对range_filter是否是该范围中某个数字的子字符串感兴趣。所以你必须先将它们转换为字符串。

range_filter = 233322211
for num in range (2333222000 , 2333222999 +1):
    if str(range_filter) in str(num):
        print 'match for', range_filter, 'on',num

这给了

match for 233322211 on 2333222110
match for 233322211 on 2333222111
match for 233322211 on 2333222112
match for 233322211 on 2333222113
match for 233322211 on 2333222114
match for 233322211 on 2333222115
match for 233322211 on 2333222116
match for 233322211 on 2333222117
match for 233322211 on 2333222118
match for 233322211 on 2333222119

如果您只对第一个可能的匹配感兴趣,请在break之后加print。如果您不考虑33322211以匹配2333222119,则使用in代替.startswith()

if str(num).startswith(str(range_filter)):