Taschenrechner programmieren

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
BENET
User
Beiträge: 1
Registriert: Sonntag 19. April 2020, 15:24

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)))
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Und was tut nicht? Was ist das Ergebnis und wie weicht es von dem ab, was Du willst?
Benutzeravatar
__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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
Miscelo
User
Beiträge: 15
Registriert: Sonntag 2. Februar 2020, 21:39

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.

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")
Benutzeravatar
__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
Benutzeravatar
Miscelo
User
Beiträge: 15
Registriert: Sonntag 2. Februar 2020, 21:39

__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.
Danke. Ist aber nicht meine Post. Könntest du bitte etwas zum Thema beifügen. Danke
# Don't Panik!
answer = lambda x: 42
answer("question")
Antworten