2016-06-16 8 views
1

Ich bin auf eine rätselhafte Herausforderung gestoßen. Ich muss prüfen, ob eine Zahl die gleiche Ziffer mehrfach ex enthält. 11, 424, 66 und so weiter. Zuerst scheint das einfach zu sein, aber ich habe Schwierigkeiten, eine Logik zu finden, um das zu überprüfen. irgendwelche Ideen?Überprüfen Sie, ob Nummer hat eine Ziffer mehrmals

Das ist, was ich bisher habe. Die Funktion nimmt eine Liste auf. (Aktualisiert)

arr = [[1,20],[1,10]] 

for i in arr: 
    l = list(range(i[0],i[1])) 
    for num in l: 
     if num < 11: continue 
     for c in str(num): 
      if str(num).count(c) > 1: 
       # dont know why code is popping off 12 and 13 
       print(l.pop(num)) 

Antwort

0

Gelöst dies! Ich wusste nicht, Pop führt basierend auf Position nicht Wert! Entfernen ist hier besser geeignet.

arr = [[1,40],[1,10]] 

for i in arr: 
    l = list(range(i[0],i[1])) 
    for num in l: 
     if num < 11: continue 
     for char in str(num): 
      if str(num).count(char) < 2: continue 
      l.remove(num) 
      break 
    print(l) 
2

Die beste Weise, die ich denken kann, ist die Zahl in einen String umzuwandeln und dabei einen Zähler auf sie

from collections import Counter 
a = 98 
c = Counter(str(a)) 
if any(value > 1 for value in c.values()): 
    print "The number has repeating digits" 

@ Zwei BitAlchemist danke für die Anregung

+0

'any (Wert> 1 für Wert in c.values ​​())' –

+0

@ Zwei BitAlchemist die Antwort aktualisiert. Danke :) –

6

Wenn Ihr ultimatives Ziel ist es, einfach festzustellen, ob es sich um eine Doppelfunktion handelt. Diese Funktion kann Ihnen helfen:

0

sieht so aus, als ob Sie Ihren eigenen Algorithmus erstellen wollten, der wahrscheinlich recherchiert oder eine Studentenübung, Sie müssen nur die Eigenschaften von Zahlen verstehen, die durch 10 geteilt sind, wobei 1/10 = 0,1 10/10 = 1 13/10 = 1 Erinnerung 3 13013/10 = 1301 rem 3 daher können wir eine Funktion erstellen, die die Erinnerungen in einem Array speichert eine sie gegen die Erinnerung an die nächste Nummer überprüfen hier wird der Algorithmus in python Rekursion verwenden, können Sie diese über Schlaufen

def countNumber(foundDigits,number): 
    next_number = int(number/10); 
    reminder = number % 10; 
    if(next_number < 1): 
     for num in foundDigits: 
      if(num == number or num == reminder): 
       return True 
     return False; 
    foundDigits.append(reminder); 
    return countNumber(foundDigits,next_number) 

Beispiel erreichen im Interpreter könnte sein

digitsFound = list() 
countNumber(digitsFound, 435229) 
+0

ich verstehe nicht, wie die Reste bei der Lösung dieses Problems helfen. Ich glaube, die Zahl in einen String zu verwandeln und dann nach doppelten Zeichen zu suchen, wird die beste Lösung für dieses Problem sein. – MintDrop

Verwandte Themen