Seite 1 von 1

Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 15:27
von Ticker
Moin,

ich bin blutiger Anfänger und wollte etwas coden um das übergeben von Werten auszuprobieren.
ich habe folgenden Code erstellt und nach Stunden des Probieren frage ich jetzt mal hier.

Es gibt Fehlermeldungen für Zeile 2 und 16 und ich komme nicht drauf.

aber sonst auch gerne mal sagen was ich besser machen könnte. Wie gesagt ich lerne.

Gruß Ticker

Code: Alles auswählen

def potentiate(basis, exponent):
    result = float,basis ** exponent
    return (result)

def output(result):
    print(result)


def query():
    basis = float, input("Geben Sie die BASIS ein:")
    exponent = float, input("Geben Sie den EXPONENTEN ein:")
    return (basis, exponent)


basis, exponent = query()
result = potentiate(basis, exponent)
output(result)/code]

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 15:41
von __deets__
Deine Syntax zur Konvertierung zu float ist Quatsch. Es muss

Code: Alles auswählen

basis = float(input(…))
sein. Der Rest sind Folgefehler. In potentiate muss kein float stehen, floats kommen schon rein.

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 16:05
von Ticker
Das rettet die Sache leider nicht.

Das ist die Fehlermeldung die jetzt angezeigt wird:
TypeError: unsupported operand type(s) for ** or pow(): 'tuple' and 'tuple'

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 16:31
von __blackjack__
@Ticker: Das kann nicht sein, denn wenn Du die Änderungen tatsächlich gemacht hättest, selbst ohne Nachzudenken und sie nicht nur bei `basis` anzuwenden, dürfte die Ausnahme nicht mehr in „'tuple' and 'tuple'“ enden, denn `basis` ist dann ja kein Tupel mehr.

Was genau hast Du denn jetzt nicht verstanden an den vorgeschlagenen Änderungen? Und hast Du verstanden warum diese Fehlermeldung beim ursprünglichen Code kommt? Welche Werte glaubst Du haben `basis` und `exponent`? Hast Du Deine Vermutung mal nachgeprüft in dem Du die Werte mit ``print(repr(…)`` ausgegeben hast? Falls das Ergebnis nicht Deinen Erwartungen entspricht, dann verfolge mal zurück wo das Problem entsteht. Im Betreff steht „Werte übergeben“ — hat das denn tatsächlich etwas mit dem Problem zu tun? Sind die Werte denn *vor* der Übergabe noch unproblematisch, oder besteht das Problem dort bereits?

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 16:54
von nezzcarth
Nebenbemerkung: "potentiate" ist in diesem Kontext m.W.n. nach falsch (es sei denn, es geht dir tatsächlich um Homöopathie ;) ). Wenn es ein Verb sein soll, wäre "exponentiate" korrekt, ansonsten sieht man in Programmiersprachen – darunter der Python-Standardbibliothek – oft so etwas wie "pow(er)" (von "raise to the power of" ...).

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 17:24
von Ticker
@nezzcarth
danke. :D

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 17:36
von Ticker
@blackjack
Ich habe die Änderungen am Code vorgenommen (überflüssige float´s entfernt)
Warum diese Fehlermeldung kam habe ich noch nicht ganz verstanden.
Ich habe mir die type´s von ´Basis´und ´Exponent´ im puery ausgeben lassen und es sind tupel obwohl ich sie als float´s deklariert habe.
Es ist also eher kein Problem der Werteübergabe.

wie gesagt ich stehe ganz am Anfang und habe das Gefühl ich sehe den Wald vor Bäumen nicht.

Das ist die Fehlermeldung:
raceback (most recent call last):
File "/Users/kaybelasus/PycharmProject/pythonProject/uebung/potenzieren/main.py", line 17, in <module>
result = potentiate(basis, exponent)
File "/Users/kaybelasus/PycharmProject/pythonProject/uebung/potenzieren/main.py", line 2, in potentiate
result = basis ** exponent
TypeError: unsupported operand type(s) for ** or pow(): 'tuple' and 'tuple'

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 17:50
von snafu
Und wie sieht query() derzeit aus? Anscheinend kommen da ja zwei Tupel raus. Falls der Code sich dort bisher nicht geändert hat, dann ist auch klar, warum es Tupel sind...

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 18:18
von Sirius3
In beiden deklariert man keine Variablen.
Du glaubst

Code: Alles auswählen

variable = Typ, wert
würde Variablen Typen zuweisen. Das ist falsch, wo auch immer Du das her hast. Das Komma erzeugt einfach nur ein Tupel.
Du willst einen String in einen float umwandeln.

Code: Alles auswählen

variable = float(wert)

Re: Werte übergeben

Verfasst: Sonntag 15. Oktober 2023, 21:17
von Ticker
Danke für die schnellen Antworten.
Ich werde das morgen mal durch gehen.