Werte übergeben

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
Ticker
User
Beiträge: 7
Registriert: Montag 12. Juni 2023, 12:02

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

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.
Ticker
User
Beiträge: 7
Registriert: Montag 12. Juni 2023, 12:02

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'
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

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" ...).
Ticker
User
Beiträge: 7
Registriert: Montag 12. Juni 2023, 12:02

@nezzcarth
danke. :D
Ticker
User
Beiträge: 7
Registriert: Montag 12. Juni 2023, 12:02

@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'
Benutzeravatar
snafu
User
Beiträge: 6868
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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

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)
Ticker
User
Beiträge: 7
Registriert: Montag 12. Juni 2023, 12:02

Danke für die schnellen Antworten.
Ich werde das morgen mal durch gehen.
Antworten