Wie kann ich mit dem Komma rechnen bei Python String?
Ich hatte versucht bei der „def gleich“ etwas zu ändern, aber mir wird immer eine Fehlermeldung angezeigt, könnte mir jemand helfen dabei?
3 Antworten
Wenn ich das aus deinem Kommentar richtig verstanden habe, sind bei dir Ganzzahl und Nachkommastelle aufgetrennt.
Rechnerischer Ansatz:
number = 5
decimalPlace = 2
floatingNumber = number + (decimalPlace / 10)
wobei die Länge der Nachkommastelle bedacht werden muss. Würde sie bspw. den Wert 202 haben, würde die Rechnung durch 10 nicht ausreichen.
Oder via String-Bearbeitung:
number = 5
decimalPlace = 2
floatingNumberAsString = str(number) + "." + str(decimalPlace)
(...) aber mir wird immer eine Fehlermeldung angezeigt (...)
Bitte poste deinen Code bei Fragen auf GF immer in editierbarer Form (bspw. via pastebin.com, wenn du mit dem GF-Editor nicht zurecht kommst) und gib auch die genauen Fehlermeldungen mit an.
Das könnte dir auch noch helfen:
https://www.journaldev.com/18804/python-decimal-division-round-precision
Ja ich weiß aber wie soll ich das aufschreiben? Z.B
a=str(c.a+b.a)
das Problem ist nur da das ich eine Fehlermeldung bekomme
... Du kannst folgendes machen:
z1 = float(str(c) + "." + str(a))
z2 = float(str(b) + "." + str(a))
a = str(z1 + z2)
Warum machst du es so kompliziert?
Wieso versuchst du Kommazahlen so zusammenzusetzen?
PS.: Bitte poste keine Fotos zum Quellcode sondern kopiere und füge den Quellcode direkt ein - so kann man den schnell selber ausführen und debuggen. Außerdem hilft es nicht zu sagen, dass du eine Fehlermeldung bekommst. Wir sollten normalerweise schon wissen welchen Fehler du bekommst sonst kann dir meist keiner helfen!
Also wir hatten halt in Informatik diese Aufgabe bekommen einen Taschenrechner zu Programmieren und hatten auch eine kleine Vorlage, das Problem war, dass selbst mein Lehrer nicht wusste wie ich das machen soll.
Achso und bei mir kommt immer noch dieselbe Fehlermeldung nämlich: ValueError: invalid literal for int() with base 10: ‘2,5‘
Klar, denn Python akzeptiert nur die amerikanische Schreibweise mit . statt ,
Die Lösung ist:
>>> zahl = float(input("Zahl 1: ").replace(",", "."))
Zahl 1: 3,6
>>> zahl
3.6
Wenn du übrigens diesen Fehler 1:1 in Google suchst bekommst du genau diese Antwort von dutzenden Quellen!
Vor allem diese kleinen Anfänger-Probleme bekommst mit einer Google-Suche gut gelöst. Einen Crashkurs gibt es auch auf meiner Seite: https://hackenlernen.com/blog.php?t=python_3_crashkurs
PS.: Es geht viel viel viel kürzer:
rechn = ""
while rechn != "0":
rechn = input("Rechnung: ").replace(",", ".")
try:
erg = eval(rechn)
print("= " + str(erg))
except:
print("Kann "+rechn+" nicht berechnen!")
Klappt perfekt:
Rechnung: 3+7-1,5
= 8.5
Rechnung: 7*2+1
= 15
Rechnung: 7*(2+1)
= 21
Rechnung: 8*6g
Kann 8*6g nicht berechnen!
Rechnung: 0
= 0
Üblicherweise mit einem Punkt.
Ja ich weiß aber wie soll ich das aufschreiben? Z.B
a=str(c.a+b.a)
das Problem ist nur da das ich eine Fehlermeldung bekomme
Ok, danke👍🏼