Python Taschenrechner - Verwendung while Schleife

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
Michel:P
User
Beiträge: 1
Registriert: Mittwoch 5. Mai 2021, 19:13

Hallo,
bin ganz neu im Thema Programmieren und habe erst heute angefangen. Habe mich dazu entschieden, mit Python anzufangen, weshalb ich jetzt auch hier bin. :)
Wie dem auch sei, habe heute dann mit einer Videoreihe auf YouTube angefangen und nebenbei alle Schritte mitgemacht. Das war eine kleine Anfängerreihe, die mir bisher auch gut geholfen hat.
Nun wollte ich mich meinem ersten Projekt widmen: ich habe mich für die Programmierung eines Taschenrechners entschieden. Ich bin, wie ich finde, schon recht weit gekommen. Allerdings habe ich derzeit Probleme damit, die while Schleife richtig einzubinden und eine If Anweisung am Ende funktioniert aus für mich völlig undefinierbaren Gründen auch nicht. Vielleicht kann mir hier ja jemand helfen.

Hier ein kurzer Grundaufbau, wie ich mir die Funktion des Taschenrechners vorgestellt habe:
1. Frage nach der ersten Zahl
2. Frage nach der Rechenoperation (hier müssen Zahlen für die entsprechenden Rechenoperationen eingegeben werde)
3. Frage nach der zweiten Zahl
4. Falls die Eingabe aus Punkt 2 richtig war, wird das Ergebnis angezeigt. Wenn die Eingabe allerdings falsch war, dann wird mithilfe einer while Schleife wieder von vorne begonnen. Das funktioniert auch ohne Probleme, nur ist meiner Meinung nach von mir schlecht gemacht. Hier weiß ich allerdings nicht, wie ich die while Schleife richtig verwende. Ich habe einfach alles kopiert und dort eingefügt. Ist das so die Art wie man es macht oder gibt es dort eine andere Möglichkeit, die weniger Platz benötigt? Ich musste ja die gesamten Punkte 1-3 kopieren.
5. Nachdem das Ergebnis ausgerechnet und angezeigt wurde, möchte ich fragen, ob noch eine Aufgabe gerechnet werden soll. Hier komme ich allerdings gar nicht weiter. Es funktioniert einfach mit der If Anforderung nicht, sodass das Programm direkt beendet wird.
Wie ich mir das vorgestellt habe: Falls der Nutzer noch eine weitere Aufgabe rechnen möchte, möchte ich, dass das Programm wieder bei 1. beginnt und auch die mögliche falsche Eingabe unter Punkt 2 berücksichtigt. Wenn ich das allerdings mit der while Schleife so machen würde, wie ich es bisher gemacht habe, wären das extrem viele Zeilen. Also auch hier habe ich das Problem mit der richtigen Verwendung der while Schleife. Der Nutzer soll so viele Aufgaben rechnen können, bis er einmal mit nein Antwort.
Wenn der Nutzer keine weitere Aufgabe rechnen möchte, soll er mit nein antworten und dann wird ein Text angezeigt, dass ich hoffe, dass es ihm geholfen hat und ihm einen schönen Tag wünsche.

Ist ja doch ein sehr langer Text geworden. Nochmal in kurz meine Hauptprobleme: die richtige Verwendung der while Schleife und die if Anforderung unter Punkt 5.


Code: Alles auswählen

print("Taschenrechner")

number1 = float(input("Bitte geben Sie Ihre erste Zahl ein: "))

print()

print("Drücken Sie (1) für Addition")
print("Drücken Sie (2) für Subtraktion")
print("Drücken Sie (3) für Multiplikation")
print("Drücken Sie (4) für Division")

print()

type = int(input("Welche Rechenoperation wollen Sie nutzen?: "))

print()

number2 = float(input("Bitte geben Sie Ihre zweite Zahl ein: "))

print()

if type == 1:
    print("Ihr Ergbenis lautet:",  number1 + number2)
elif type == 2:
    print("Ihr Ergbenis lautet:",  number1 - number2)
elif type == 3:
    print("Ihr Ergbenis lautet:",  number1 * number2)
elif type == 4:
    print("Ihr Ergbenis lautet:",  number1 / number2)
else:
    print()
    print("Ihre Eingabe war fehlerhaft")
    print("Bitte versuchen Sie es erneut")
    print()
    while type > 4 or type < 1:
        number1 = float(input("Bitte geben Sie Ihre erste Zahl ein: "))

        print()

        print("Drücken Sie (1) für Addition")
        print("Drücken Sie (2) für Subtraktion")
        print("Drücken Sie (3) für Multiplikation")
        print("Drücken Sie (4) für Division")

        print()

        type = int(input("Welche Rechenoperation wollen Sie nutzen?: "))

        print()

        number2 = float(input("Bitte geben Sie Ihre zweite Zahl ein: "))

        print()

        if type == 1:
            print("Ihr Ergbenis lautet:", number1 + number2)
        elif type == 2:
            print("Ihr Ergbenis lautet:", number1 - number2)
        elif type == 3:
            print("Ihr Ergbenis lautet:", number1 * number2)
        elif type == 4:
            print("Ihr Ergbenis lautet:", number1 / number2)
        else:
            print()
            print("Ihre Eingabe war fehlerhaft")
            print("Bitte versuchen Sie es erneut")
            print()


(1): Das ist mein bisheriger Code, welcher auch ohne Probleme funktioniert. Wie bereits gesagt, habe ich nach der while Schleife den ganzen Code nochmal kopiert. Macht man das so oder gibt es dort eine platzsparende Möglichkeit?
(2): Ich möchte nach dem Code den Nutzer die Frage stellen, die ich unter Punkt 5 im Aufbau beschrieben habe. Kann mir dort jemand einen Denkanstoß geben? Wenn gewünscht, kann ich auch gerne meine bisherigen Versuche in einem nächsten Text von mir reinstellen. Für's Erste reicht das denke ich aber mal ^^

Ich freue mich auf eure Kommentare :)
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn man irgend etwas kopiert, macht man normalerweise etwas falsch.
Da das, was vor der Schleife steht sich innerhalb der Schleife wiederholt, kann man einfach das davor vermeiden, indem man die Bedinung, wann die Schleife unterbrochen wird, nach unten schiebt:

Code: Alles auswählen

print("Taschenrechner")

while True:
    number1 = float(input("Bitte geben Sie Ihre erste Zahl ein: "))

    print()
    print("Drücken Sie (1) für Addition")
    print("Drücken Sie (2) für Subtraktion")
    print("Drücken Sie (3) für Multiplikation")
    print("Drücken Sie (4) für Division")
    print()

    type = int(input("Welche Rechenoperation wollen Sie nutzen?: "))

    print()
    number2 = float(input("Bitte geben Sie Ihre zweite Zahl ein: "))
    print()

    if 1 <= type <= 4:
        break
    print()
    print("Ihre Eingabe war fehlerhaft")
    print("Bitte versuchen Sie es erneut")
    print()

if type == 1:
    print("Ihr Ergbenis lautet:",  number1 + number2)
elif type == 2:
    print("Ihr Ergbenis lautet:",  number1 - number2)
elif type == 3:
    print("Ihr Ergbenis lautet:",  number1 * number2)
elif type == 4:
    print("Ihr Ergbenis lautet:",  number1 / number2)
Es ist komisch, dass man alle Eingaben wiederholen muß, nur weil man bei einer etwas falsches eingibt.

Code: Alles auswählen

print("Taschenrechner")

number1 = float(input("Bitte geben Sie Ihre erste Zahl ein: "))

while True:
    print()
    print("Drücken Sie (1) für Addition")
    print("Drücken Sie (2) für Subtraktion")
    print("Drücken Sie (3) für Multiplikation")
    print("Drücken Sie (4) für Division")
    print()

    type = int(input("Welche Rechenoperation wollen Sie nutzen?: "))
    if 1 <= type <= 4:
        break

    print()
    print("Ihre Eingabe war fehlerhaft")
    print("Bitte versuchen Sie es erneut")
    print()

print()
number2 = float(input("Bitte geben Sie Ihre zweite Zahl ein: "))
print()

if type == 1:
    print("Ihr Ergbenis lautet:",  number1 + number2)
elif type == 2:
    print("Ihr Ergbenis lautet:",  number1 - number2)
elif type == 3:
    print("Ihr Ergbenis lautet:",  number1 * number2)
elif type == 4:
    print("Ihr Ergbenis lautet:",  number1 / number2)
Und zu Punkt 5: Du mußt um alles nochmal eine while-True-Schleife setzen.
Antworten