Python Fehler in modifiziertem Tutorialprogramm.

C

Cheetah1337

Gast
Servus,

Habe gerade angefangen mit Python und hänge irgendwie an einem der Programmbeispiele.
Ist an sich ein total simples Beispielprogramm, welches ich um ein paar Funktionen erweitert habe.
Ist vermutlich eh nur ein total offensichtlicher Fehler, aber ich sehe ihn nicht.
Ist jetzt nicht das ganze Programm, aber eben der Teil der nicht funktioniert.
Er schreibt brav die drei Optionen und wartet auf eine Eingabe, jedoch springt er nach der Eingabe wieder an den Anfang und schreibt wieder die drei Optionen und wartet wieder. (Yeah, die while-schleife ginge schonmal :p)
Wo habe ich mich da jetzt verhaut? :freak:

Code:
while True:
    print ("1.Deutsch > Englisch")
    print ("2.Englisch > Deutsch")
    print ("3.Ende")
    
    B = input ()
    
    if B == 1:
        wort = input ("Geben Sie ein Wort auf Deutsch ein: ")

        if wort in words:
            print ("Das englische Wort lautet:" , words[wort])

        else:
            print ("Das Wort ist unbekannt.")

    elif B == 2:
        wort = input ("Geben Sie ein Wort auf Englisch ein: ")

        if wort in woerter:
            print ("Das Deutsche Wort lautet:" , woerter[wort])

        else:
            print ("Das Wort ist unbekannt.")

    elif B == 3:
        break
    
    else:
        continue
 
Python zeigt dir den Fehler an. Bitte paste den Fehler dazu und zwar die komplette Ausgabe.
 
dann ist B vielleicht nicht 1, 2 oder 3..?
 
@HominiLupus:
Nein, er gibt eben keinen Fehler aus beim Ausführen.
Lediglich wenn ich es in der CMD mittels Tastenkürzel kille kommt eine Meldung:

222.PNG

Und das sagt wohl nur wo ich ausgestiegen bin.

@cfreak84: ??? Der Wert wird ja vor dem if-Konstrukt abgefragt ... da wäre ich schon recht blöde, wenn ich da keinen der 3 Werte eingegeben hätte ... O_o
 
Schon mal was von String und Integer gehört?
 
Ja? Und soweit ich das bisher verstanden habe ist Python das recht egal und je nachdem, was man eingibt wird auch der Typ der Variable festgelegt.
Gebe ich also eine EINS ein ist es automatisch INT, gebe ich jedoch "cfreak84" ein, so ist es ein string.
Und da ich ca 100 Mal 1, 2 oder 3 eingegeben habe ... wird es wohl INT gewesen sein.
Außer ich habe da was missverstanden.
 
Du hast was missverstanden.

Die Rückgabe der Funktion input() ist immer vom Datentyp String.
 
Asoooo, okay dann ist natürlich alles klar.

Habe es jetzt auf int(input()) geändert und nun geht es.

Danke für die Hilfestellung. :)
 
Das duerfte dir dann aber um die Ohren fliegen wenn man Buchstaben eingibt. Pruefe doch einfach auf "1", "2" oder "3" als String. :)
 
Ja DAS tat es in der tat, aber da ist mir natürlich dann klar gewesen woran es lag.
Mir ist aber aufgrund meiner noch recht rudimentären Kenntnisse in dieser Sprache keine Möglichkeit eingefallen wie ich nach einem string frage.

Hatte den input wieder ohne "int"-Definition geschrieben und 2 Varianten für die if-Argumente geschrieben:

if str(B == X):
und
if str(B) == X:

Funktionieren mal nicht.
Bei Ersterem springt er IMMER in die erste Variante
Bei zweiterem hätte ich wieder den Mist den ich am Anfang hatte. ^^
 
wir wäre es mit
Code:
if B == "2":
dann kannst Du dir auch
Code:
 int(input())
sparen.

Code:
if str(B == X):
ist immer wahr, egal welchen Wert B und X haben.
 
Zuletzt bearbeitet:
Ah okay, ergibt Sinn dass man nach einem "String" fragt. *an den Kopf fass* ^^
Dass ich das int(input()) irgendwie loswerde bzw das Programm absturzsicher mache war der Plan für die Zukunft. Das Python-Buch hat ja noch über 900 Seiten. :D
Aber danke erneut für die Hilfestellung. :)

@r15ch13: Ah und jetzt sehe ich erst, dass du "1" "2" "3" sehr direkt gemeint hat. *erneut an den Kopf fass* :lol:

@cfreak84: Ich frage erneut mal wieder dumm: Wieso denn das? ^^
 
Zuletzt bearbeitet von einem Moderator:
Naja erst wertet Python den Inhalt der Klammer aus, also
Code:
B == X
.
Das kann entweder true oder false sein.
Im zweiten Schritt
Code:
str(true) bzw. str(false)
wird dann true oder false in einen String konvertiert. Ein String ist an sich erst mal true.
 
Ah okay ... da muss ich mir echt eine etwas andere Denkweise aneignen.
Thanks again. :)
 
Zurück
Oben