Hallo zusammen, habe gerade mit python angefangen, und Probleme eine einfache "while" Schleife hinzubekommen...
Es geht um einen Taschenrechner. Nach der ersten Rechnung soll das Programm nicht stoppen, sondern der Nutzer soll eine neue Rechnung ausführen können.
Mit meinem Code funktioniert das- ich konnte aber keine einfache Schleife hinbekommen und habe daher einen Teil des Codes doppelt (ab 33).
Wie kann ich den Code verschlanken? Kann bitte Jemand helfen? Danke!
[codebox=python file=Unbenannt.php]def add(num1, num2):
return num1 + num2
def sub(num1, num2):
return num1 - num2
def mul(num1, num2):
return num1 * num2
def div(num1, num2):
return num1 / num2
print("Taschenrechner")
print (" ")
def main():
operation = input("Was willst Du machen? Gib das Rechensymbol ein (+,-,*,/)")
if (operation != "+" and operation != "-" and operation != "*" and operation != "/"):
print("Entschuldige, aber Du must zuerst eins der vier Rechensymbole auswählen")
else:
var1 = float(input("Gib Zahl 1 ein (anstelle eines Kommas mußt Du einen . eingeben):"))
var2 = float(input("Gib Zahl 2 ein (anstelle eines Kommas mußt Du einen . eingeben):"))
if (operation == "+"):
print("Das Ergebnis der Addition ist:")
print(add(var1, var2))
elif (operation == "-"):
print("Das Ergebnis der Subtraktion ist:")
print(sub(var1, var2))
elif (operation == "/"):
print("Das Ergebnius der Division ist:")
print(div(var1, var2))
else:
print("Das Ergebnis der Multiplikation ist:")
print(mul(var1, var2))
frage = input("Willst Du noch einmal rechnen lassen? Schreibe 'Ja' oder 'Nein':")
while frage == 'Ja':
operation = input("Was willst Du machen? Gib das Rechensymbol ein (+,-,*,/)")
if (operation != "+" and operation != "-" and operation != "*" and operation != "/"):
print("Entschuldige, aber Du must zuerst eins der vier Rechensymbole auswählen")
else:
var1 = float(input("Gib Zahl 1 ein (anstelle eines Kommas mußt Du einen . eingeben):"))
var2 = float(input("Gib Zahl 2 ein (anstelle eines Kommas mußt Du einen . eingeben):"))
if (operation == "+"):
print("Das Ergebnis der Addition ist:")
print(add(var1, var2))
elif (operation == "-"):
print("Das Ergebnis der Subtraktion ist:")
print(sub(var1, var2))
elif (operation == "/"):
print("Das Ergebnius der Division ist:")
print(div(var1, var2))
else:
print("Das Ergebnis der Multiplikation ist:")
print(mul(var1, var2))
frage = input("Willst Du noch einmal rechnen lassen? Schreibe 'Ja' oder 'Nein':")
print("Das Programm wird beendet")
main ()[/code]
Anfänger - Vereinfachung für Rechner Code - Schleife - gesucht
@Ralfm: Python kennt keinen Schleifentyp, bei dem die Bedingung am Ende ausgewertet wird, daher behilft man sich mit einer Endlosschleife und break:
Ansonsten: eingerückt wird immer mit 4 Leerzeichen pro Ebene. if und elif sind keine Funktionen, brauchen also keine Klammern. »in« ist hilfreich: »operation not in ("+", "-", "*", "/")«.
Code: Alles auswählen
while True:
...
if frage == 'Ja':
break
Zwei kleine Einwände zur Abfrage:
Die Variable, die das "Ja" oder "Nein" aufnimmt, sollte besser "antwort" heißen oder so, nicht "frage". Tut dem Programmablauf nicht weh, dem Leser des Codes aber nicht gut. Und mir scheint es unfreundlich, vom Nutzer zu verlangen, dass er "Ja" oder "Nein" ausschreibt, noch dazu mit großem Anfangsbuchstaben. Es reicht doch ein "j" oder "J", abfragbar mit
das akzeptiert dann von "j" bis "JAAA!" alles halbwegs Einschlägige. Mit dem "Nein" wirst Du geradezu fies, denn Du lässt den Nutzer das ganze Wort hinschreiben, in Wirklichkeit reagiert Dein Programm aber nur darauf, dass er nicht "Ja" geschrieben hat.
Die Variable, die das "Ja" oder "Nein" aufnimmt, sollte besser "antwort" heißen oder so, nicht "frage". Tut dem Programmablauf nicht weh, dem Leser des Codes aber nicht gut. Und mir scheint es unfreundlich, vom Nutzer zu verlangen, dass er "Ja" oder "Nein" ausschreibt, noch dazu mit großem Anfangsbuchstaben. Es reicht doch ein "j" oder "J", abfragbar mit
Code: Alles auswählen
if antwort.lower().startswith("j"):
...
Kleiner Hinweis: Die Funktionen am Anfang gibt es schon fertig im `operator`-Modul in der Standardbibliothek.
Hallo,
@BlackJack, bb1898 und Sirius3 vielen Dank für Eure Hilfe! Hab´ Eure Tips umgesetzt, sieht schon viel besser aus. Echt klasse das Forum!
@BlackJack, bb1898 und Sirius3 vielen Dank für Eure Hilfe! Hab´ Eure Tips umgesetzt, sieht schon viel besser aus. Echt klasse das Forum!
Code: Alles auswählen
print(" ")
print(" ")
print("******************")
print("* Taschenrechner *")
print("******************")
print (" ")
while True:
operation = input("Was willst Du machen? Gib das Rechensymbol ein (+,-,*,/):")
if operation not in ("+", "-", "*", "/"):
print("Bitte zuerst eins der vier Rechensymbole auswählen")
else:
var1 = float(input("Zahl 1 (anstelle von ',' bitte '.' eingeben):"))
var2 = float(input("Zahl 2 (anstelle von ',' bitte '.' eingeben):"))
if operation == "+":
print("Das Ergebnis der Addition ist: ", (var1 + var2))
elif operation == "-":
print("Das Ergebnis der Subtraktion ist: ", (var1 - var2))
elif operation == "/":
print("Das Ergebnius der Division ist: ", (var1 / var2))
else:
print("Das Ergebnis der Multiplikation ist: ", (var1 * var2))
print (" ")
antwort = input("Willst Du noch einmal rechnen lassen? J / N:\n")
if not antwort.lower().startswith("j"):
break
print ("Das Programm wird beendet")