如何检查特定数字是否为整数

时间:2017-02-23 21:10:24

标签: python

我想检查一下,例如,数字'2'是否在4059304593中。 我的目的是检查是否有任何数字1-9不在我的整数。这就是我的尝试:

    for i in xrange(10):
    for j in xrange(100):
        num = str(i^j)
        one_count = 0
        two_count = 0
        for k in xrange(len(num)):
            if num[k] == 1:
                one_count += 1
            if num[k] == 2:
                two_count += 1                    

然后我的“计数”将一直下降到nine_count,如果任何计数为0,那么该数字不在'num'中。从我在这些网站上看到的内容来看,我的脚本效率低下 - 有人能指出更好的方法吗?

3 个答案:

答案 0 :(得分:7)

这个"数字"事物需要一个字符串方法,而不是一个数字方法(让我想起一些Project Euler谜题)。

我首先从你的号码的数字中创建一个set(同时删除重复的数字)

s = set(str(4059304593))

然后检查一个数字:

print('2' in s)

(请注意in的{​​{1}}是高性能的)

然后,检查set是否包含所有s数字:

013456789

(如果必须多次执行此操作,则可能需要使用字符串创建print(s.issuperset("013456789")) set将更快地运行)

答案 1 :(得分:2)

您可以将数字转换为字符串,然后转换为设置以获取唯一数字。

您只需要在0-9中迭代数字,找到原始数字中不存在的数字:

>>> set(map(int,str(4059304593)))
set([0, 9, 3, 4, 5])
>>> digits = _
>>> [i for i in range(10) if i not in digits]
[1, 2, 6, 7, 8]

答案 2 :(得分:0)

另一种方法是将-与集合一起使用:

set('0123456789') - set(str(4059304593))

结果是所有不在整数中的数字:

  

{'2','7','1','6','8'}