Programmabfrage: Neustart

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
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

Hallo zusammen,

gestern habe ich ein kleines Script erstellt, bei dem ich lediglich einen Neustart-Befehl geben möchte. Beispielsweise über eine While-Schleife. Hier im Forum und auch im Web habe ich ein wenig nachlesen. Aber aus irgendeinem Grund klappt es nicht. Entweder wird die Schleife immer endlos oder bricht immer ab.

Hat jemand eine Idee, wie es lauten könnte?

Code: Alles auswählen

while (True):
    variable_a = float(input ("Please enter your first variable: "))
    variable_b = float(input ("Please enter your second variable: "))
    Multiplikation = (variable_a * variable_b)
    Addition = (variable_a + variable_b)
    print("")
    print("reultat for multiplication is rounded (decimal places): ", (round(Multiplikation, 2)))
    print("reultat for addition is rounded (decimal places): ", (round(Addition, 2)))
    print()
    input ("Do you want to restart this program (y/n)? ")

einen schönen Sonntag :D
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

NeuINFling hat geschrieben: Hat jemand eine Idee, wie es lauten könnte?
Na ja, du fragst in der letzten Zeile nach einer Eingabe, machst dann aber gar nichts damit. Du kannst dir beispielsweise die Eingabe merken und wenn sie 'n', 'no' o. ä. entspricht, die Schleife mit 'break' verlassen.

Ansonsten: In Zeile 1, 4 und 5 kannst du auf die Klammern verzichten. Mein Vorschlag wäre, von dem 'variable_' Präfix abzusehen. Für eine leere Ausgabe würde 'print()' statt 'print("") reichen; weiter unten machst du es richtig, da wäre aber zu erledigen, ob man den Zeilenvorschub nicht vielleicht in der vorangegangenen Zeile erledigen möchte. 'Multiplikation' und 'Addition' sollten der Konvention entsprechend ausschließlich in Kleinbuchstaben geschrieben werden.
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

Hi :)
danke für die Tipps der Eingabe!
zu dem eigentlichen Problem...Ja, ab Zeile 10, also dem Input bezgl. des Neustarts oder Abbruch, habe ich bewusst einen Vorschlag weggelassen, weil alle meine Vorschläge nicht funktioniert haben.

Code: Alles auswählen

while True:
    variable_a = float(input ("Please enter your first variable: "))
    variable_b = float(input ("Please enter your second variable: "))
    multiplication = variable_a * variable_b
    addition = variable_a + variable_b
    print()
    print("reultat for multiplication is rounded (decimal places): ", (round(multiplication, 2)))
    print("reultat for addition is rounded (decimal places): ", (round(addition, 2)))
    print()
    input ("Do you want to restart this program (y/n)? ")
    n == False
    if n:
        break

Auch habe ich im Web etwas von upper() gelesen. Ist dies auch eine (bessere) Möglichkeit?
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

NeuINFling hat geschrieben: Auch habe ich im Web etwas von upper() gelesen. Ist dies auch eine (bessere) Möglichkeit?
Jetzt bindest du den festen Wert 'False' in jedem Durchlauf an den Namen 'n'. Das kann nicht funktionieren, denn eigentlich möchtest du doch, dass 'n' den eingegebenen Wert hat. Die Normalisierung des Eingabestrings mit '.upper()'/'.lowre()" ist eine von mehreren Techniken, die man anwenden kann, um die Abfrage etwas toleranter gegenüber Eingabevariationen zu gestalten. Aber vorher sollte sie erst einmal funktionieren ;)
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

....dass 'n' den eingegebenen Wert hat....

Wie meinst du das?

"n" = ? (irgendein Variablenname also z. Bsp. "stop"
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

NeuINFling hat geschrieben: Wie meinst du das?
Äh, du forderst den Benutzer doch mit 'input ("Do you want to restart this program (y/n)? ")' dazu auf, einen Wert einzugeben, entweder 'y' oder 'n'. Aber du merkst dir den Wert nirgendwo. Was eigentlich passieren müsste, ist, dass der Name 'n' den Wert hat (ich würde übrigens einen anderen Namen vorschlagen; 'n' ist nichtssagend und kann hier sogar verwirrend sein), der eingeben wird, damit du später prüfen kannst, ob der Wert 'n' ist, um das Programm dann zu beenden...
NeuINFling
User
Beiträge: 10
Registriert: Freitag 4. November 2016, 11:55

Code: Alles auswählen

while True:
    variable_a = float(input ("Please enter your first variable: "))
    variable_b = float(input ("Please enter your second variable: "))
    multiplication = variable_a * variable_b
    addition = variable_a + variable_b
    print()
    print("reultat for multiplication is rounded (decimal places): ", (round(multiplication, 2)))
    print("reultat for addition is rounded (decimal places): ", (round(addition, 2)))
    print()
    question = input ("Do you want to restart this program (y/n)? ")
    if question == "n":
        break

Ah!!!! Stimmt :)
Danke für die gute Hilfe
Antworten