Ich wollte ein Taschenrechner programmieren aber ich weiß nicht warum es nicht geht?
erste_zahl = int(input("Gib eine Zahl ein: "))
zweite_zahl = int(input("Gib eine andere Zahl ein : "))
zeichen = input("Gib eine Rechenoperation ein: ")
ergebnis = (erste_zahl, zeichen, zweite_zahl)
if (zeichen == "+"):
print(ergebnis+ " = " +(str(erste_zahl) + str(zweite_zahl)))
elif (zeichen == "-"):
print(ergebnis+ " = " +(str(erste_zahl) - str(zweite_zahl)))
elif (zeichen == "*"):
print(ergebnis+ " = " +(str(erste_zahl) * str(zweite_zahl)))
elif (zeichen == "/"):
print(ergebnis+ " = " + (str(erste_zahl) / str(zweite_zahl)))
Taschenrechner programmieren
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@BENET: Python hilft Dir doch beim verstehen warum es nicht geht mit einer Fehlermeldung. Wie lautet die denn und was verstehst Du daran konkret nicht? Was hättest Du an der Stelle wo die Ausnahme auftritt, denn erwartet was stattdessen passiert? Und warum?
Um die ``if``/``elif``-Bedingungen sollte man übrigens keine unnötigen Klammern setzen.
Den ``else``-Fall sollte man auch behandeln, also wenn der Benutzer keines der gültigen Rechenzeichen eingibt.
Warum nennst Du `ergebnis` so? Was ist das? Inwiefern ist das ein Ergebnis?
Die ganzen Zweige unterscheiden sich nur sehr geringfügig. Man sollte da nur das machen worin sich die ganzen Rechnungen unterscheiden, also beispielsweise das *tatsächliche* Ergebnis der Berechnung an einen Namen binden, und die Ausgabe dann *einmal* danach erledigen.
Zeichenketten und Werte stückelt man nicht mit ``+`` zusammen. Das ist eher BASIC als Python. In Python gibt es dafür Zeichenkettenformatierung mittels `format()`-Methode auf Zeichenketten und ab Python 3.6 f-Zeichenkettenliterale.
Um die ``if``/``elif``-Bedingungen sollte man übrigens keine unnötigen Klammern setzen.
Den ``else``-Fall sollte man auch behandeln, also wenn der Benutzer keines der gültigen Rechenzeichen eingibt.
Warum nennst Du `ergebnis` so? Was ist das? Inwiefern ist das ein Ergebnis?
Die ganzen Zweige unterscheiden sich nur sehr geringfügig. Man sollte da nur das machen worin sich die ganzen Rechnungen unterscheiden, also beispielsweise das *tatsächliche* Ergebnis der Berechnung an einen Namen binden, und die Ausgabe dann *einmal* danach erledigen.
Zeichenketten und Werte stückelt man nicht mit ``+`` zusammen. Das ist eher BASIC als Python. In Python gibt es dafür Zeichenkettenformatierung mittels `format()`-Methode auf Zeichenketten und ab Python 3.6 f-Zeichenkettenliterale.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Hallo. Mit dem Modul "Operator" kann man schlicht einen String in einen Operator verwandeln.
Link dazu: https://docs.python.org/3/library/opera ... e-operator
Vielleicht nicht Integer sondern float verwenden. Das beschränkt sonst deine Ergebnisse auf die natürlichen Zahlen.
Link dazu: https://docs.python.org/3/library/opera ... e-operator
Vielleicht nicht Integer sondern float verwenden. Das beschränkt sonst deine Ergebnisse auf die natürlichen Zahlen.
Code: Alles auswählen
# Kleiner Taschenrechner mit Operator. Dictionary als Hilfe.
import operator
erste_zahl = float(input("Gib eine Zahl ein: "))
zweite_zahl = float(input("Gib eine andere Zahl ein : "))
zeichen = input("Gib eine Rechenoperation ein: ")
operators = {"+": operator.add, "-": operator.sub, "*": operator.mul, "/": operator.truediv}
print(operators[zeichen](erste_zahl, zweite_zahl))
# Don't Panik!
answer = lambda x: 42
answer("question")
answer = lambda x: 42
answer("question")
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Miscelo: Das beschränkt nicht die Ergebnisse auf ganze Zahlen, sondern die Operanden. Bei Division kommt auch bei ganzzahligen Operanden ein `float` als Ergebnis.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Danke. Ist aber nicht meine Post. Könntest du bitte etwas zum Thema beifügen. Danke__blackjack__ hat geschrieben: Sonntag 19. April 2020, 20:01 @Miscelo: Das beschränkt nicht die Ergebnisse auf ganze Zahlen, sondern die Operanden. Bei Division kommt auch bei ganzzahligen Operanden ein `float` als Ergebnis.
# Don't Panik!
answer = lambda x: 42
answer("question")
answer = lambda x: 42
answer("question")