Mir war nur nicht klar, ob du meinen Edit noch gelesen hattest. (ich wollte doch nur Aufmerksamkeit! )
Ich schlage für Version 2.0, nee, nennen wir sie besser gleich 5.0, einen klassenbasierten Entwurf vor. In ordentlichen Sprachen wie Java wird dies schließlich auch gemacht
Testen ob irgendeine sechsstellige Zahl in String vorkommt
Bitte sehr:EyDu hat geschrieben:Ich schlage für Version 2.0, nee, nennen wir sie besser gleich 5.0, einen klassenbasierten Entwurf vor. In ordentlichen Sprachen wie Java wird dies schließlich auch gemacht
Code: Alles auswählen
>>> class MyStr(str):
... def __new__(cls, val):
... return str.__new__(cls, val)
... @property
... def contains_number_with_six_digits(self):
... for number in xrange(int(1e5), int(1e6)):
... if str(number) in self:
... return True
... return False
...
>>> foo = MyStr('ein string, in dem eine sechstellige zahl vorkommt: 123456 und noch ein paar woerter')
>>> foo.contains_number_with_six_digits
True
>>> foo = MyStr('ein string, in dem eine sechstellige zahl vorkommt: 1234 und noch ein paar woerter 56')
>>> foo.contains_number_with_six_digits
False
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Da muss noch eine abstrakte Klasse NumberChecker, die das Check-Interface implementiert rein, mit einer konkreten Klasse Number6Checker, das dann eine ``check()``-Methode hat, die ein boolean-Objekt zurückgibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Und für den Fall, dass der OP in Wahrheit gar keine "Zahl", sondern eine "Nummer" meint, die vielleicht ja mit einer 0 beginnt, dann funktioniert die "xrange(1e...)"-Variante immer noch nicht ...
Ich hätte da noch:
Ich hätte da noch:
Code: Alles auswählen
>>> s = 'ein string, in dem eine sechstellige zahl vorkommt: 023456 und noch ein paar woerter'
>>> any(set(s.split()).intersection((str(n).zfill(6) for n in xrange(10**6))))
True
@numerix: Wieso ist die siebenstellig? Wurde denn schon etwas zur Basis gesagt, in der die Zahl dargestellt wird!?
Ich habe gelernt, dass man bei Basen != 10 die Zahlen nur als Ziffernfolge benennt, so dass durch die Formulierung wie "Eine Million etc." die Basis festgelegt wäre.BlackJack hat geschrieben:@numerix: Wieso ist die siebenstellig? Wurde denn schon etwas zur Basis gesagt, in der die Zahl dargestellt wird!?
Oder sagst du zu einem binären 10010101 "Zehn Millionen Zehntausend Einhundertundeins"?
Es wird immer deutlicher, dass das problem massiv unterschätzt wurde.
Wir haben auch das 9liver-system außer acht gelassen:
Wir haben auch das 9liver-system außer acht gelassen:
Code: Alles auswählen
"Gib acht! Hundert Dreiräder kommen auf dich zu!"
^ ^ ^ ^
8 1 100 3
= 811003
http://www.kinderpornos.info