Pangramm

Neue Frage »

Auf diesen Beitrag antworten »
lea Pangramm

Ja, ich schon wieder. großes Grinsen Wird wohl nicht das letzte Mal gewesen sein großes Grinsen

Folgendes Problem:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
def pangram(nt):
    check = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
    for i in check:
        if (i in nt):
            continue
        else:
            return False
        return True
n = input('--> ')
if (pangram(n.lower ())):
    print('Juhu, ein Pangramm.')
else:
    print('Leider kein Pangram.')


Beispielsätze:
Sein oder Nichtsein, das ist hier die Frage. (Erwartetes Ergebnis: Leider kein Pangramm)
Franz jagt im komplett verwahrlosten Taxi quer durch Bayern. ( Hier: Juhu, ein Pangramm)

Jetzt habe ich allerdings folgendes Problem. Beim 1 Satz funktioniert es. Beim 2ten aber nicht. woran liegt das?
 
Auf diesen Beitrag antworten »
as_string

Ich schätze, weil ja so alle Buchstaben sowohl in groß als auch in klein vorkommen müssten. Groß-/Kleinschreibung spielt aber bei einem Pangramm keine Rolle. Ich würde nur Großbuchstaben nehmen und jeden einzelnen Buchstaben im Satz in einen Großbuchstaben verwendeln, bevor ich vergleiche.
Abgesehen davon frage ich mich, ob es nicht eine effizientere Möglichkeit gibt. Wenn man in Python eine Set-Datenstruktur (also eine Menge) hätte, in der die Buchstaben drin sind und aus der alle Buchstaben raus streicht, die im Text auftreten, müsste man am Ende eine leere Menge haben. Dafür kenne ich mich in Python aber wieder mal zu wenig aus.

Gruß
Marco
Auf diesen Beitrag antworten »
lea

dankeschön, habe es hinbekommen, hast du eventuell auch eine Idee zu meiner anderen Frage?
Auf diesen Beitrag antworten »
as_string

Ich sehe gerade, Du verwendet schon "lower()" beim Aufruf. Das würde ich besser in die Funktion packen, aber dann müssen alle Großbuchstaben aus der Liste raus.

Gruß
Marco
 
Auf diesen Beitrag antworten »
lea

habe es hinbekommensmile
Auf diesen Beitrag antworten »
as_string

Um aber den Gedanken mit dem set noch weiter zu spinnen. Ich meine nämlich, das geht viel kürzer, besser, effizienter, wenn man das so macht:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
def pangram(nt):
    check = set("abcdefghijklmnopqrstuvwxyz")
    return check.issubset(set(nt.lower()))

n = input('--> ')
if (pangram(n.lower ())):
    print('Juhu, ein Pangramm.')
else:
    print('Leider kein Pangram.')

Dann macht nämlich die ganze Arbeit mit den Schleifen direkt Python und das auch noch viel effizienter.
Die Menge aller Buchstaben muss nämlich eine Untermenge der Buchstaben sein, die in dem Satz vorkommen. Und das ist in Python eben schon eingebaut das zu überprüfen.

Gruß
Marco
Auf diesen Beitrag antworten »
lea

Hast du vielleicht auch eine Idee zu der Weihnachts aufgabe?
 
Neue Frage »
Antworten »


Verwandte Themen