Frage von Romanqaywsx, 37

Halloe Leute, ich bräuchte eure Hilfe in der Hinsicht das ich einen programmierten Taschenrechner auf Pythonbasis brauche der aber auch wurzeln ziehen kann?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von LifeArtist1, 3
import math
math.sqrt(9)
Output: 3.0

wenn du jetzt den string "sqrt(2 + 4) + 2" hast, kannst du regular expressions verwenden: (?<=sqrt\()(.*?)(?=\)).
Sieht erstmal extrem komisch aus, es ist aber eigentlich ganz einfach: https://regex101.com/r/hE9aC9/1 dort wird dir alles auf der rechten Seite erklärt. 

Wie verwendet man jetzt regex in python?

import re
m = re.search('(?<=sqrt\()(.*?)(?=\))', 'sqrt(2 + 3) - 5')
m.group(0)
Output: '2+3'

da du vorher dein ergebnis splittest wirst du warscheinlich nur so einen string kriegen: "sqrt(2 + 3)" für so einen "sqrt(sqrt(9))" funktioniert der regex noch nicht, reiche ich aber noch nach. Dann müsstest du in der Theorie genau das was du vorher angewendet hast auf die 2 + 3 anwenden. Denk aber dran, dass es ja rekursiv ist also zuerst 2 + 3 ausrechnen dann math.sqrt dann die eigentliche rechnung.

In operations würde ich das jetzt nicht erstmal einfügen sondern jede Zahl prüfen ob "sqrt" im part vorhanden ist. if "sqrt" in parts[0] .... dann den regex drauf anwenden ausrechnen ( erst gucken ob sqrt drin ist da warscheinlich (meine vermutung) regex rechen aufwändiger ist als "in")

Bei fragen einfach Kommentieren.

Ich würde dir ein funktionierendes Beispiel schreiben, aber das werde ich erst am Donnerstag schaffen.

Antwort
von Cabrillo, 25

Hi ist eigentlich ganz einfach.
a = float (input("Gib die Zahl ein: ")) b = a**(1/2)
das ist die wurzel aus a. Du nimmst die Zahl machst 2 Sterne dran, machst ne Klammer auf, gibst 1/ und dann die wie vielte wurzel du ziehen willst. Normal ist 2 also: zahl** (1/2) du musst darauf achten, dass deine zahl ein float ist und kein string! mit float kann man rechnen mit strings nicht!

Quelle:

https://www.gutefrage.net/frage/python-wurzel-ziehen

Kommentar von Romanqaywsx ,

Wie würdest du es in diesen funktionalen Taschenrechner Einbauen

rechnung = input("Bitte gebe deine Rechnung ein: ")
while rechnung != "beenden":
    print(eval(rechnung))
    rechnung = input("Bitte gebe deine Rechnung ein: ")

ein dictionary mit den operations methoden

import operator as op
operations = {"+":op.add,
                      "/":op.floordiv,
                      "*":op.mul,
                      "-":op.sub}

rechnung = input("Bitte gebe deine Rechnung ein: ")

while rechnung != "beenden":
    parts = rechnung.split(" ") #teilt den string in eine Liste auf; teilt wo space
    num1 = int(parts[0])
    num2 = int(parts[2])
    oper = parts[1]

    print(operations[oper](num1, num2))
    rechnung = input("Bitte gebe deine Rechnung ein: ")

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten