Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if a specific digit is in an integer

Tags:

python

I want to check if, for example, the digit '2' is in 4059304593. My aim is to then check if there are any of the digits 1-9 not in my integer. This is what I have tried:

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                    

Then my "counts" would go all the way down to nine_count, and if any of the counts are 0, then that digit isn't in 'num'. From what I've read on these sites, my script would be inefficient - can someone point out a better way?

like image 947
mrnovice Avatar asked Nov 30 '25 11:11

mrnovice


2 Answers

This "digit" thing calls for a string approach, not a numeric one (reminds me of some Project Euler puzzles).

I'd create a set out of the digits of your number first (removing duplicates at the same time)

s = set(str(4059304593))

then to check for a digit:

print('2' in s)

(note that in for a set is performant)

then, to check whether s contains all the 013456789 digits:

print(s.issuperset("013456789"))

(if this must be done multiple times, it may be worth to create a set with the string, issuperset will work faster)

like image 153
Jean-François Fabre Avatar answered Dec 02 '25 02:12

Jean-François Fabre


You could convert your number to a string, then to a set to get the unique digits.

You just have to iterate over digits in 0-9 to find the ones not present in your original number :

>>> 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]
like image 40
Eric Duminil Avatar answered Dec 02 '25 02:12

Eric Duminil



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!