Was ist falsch - Python Taschenrechner?

4 Antworten

Er sagt dass der Datentyp nicht stimmt von result1
Ich kann kein Python, aber du musst versuchen, es in eine Zeichenkette (String?) zu casten/ formatieren

Csgoisnotacrime 
Fragesteller
 20.10.2018, 12:47

Danke die Fehlermeldung ist weg und das Ergebnis wird auch ausgegeben, jedoch drei davon:

Erste Zahl: 4

Rechenoperator: +

Zweite Zahl: 4

Das Ergebnis: 8.0

Das Ergebnis: 1.0

Das Ergebnis: 16.0

0
AlexByJava  20.10.2018, 12:49

gibt es in python sowas wie ein return oder break -befehl ? müsstest du dann nach jedem print(...) setzen

1
Csgoisnotacrime 
Fragesteller
 20.10.2018, 12:50
@AlexByJava

Keine Ahnung so weit bin ich noch nicht, aber danke hast mir schon sehr geholfen:)

0

Probier mal bei den letzten beiden ifs nach dem "or" noch operator == hin zuschreiben.

ikinikin  20.10.2018, 12:51

Also: if operator == "*" or operator == "x":

1
Csgoisnotacrime 
Fragesteller
 20.10.2018, 12:52

ja danke das war der letzte Fehler:)

0

Bin auch neu, aber probier in Zeile 12, 16 (überall wo result steht ^^)
Blablabla + str(result)
Müsste dann formatiert sein

Csgoisnotacrime 
Fragesteller
 20.10.2018, 12:50

habe ich bereits gemacht, aber es werden anstatt der Fehlermeldung nun drei Ergebnisse angezeigt:

Erste Zahl: 4

Rechenoperator: +

Zweite Zahl: 4

Das Ergebnis: 8.0

Das Ergebnis: 1.0

Das Ergebnis: 16.0

0
Mark Berger  20.10.2018, 13:08
@Csgoisnotacrime

die zwei unteren if-Anweisungen müssen so aussehen

if operator == "/" or operator == ":":
    dein code

if operator == "*" or operator == "x":
    dein code
1
Mark Berger  10.05.2021, 16:22
@Theodor951Ernst

Ich verstehe nicht ganz was du meinst aber das Problem hätte ich erklären können...

Aber besser spät als nie!

if operator == "/" prüft ob der operator dem / entspricht und wenn er das nicht tut, wie zB im obrigen Fall mit + dann sorgt das or dafür, dass die zweite Bedingung geprüft wird. Ist die erste Bedingung bereits wahr, dann muss bei or die zweite gar nicht geprüft werden - das nennt sich Lazy Evaluation und darum sollte der Programm bei den Operatoren / und * auch richtig arbeiten!

Aber kommen wir zurück zum zweiten Teil von dem if... or ":" heißt so viel wie or ":" == True. In Python sind alle Zahlen außer 0 und alle Strings außer dem Leerstring "" True! Gefüllte Datenstrukturen (list, tuple, dict, set, deque, ...) sind auch True und leere Datenstrukturen False.

Ein or ":" stimmt also immer und darum wird im Fall von + zB die Addition, die Division und die Multiplikation ausgeführt.

Schreibt man als Operator nun zB u rein würde dann auch das or ":" und or "x" greifen.

Sauberer wäre es dann aus den drei letzte if ein elif zu machen damit nicht immer alle Fälle geprüft werden und ein else mit einer Fehlermeldung könnte auch nicht schaden un den User zu sagen, dass der Operator unbekannt ist!

0

Die Variable result4 muss vom Typ float (Kommazahl) sein und nicht vom Typ String (Zeichenkette).

Und schaue dir mal switch case an. Das eignet sich hier besser als deine if Abfragen.

Woher ich das weiß:Berufserfahrung
Theodor951Ernst  10.05.2021, 15:54

Das ist Python, nicht C. In Python gibt es kein switch case

0