Anfängerfrage: Einfacher Code mit "input" funktioniert nicht

Code-Stücke können hier veröffentlicht werden.
Antworten
floi
User
Beiträge: 4
Registriert: Freitag 7. Januar 2022, 14:31

Hallo zusammen!

Ich bin neu hier und versuche gerade, mir etwas Python beizubringen. Dazu habe ich mir ein Lehrbuch gekauft ("Schrödinger programmiert Python") und die ersten zwei Kapitel durchgearbeitet. Im zweiten Kapitel habe ich den Code für ein kleines Kassenprogramm erlernt und ihn eigentlich auch genau nach Vorgabe erstellt. Leider funktioniert der Code nicht so, wie er soll. Bevor ich jetzt mit Kapitel 3 weitermache und dabei vermutlich immer wieder auf diesen Basis-Code zurückgreifen muss, wollte ich euch um Hilfe bitten. Der Code ist wie folgt (die Einrückungen habe ich für diesen Forums-Beitrag einmal mit Dots nachgebaut, die .py-Datei kann ich ja hier nicht hochladen, oder?):

eingabe = "j"
while eingabe == "j":
....preis = input("Gib den Preis ein: 20")
....rabatt_in_prozent = input("Rabatt in %: 20")
....preis = float(preis)
....rabatt_in_prozent = float(rabatt_in_prozent)
....rabatt_in_euro = preis/100 * rabatt_in_prozent
....neuer_preis = preis - rabatt_in_euro
....print("Preis mit", rabatt_in_prozent, "% Rabatt ist", neuer_preis)
....zahlung = input("Der Kunde zahlt: 20")
....zahlung = float(zahlung)
....rueckgeld = round(zahlunf - neuer_preis, 2)
....if rueckgeld <0:
........print("Das gezahlte Geld reicht nicht!")
....else:
........print("Gegeben: ", zahlung, "Preis", neuer_preis)
........print("Wechselgeld: ", rueckgeld)
........eingabe = input("Noch einmal? Dann gib 'j' ein!")
print("Das Programm wurde beendet.")

Bei der Ausführung endet die Ausgabe direkt nach der ersten Zeile/dem ersten Input. Irgendwie muss es auch an dem Input liegen, denn wenn ich alle Inputs durch float ersetze, dann funktioniert es eigentlich so, wie es soll: Alle Ausgaben, auch mit ihren Bedingungen und Schleifen werden widergegeben. Als editor nutze ich Thonny auf meinem Windows-Rechner.

Ich hoffe, ich verstoße hiermit nicht gegen irgendeine Konvention, über einen Tipp würde ich mich jedenfalls sehr freuen!

Best!
Floi
Zuletzt geändert von floi am Freitag 7. Januar 2022, 15:13, insgesamt 1-mal geändert.
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Schoen, dass du das mit den Einrueckungen bemerkt hast. Mit dem </>-Knopf im vollstaendigen Editor kannst du dir das Leben in Zukunft aber leichter machen.

Fuer mich funktioniert der Code weiter als bis zu dem input. Aber da sind diverse Fehler drin. zahlunf, und rueckgeld mal mit und mal ohne ue, und das else ist falsch eingerueckt.
floi
User
Beiträge: 4
Registriert: Freitag 7. Januar 2022, 14:31

Hi _deets_

Vielen Dank für deine Antwort und die Hinweise. Sorry für die peinlichen Tipper und die falsche Einrückung hier im Editor, die habe ich einmal hier und in meiner .py-Datei korrigiert. Das ändert leider bei mir nichts. Die Ausgabe in Thonny ist lediglich:

Python 3.7.9 (bundled)
>>> %Run 96.py
Gib den Preis ein: 20

Komisch, oder?

Best! Floi
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann hat das was mit Thonny zu tun. Ich benutz das nicht, sondern die Kommandozeile. Und dafuer ist es letztlich gedacht.
floi
User
Beiträge: 4
Registriert: Freitag 7. Januar 2022, 14:31

Hm ok, ich hab`s jetzt auch einmal in dem Python Editor und der Idle Shell versucht. Es bleibt leider so. Und - wie gesagt - mit float anstatt input funktioniert es grudsätzlich.

Falls noch jemand einen Tipp hat, würde ich mich freuen.

Danke euch! Best! Floi
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sind beides nicht die Kommandozeile. Die Kommandozeile ist CMD.EXE, oder Eingabeaufforderung, oder Terminal im Mac. Ich bin prinzipiell zwar der Ansicht, dass input auch in IDLE funktionieren *sollte*, aber da dein Programm bei mir tut, und es nichts gibt, was man daran aendern kann (ausser den offensichlichen Fehlern), musst du eben diese Fehlerquellen ausschliessen.
floi
User
Beiträge: 4
Registriert: Freitag 7. Januar 2022, 14:31

Danke _deets_ für deine Antworten. Mit der Kommandozeile (bzw. Eingabeaufforderung) muss ich mich dann wohl noch einmal auseinandersetzen. Wenn ich da den Code kurzerhand reinkopiere, eröffnet sich gleich eine ganz neue Fehlerwelt:

C:\Users\floi>eingabe = "j"
Der Befehl "eingabe" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\floi>while eingabe == "j":
Der Befehl "while" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\floi> preis = input("Gib den Preis ein: 20")
Der Befehl "preis" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\floi> rabatt_in_prozent = input("Rabatt in %: 20")
Der Befehl "rabatt_in_prozent" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\floi> preis = float(preis)
Der Befehl "preis" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

usw. Zeile für Zeile.

Das sieht ja auch alles nicht wirklich formatiert aus, aber nur reinkopiert nimmt er das so. Wie gesagt, da muss ich mich wohl auch noch einmal mit beschäftigen, wie ich sauber in die "Eingabeaufforderung" reinarbeite. Danke dir, für den Hinweis!

Best! Floi
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst dazu

python meinskript.py

ausfuehren. Nicht einfach den Code einkippen.

Dabei steht python ggf. nicht so da, sondern muss der volle Pfad sein, also sowas wie C:\Python38\bin\python.exe oder sowas. Und dann steht rechts davon der volle Pfad.

Wie gesagt, es ist ueberraschend, dass es bei dir nicht geht - aber bei mir tut's, und darum muss das an deiner Art die zu starten liegen.
Antworten