Hilfe Neuanfänger

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Dieter68
User
Beiträge: 5
Registriert: Dienstag 7. Juli 2020, 18:33

# Beispiel und Problem

L = True
while L:

L = int (input("Bitte Zahl > 400 und < 800 eingeben: "))
if (L >= 400 and L <= 800):
print ("gut")
L=False
elif (L >= 800):
print("zu groß")
else:
print("zu klein")

else:
print("L ist:", L*10)

# Alles läuft, aber wenn der richtige Wert also z.B. 600 (zwischen 400 und 800) eigegeben wird kann ich nicht mit dem Wert 600 weiterrechnen.
# Kann Python die int Variable (L) nicht speichern oder was mache ich falsch
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Du bindest den Wert "True" an den Namen L.
Dann bindest du die Eingabe des Benutzers an den Namen L.
Und wenn die Eingabe zwischen 400 und 800 ist, dann bindest du False an L.

Wenn du für alles den selben Namen benutzt, dann wird der Wert natürlich immer überschrieben.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Variablennamen sollten immer aussagekräftig sein. Wenn Du statt L etwas anderes benutzt, dann würde Dir auffallen, dass entweder das L als Wahrheitswert oder das L als Zahl mit dem Namen keinen Sinn ergibt.
Statt while mit Bedingung nimmt man oft eine Endlpsschleife, die man an der entsprechenden Stelle mit break verläßt.
Die Klammern um die Bedingungen sind allesamt überflüssig. Du hast eine Überschneidung der Bedingungen (was ansich bei elif nicht schlimm ist, aber trotzdem zur Verwirrung sorgt).
Ein else bei einer while-Schleife ist selten sinnvoll, vor allem, wenn das `print` immer ausgeführt wird.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs:

Code: Alles auswählen

while True:
    number = int(input("Bitte Zahl > 400 und < 800 eingeben:"))
    if 400 <= number <= 800:
        print("gut")
        break
    elif number > 800:
        print("zu groß")
    else:
        print("zu klein")
print("L ist:", number * 10)
bb1898
User
Beiträge: 216
Registriert: Mittwoch 12. Juli 2006, 14:28

Noch was: Dir ist sicher aufgefallen, dass im Code-Beispiel von Sirius3 alle Einrückungen schön deutlich sichtbar sind - und in Deinem Code leider gar nicht. Das sind die Code-Tags, mit denen Sirius3 seinen Code eingerahmt hat. Zu haben mit der Schaltfläche "</>". Die wird sichtbar und benutzbar, wenn Du auf "Vollständiger Editor und Vorschau" klickst. Syntax-Hervorhebung gibt's als Extra-Schmankerl mit dazu. Und auch die Vorschau ist sehr hilfreich, gerade für die Code-Beispiele.
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Noch eine kleine mathematische Anmerkung: In der Aufforderung zur Eingabe forderst du Zahlen zwischen 400 und 800 (< und >). In der Prüfung akzeptierst du aber auch 400 und 800 als korrekte Eingabe.
Dieter68
User
Beiträge: 5
Registriert: Dienstag 7. Juli 2020, 18:33

Hallo sparro, bb1898, einfach Tobi und Sirius3 - danke für eure Antworten. Es läuft jetzt einwandfrei! Muss allerdings noch viel lernen wie ich an den Antworten sehe. Habe zwei gute Pythonbücher aber die haben es so nicht erklärt - denke ich. Bin tatsächlich 68 und habe nochmal mit dem Programmieren angefangen. In den 70ern haben wir megagrosse Projekte mit Basic und Fortran gemacht. Aber in Python schein mir irgendwie alles anders. Also wenn ich bei meinem Projekt nicht weiter komme traue ich mich wieder zu fragen. Danke!
Antworten