Frage von DaSpirit, 27

Python Frage if-Abfrage?

Hey, folgender Code:

Wert = input("Geben sie maximal 6 Buchstaben ein: ")

BuchstabenPos = 1


print("Buchstabe ", BuchstabenPos, " ist ", Buchstabe)
BuchstabenPos += 1
if BuchstabenPos > 6:
    print("Die Zeichenkette ist zu lang!")
    break

Es kompliliert auch und started, aber wenn ich nun genau 6 Buchstaben eingebe, bekomme ich die gegebene Fehlermeldung. In der If-Abfrage steht aber, dass dies nur passieren soll, wenn es mehr als 6 Zeichen sind. Wenn ich nun also wirklich die Möglichkeit haben soll 6 Zeichen zu schreiben, müsste ich da hinschreiben.. ich verstehe aber nicht wieso.

Antwort
von Olokun, 27

Da fehlt eine Schleife?

Du erhöhst BuchstabenPos unabhängig davon, ob noch ein weiterer Buchstabe vorhanden ist?

Kommentar von DaSpirit ,

Stimmt.. hatte ich vergessen. Über dem print steht noch :" for Buchstabe in Wert: " 

Kommentar von Olokun ,

Dann ist Buchstabe doch in der for Schleife definiert.

„Wert“ ist eine Zeichenkette bestehend aus einzelnen Buchstaben. Mit der for Schleife wird ein Teil dieser Zeichenkette nach dem anderen der Variablen Buchstabe zugewiesen und der darauf folgende eingerückte Programmcode ausgeführt.

Wann kommt denn die Fehlermeldung? Nachdem die erste print Anweisung für die sechs Buchstaben ausgeführt wurde? Oder schon vorher?

Sind die Einrückungen in Deinem Programm so wie sie hier stehen? Wahrscheinlich nicht, die Code-Formatierung hier scheint keine Tabulatoren zu berücksichtigen. Die kompletten letzten 5 Zeilen sollten weiter eingerückt sein?

Dann erhöhst Du BuchstabenPos über den letzten Buchstaben hinaus; d. h. BuchstabenPos wird 7, obwohl es keinen 7. Buchstaben mehr gibt.

Antwort
von TUrabbIT, 19

Es scheint ein Teil des Codes zu fehlen, denn wo und wie definierst du denn Buchstabe?

Kommentar von DaSpirit ,

Nirgendwo.. genau das ist es ja. Es funktioniert aber trotzdem.. und ich frage mich nun wieso.

Kommentar von TUrabbIT ,

Ah okay, habe eben dein anderen Kommentar gelesen, es wird also in der Schleife definiert.

Ich denke dein Problem ist, das du mit BuchstabenPos bei 1 anfängst, die Schleife aber 6 mal ausgeführt wird. Damit ist bei der sechsten Ausführung BuchstabenPos = 7

Das wäre kein Problem, wenn du nicht die if Frage nach der erhöhung von BuchstabenPos machen würdest.

Pack das Buchstabenpos +=1 hinter den if Teil und es müsste korrekt ausgeführt werden.

Antwort
von Maxi1002, 7

Also ich weiß nicht ob du es noch benötigst habe hier mal eine kürzere Version des Programmes geschrieben

wort = input("Geben sie maximal 6 Buchstaben ein: ")

laenge = len(wort)

if laenge > 6:
print("Die Zeichenkette ist zu lang!")

Keine passende Antwort gefunden?

Fragen Sie die Community