Wieso funktioniert das nicht :) - Python-Programmierung?
Hi ich bin gerade am programmieren in Python. Ich muss einen Ticketautomaten für die Berufsschule programmieren. Ich habe hier auch den Code aber ab dem Punkt, wenn ich ein Ticket kaufen möchte (nachdem er fraget ob ich kaufen möchte), geht nix mehr wenn ich JA/ Nein eintippe und ich weiß irgendwie nicht mehr warum, er zeigt auch keine Fehlermeldung an. weiß da jemand weiter?... Danke für jede Hilfe.
Lol wtf ist die Berufsschule wirklich so einfach?
ja, also in der Regel bekomme ich das auch immer easy hin, aber hier hackte es halt irgendwie. Aber sonst ist dieses Fach einfach ja .bzw. eigentlich alle Fächer
1 Antwort
So eine Bedingung kann nie erfüllt sein:
if Bestätigung.lower() == "Ja"
Überleg dir mal, warum. Tipp: Wozu machst du denn das lower()?
Bei der Gelegenheit kannst du dir auch mal überlegen, was bei einer Eingabe außer Ja oder Nein passieren sollte. Diesen Fall behandelst du nicht explizit. Oft ist es sinnvoll, alles außer "ja" als "nein" zu interpretieren.
Stilistischer Hinweis am Rande: es ist unüblich, Variablennamen mit "Sonderzeichen" (also Zeichen außerhalb des ASCII-Buchstabensatzes) zu verwenden. Manche Leute haben auch eine geradezu religiöse Abneigung gegen deutschsprachige Variablennamen. Mach es halt so, wie man es euch in der Schule vermittelt hat.
Die Idee, alle Eingaben auf Groß- oder Kleinschreibung zu normalisieren, ist schon schlau. Nur muss dann auch der Vergleichswert stimmen.
dann müsste ich also auch die rechte seite mit der Antwort im lower() schreiben. also eben genauso "normalisieren" wie eben die linke Seite. Also die Bedingung (1:1) gleichsetzen mit der Antwort!?
Genau, oder einfach nur links ein lower() benutzen und rechts einfach „ja“ statt „Ja“ schreiben
also ich habe jetzt folgenden code:
def Zahlung(ticket_typ, preis):
while True:
Zahlungsvorgang = input(f"Möchten Sie das Ticket {ticket_typ} für den Preis von {preis} kaufen? (ja/nein): ")
if Zahlungsvorgang.lower() == Zahlungsvorgang.lower("ja"):
Zahlung()
break
if Zahlungsvorgang.lower() == "nein":
break
print("Alles klar, vielleicht beim nächsten mal")
und er zeigt mir folgende Fehlermeldung an:
if Zahlungsvorgang.lower() == Zahlungsvorgang.lower("ja"):
^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: str.lower() takes no arguments (1 given)
Was genau meint er jetzt, der string hat doch ein argument gegeben, oder nicht.
Denn Rechts hatte es nur mit "Ja" nicht funktioniert
Zahlungsvorgang.lower("ja")
Was glaubst du, damit zu erreichen?
Du willst zwei Strings vergleichen. Einer ist in einer Variable, einen hast du bereits als Literal ("ja"). Somit ganz einfach
if Zahlungsvorgang.lower() == "ja":
Beim "nein" hast du es ja schon richtig...
ooh, haha ok. manchmal bin ich ein bisschen durcheinander. ich bin jetzt auch kein top programmiere wie man merkt. ich probier es mal, danke. Komisch das ich da nicht drauf gekommen bin...
UPDATE: funktioniert trotzdem nicht.
Also ich habe es jetzt hinbekommen, nur zeigt er nach dem Kauf keine Kaufbestätigung sondern nur die Bezahlmethode an, haha. Da muss ich noch schauen, sonst läuft der Rest
im prinzip hat lower hier wirklich keinen sinn wenn man genauer nachdenkt, denn warum sollte man den string in kleinbuchstaben wieder zurückgeben... hast recht