Raubkopierer
Erfahrenes Mitglied
Code:
#!/usr/bin/python
"regular expressions modul importieren"
import re
"Datei mit Strings oeffnen und in Liste mit Strings umwandeln"
lines=open('presidents.txt').readlines()
"Suchwort abfragen"
search = str(raw_input('Was soll gesucht werden Meister? '))
def p1():
"Methode 1"
"Counter (zaehlt Funde) 0 setzen"
count=0
"fuer jeden String in der Liste Lines:"
for word0 in lines:
"Umbrueche am Ende entfernen falls vorhanden"
if '\n' in word0:
word0=word0[:-1]
"Vervielfachen"
word1=word0
word2=word1
"fuer jeden Buchstaben des Suchwortes:"
for char in search:
"falls Buchstabe nicht vorhanden:"
if word1.find(char) is -1:
"naechster Buchstabe"
continue
else:
"Buchstabe aus String entfernen um mehrfaches Finden zu verhindern"
word2=word2[:word2.find(char)]+word1[word1.find(char)+1:]
"Suchbereich begrenzen (Bereich vor gefundenem Buchstaben wird entfernt)"
word1=word1[word1.find(char)+1:]
"Abgleich ob alle Buchstaben des Suchworts im String waren indem Laenge 'nachher' und 'vorher' (abzgl. Laenge des Suchwortes) verglichen wird"
if len(word0)-len(search) is len(word2):
"String ausgeben"
print word0
"Counter um 1 erhoehen"
count+=1
if count is 0:
"Keine validen Ergebnisse registriert"
print 'Nichts gefunden :('
def p2():
"Methode 2 mit regexp"
"Counter 0 setzen"
count=0
"leeren String erstellen fuer neuen regexp aus Suchwort"
search0=''
"fuer jede Position im Suchwort (Integer):"
for i in range(len(search)):
"regexp-Zeichen einfuegen (beliebig viele Buchstaben zwischen diesem und naechtem Zeichen)"
search0=search0+search[i]+'.*'
"fuer jeden String der Liste:"
for word in lines:
"Umbrueche am Ende entfernen falls vorhanden"
if '\n' in word:
word=word[:-1]
"regexp auf String anwenden"
if re.search(search0, word):
"Treffer ausgeben"
print word
"Counter um 1 erhoehen"
count+=1
if count is 0:
"Keine validen Ergebnisse registriert"
print 'Nichts gefunden :('
def method(exit):
"Gewuenschte Methode waehlen lassen, exit nach x misslungenen Versuchen."
ask=str(raw_input('Methode waehlen! [1/2] '))
if exit is 1:
print ('Ungueltige Eingabe, beende')
if ask in '1':
p1()
elif ask in '2':
p2()
else:
method(exit-1)
"Aufrufen mit 5 Versuchen"
method(5)
Ich denke die übermäßig genutzten Comments erklären alles

Zuletzt bearbeitet: