Seite 1 von 1

Division in Python

Verfasst: Donnerstag 12. August 2021, 18:11
von lowoki
Hi, ich hatte heute meine erste Doppelstunde seit einem Jahr im Grundkurs Python. Das bedeutet das ich noch Anfänger bin was diese Programmiersprache angeht. Ich hab schon im Netz nach Lösungen für mein Problem gesucht und auch auf diesem Forum nachgeguckt, aber leider habe ich nichts gefunden was mein Problem lösen könnte.
Das Problem ist folgendes: In der Aufgabe die wir bekommen haben habe ich eine stelle wo der Benutzer des Programmes 3 Zahlen eingeben soll. Diese werden dann vom Programm in eine mathematische Gleichung eingegeben und das Programm löst die Gleichung automatisch. Allerdings ist der erste Schritt der Rechnung eine Division.
So sehen die Zeilen bis zu diesem Punkt aus:

print ("Das Gerüst der quadratischen Funktion lautet: f(x)=ax²+bx+c.")
ein1 = input("Geben sie den Wert für a ein:")
ein2 = input("Geben sie den Wert für b ein:")
ein3 = input("Geben sie den Wert für c ein:")
a = ein1
b = ein2
c = ein3
d = b/a

Das Problem ist die Zeile 8: " d = b/a"
Bei dieser Zeile kommt folgende Fehlermeldung:

Traceback (most recent call last):
File "d:\Python\school\quadratische Gleichung.py", line 8, in <module>
d = b/a
TypeError: unsupported operand type(s) for /: 'str' and 'str'

Wäre super wenn mir wer bei meinem Problem helfen könnte. Ich hoffe ich nerve keine damit.

Re: Division in Python

Verfasst: Donnerstag 12. August 2021, 18:18
von __deets__
Du musst deine Eingaben vor der Verwendung in arithmetischen Ausdruecken in einen numerischen Typ wandeln. Also int oder float, je nachdem, ob du ganze Zahlen, oder auch Gleitkommazahlen erlauben willst.

Code: Alles auswählen

a = int(ein1)
Deine Namen sind uebrigens sehr schlecht. ein1 sollte zB eingabe_a heissen, denn es ist die Eingabe fuer den Wert, der spaeter a wird.

Re: Division in Python

Verfasst: Donnerstag 12. August 2021, 18:43
von Sirius3
Oder man spart sich den Zwischenschritt und konvertiert sofort:

Code: Alles auswählen

print("Das Gerüst der quadratischen Funktion lautet: f(x)=ax²+bx+c.")
a = float(input("Geben sie den Wert für a ein:"))
b = float(input("Geben sie den Wert für b ein:"))
c = float(input("Geben sie den Wert für c ein:"))
d = b / a

Re: Division in Python

Verfasst: Freitag 13. August 2021, 21:22
von YAPD
Andere Art, es umzusetzen :

Code: Alles auswählen

variables = {"a": "", "b": "", "c": ""}

for v in variables:
    user_input = float(input("Please enter integer for variable '{}' : ".format(v)))
    variables[v] = user_input

formula_result = variables["b"] / variables["a"]
print("Result : {}".format(formula_result))
VG
YAPD

Re: Division in Python

Verfasst: Freitag 13. August 2021, 21:46
von Sirius3
@YAPD: man initialisiert keine Variablen mit Dummy-Werten, vor allem nicht mit leeren Strings, wenn man die danach mit Zahlen überschreibt. Warum soll man ein integer eingeben, wenn die Eingabe doch in ein Float umgewandelt wird?

Code: Alles auswählen

variables = {
    variable_name: float(input(f"Please enter integer for variable '{variablename}' : "))
    for variable_name in ["a", "b", "c"]
}
Die Verwendung eines Wörterbuchs wäre aber meiner Meinung nach zu komplex für das Problem hier.