Division in Python

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
lowoki
User
Beiträge: 1
Registriert: Donnerstag 12. August 2021, 17:46

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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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

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
Benutzeravatar
YAPD
User
Beiträge: 120
Registriert: Dienstag 27. Juli 2021, 23:23
Wohnort: Frankfurt am Main

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
-----
Yet Another Python Developer
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Antworten