Kann mir jemand das entsprechende Pythonprogramm erstellen?

2 Antworten

Ich würde das so lösen...

# Programm zum Lösen von linearen Gleichungen des Typs a * x + b = c

def input_int_or_float(text):
    while True:
        r = input(text)
        try:
            return(int(r))
        except ValueError:
            try:
                return(float(r))
            except ValueError:
                print("[Fehler: Das ist keine Zahl gewesen. Erneuter Eingabe-Versuch...]")

a = input_int_or_float("Faktor für x: ")
b = input_int_or_float("+- Wert: ")
c = input_int_or_float("+- Ergebnis: ")

print(20*"-")

if b >= 0:
    print(f"{a} x + {b} = {c}")
else:
    print(f"{a} x - {-b} = {c}")

if a == 0:
    if b == c:
        print("Jedes x löst die Gleichung.")
    else:
        print("Die Gleichung hat keine Lösung.")
else:
    x = (c-b)/a
    print(f"x = {x}")

katzimausi123  12.05.2024, 20:03

nö. wenn du einen integer nimmst, dann kann man keine floats mehr eingeben. das wäre fatal für das ergebnis.

deine while schleife läuft unendlich? sweet

0
mihisu  12.05.2024, 20:24
@katzimausi123
nö. wenn du einen integer nimmst, dann kann man keine floats mehr eingeben. das wäre fatal für das ergebnis.

Warum sollten Integer fatal für das Ergebnis sein? Das funktioniert problemlos.

Beispiel-Durchlauf...

Faktor für x: 50
+- Wert: 14
+- Ergebnis: 17
--------------------
50 x + 14 = 17
x = 0.06

Und wenn man eine Zahl wie beispielsweise „15.2“ eingibt, die nicht als Integer, aber als Float, interpretiert werden kann, so wird diese auch als float gespeichert. Also auch kein Problem.

Ich war zuerst am Überlegen, ob ich direkt alles versuche als float zu interpretieren. Aber habe mich dann dagegen entschieden. Unter anderem deshalb, damit mein Programm mehr den abgebildeten Beispielen entspricht. Sonst hätte ich beim ersten Beispiel beispielsweise „5.0 x + 20.0 = 100.0“ statt „5 x + 20 = 100“ dastehen. Dementsprechend bin ich dazu übergegangen, ganze Zahlen als int-Typ zu belassen und nicht-ganze Zahlen als float-Typ zu behandeln.

deine while schleife läuft unendlich? sweet

Naja, nur solange, bis man etwas eingibt, was als float oder int interpretiert werden kann.

Da war ich auch zuerst am Überlegen, ob ich das nicht beispielsweise auf maximal 3 Eingabe-Versuche beschränke. Aber da das Programm sonst nichts macht, außer eine einzelne Gleichung zu lösen, habe ich das jetzt nicht als kritisch angesehen, wenn ich da keine Abfrage mache, ob der User die Eingabe abbrechen und das Programm beenden möchte. Dann muss der User das eben zur Not manuell abbrechen (oder gefälligst eine Zahl eingeben).

Ich wollte das Programm jetzt aber auch nicht einfach mit einem Fehler beenden, wenn der User etwas falsches eingibt, sondern wollte dem User die Chance geben, nochmal etwas richtiges einzugeben. Daher die Schleife.

0
mihisu  12.05.2024, 20:36
@katzimausi123

Ich habe hier aber nirgends den Fall, dass ich in das int() einen float reinstecke!

Bei meinem Programm kann kein int(2.4) vorkommen. Was hingegen vorkommen kann, wäre ein int("2.4"). Und int("2.4") wäre dann aber keine 2, sondern würde zu einem ValueError führen. [Dieser ValueError würde dann in meinem Programm über die exception als nächstes zu einem try mit float("2.4") führen, was dann 2.4 liefert.]

0
katzimausi123  12.05.2024, 20:38
@mihisu

ok. dann gibt es bei dir also keine dezimalzahlen? verstehe. ich habe damit kein problem.

0
mihisu  12.05.2024, 20:40
@katzimausi123

??? Ich habe keine Ahnung was du damit meinst. Was meinst du hier mit „keine Dezimalzahlen“ bei mir?

0
mihisu  12.05.2024, 20:44
@katzimausi123

Aber die gibt es doch bei mir. (Wenn sie denn in der Rechnung gebraucht werden.)

Hast du beispielsweise meinen Beispiel-Durchlauf gesehen, dass ich genannt habe...

Faktor für x: 50
+- Wert: 14
+- Ergebnis: 17
--------------------
50 x + 14 = 17
x = 0.06

Was ist denn da das „0.06“ bei „x = 0.06“? Ein float! Das ist ein float. dude.

0
katzimausi123  12.05.2024, 20:45
@mihisu

dude. das ist die falsche stelle, dude. wo du suchst dude. ich spreche nicht vom ergebnis, dude.

0
mihisu  12.05.2024, 20:47
@katzimausi123

Bei der Eingabe? Da gibt es int, wenn die Eingabe als int interpretiert werden kann. Es sind aber auch float, möglich, wenn die Eingabe nicht als int interpretiert werden kann.

Entsprechender Beispiel-Durchlauf:

Faktor für x: 2.5
+- Wert: 17
+- Ergebnis: -1.6
--------------------
2.5 x + 17 = -1.6
x = -7.44

Hier sind beispielsweise dann auch a = 2.5 und c = -1.6 in meinem Programm floats.

Oder wo meinst du sonst noch, wenn du das dann auch nicht gemeint haben solltest?

0
katzimausi123  12.05.2024, 20:53
@mihisu

ok. ich nehme es zurück. du hast ein float in einer extra except. warum auch immer...macht trotzdem wenig sinn. besser gleich einen float zu machen. oder einen instance-check vorzuschalten. sorry. dein code ist sehr bloated.

und in der ersten except hast du einen ValueError. Warum? Du willst doch keinen Error raisen, sondern in einen float wandeln.

0
def loese_lineare_gleichung(a, b, c):
    # Überprüfen, ob a nicht gleich Null ist (wir können nicht durch Null teilen)
    if a == 0:
        print("Ungültige Eingabe: 'a' darf nicht Null sein.")
        return
    
    # Berechnen von x
    x = (c - b) / a
    
    # Ausgabe der Lösung
    print(f"Die Lösung der Gleichung {a}x + {b} = {c} ist:")
    print("x =", x)

# Eingabe der Koeffizienten a, b und c durch den Benutzer
a = float(input("Geben Sie den Koeffizienten a ein: "))
b = float(input("Geben Sie den Koeffizienten b ein: "))
c = float(input("Geben Sie den Koeffizienten c ein: "))

# Aufruf der Funktion zum Lösen der linearen Gleichung
loese_lineare_gleichung(a, b, c)

So könnte man das Lösen…

Aber wenn du nur hier nachfragst wird das nichts! Du solltest es ja auch können.

Quelle: ChatGPT: ich kann zwar Python aber so ging schneller

Woher ich das weiß:Hobby – Ich Code in meiner Freizeit viel(Python und C#)

katzimausi123  12.05.2024, 18:17

Das ist Schrott.

0
katzimausi123  12.05.2024, 19:18
@evtldocha

kostet 250 Euro. bei mir gibt es außerdem keine lösungen, sondern nur ergebnisse.

0
katzimausi123  12.05.2024, 20:06
@Hemo20

nein. vergiss es. wenn überhaupt dann nur gegen geld. dann schreibe ich einen rpc.

0
Hemo20  12.05.2024, 20:08
@katzimausi123

Ein RPC ist aber doch was gaaaanz anderes! Aber wenn du dich damit auskennst kannst du uns doch einmal einer sachliche Nachricht schreiben warum der obige Quellcode schlecht ist.

0
Hemo20  12.05.2024, 20:11
@katzimausi123

RPC ermöglicht es einem Programm eine externe Funktion aufzurufen also als wäre sie lokal. Oder ist das falsch?

0
katzimausi123  12.05.2024, 20:12
@Hemo20

Das ist nicht ganz richtig. Wofür steht überhaupt die Abkürzung RPC?

0