Testen ob irgendeine sechsstellige Zahl in String vorkommt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Mir war nur nicht klar, ob du meinen Edit noch gelesen hattest. (ich wollte doch nur Aufmerksamkeit! :lol:)

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 :D
Das Leben ist wie ein Tennisball.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

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 :D
Bitte sehr:

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
Leonidas
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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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:

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
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Und wenn der OP vielleicht auch Zahlen in Worten meint?
"Einemillionensechshundertzweiundfuffzigtausendfumpfunfuffzig" findest du so nicht.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Panke hat geschrieben:Und wenn der OP vielleicht auch Zahlen in Worten meint?
"Einemillionensechshundertzweiundfuffzigtausendfumpfunfuffzig" findest du so nicht.
Natürlich nicht, weil die Zahl 7-stellig ist! :D
BlackJack

@numerix: Wieso ist die siebenstellig? Wurde denn schon etwas zur Basis gesagt, in der die Zahl dargestellt wird!? ;-)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

BlackJack hat geschrieben:@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.

Oder sagst du zu einem binären 10010101 "Zehn Millionen Zehntausend Einhundertundeins"?
BlackJack

Nee da sag ich 149 zu, oder Hundertneunundvierzig.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Es wird immer deutlicher, dass das problem massiv unterschätzt wurde.

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
Antworten