Bin relativ neu bei Programmieren und gehe gerade in die 9te Klasse und frage mich warum meine Code hier nicht richtig funktioniert:
Man soll Länge u. Breite einlesen und zu einer Figur machen welche durch quer oder hoch Eingabe verändert werden kann
def Laenge_u_Breite(laenge, breite) -> int:
""" Fragt den Benutzer welche Laenge und Breite er haben will und speichert sie dann ab, solange
sie positiv sind """
laenge = int(input("Länge? "))
while (laenge < 0):
laenge = int(input("Länge (muss positiv sein) ? "))
breite = int(input("Breite? "))
while (breite < 0):
breite = int(input("Breite (muss positiv sein) ? "))
return (laenge, breite)
def quer_o_Hoch(qoh) -> str:
""" Fragt den Benutzer ob die Figur Hoch oder quer seien soll und speichert das Ergebniss dann ab, solange
ein q oder ein h eingegeben worden ist """
qoh = input("(q)uer oder (h)och? ")
while (qoh != "q" and qoh != "h"):
qoh = input("q oder h? ")
return (qoh)
laenge = 0
breite = 0
qoh = ""
str = ""
Laenge_u_Breite(laenge, breite)
quer_o_Hoch(qoh)
Figur(laenge, breite, qoh, str)
Ersten: Ich weis die Namen für meine Funktion sind nicht die besten aber es funktioniert für mich
Zweitens: Wenn ich das Programm startet dann übernimmt Python die Variablen von Funktion zu Funktion nicht.
Dieses Problem sollte doch eigentlich durch Return sehr einfach gelöst werden aber ich komme einfach nicht darauf was ich falsch gemacht habe
Für jetzt muss ich nur wissen wie ich alles übernehmen kann
Danke für Eure Hilfe!
Return Hilfe
Hallo,
das was du mit 'return' zurück gibst, das musst du an einen Namen binden, sonst kannst du den zurückgegebenen Wert gar nicht aufrufen/weiterverarbeiten.
Die Funktion 'return_something' gibt 'Hallo' zurück. Damit man mit 'Hallo' jetzt was machen kann, muss man die Rückgabe an einen Namen binden, in dem Fall an 'text'.
Grüße
Dennis
das was du mit 'return' zurück gibst, das musst du an einen Namen binden, sonst kannst du den zurückgegebenen Wert gar nicht aufrufen/weiterverarbeiten.
Code: Alles auswählen
def return_something():
return 'Hallo'
text = return_something()
print(text)
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
- __blackjack__
- User
- Beiträge: 14065
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Wobei das etwas zu einschränkend formuliert ist. Man *muss* den Wert nicht erst an einen Namen binden um ihn verwenden zu können:
@Void: Die Funktionen bekommen Argumente die sinnlos sind und nirgends verwendet werden. Das gleiche gilt für die unnötigen Definitionen von Namen wo die Werte nirgends verwendet werden. (Python ist definitv nicht QBasic und Parameterübergabe ist *nicht* „call by reference“.)
`str` ist der Name einer eingebauten Funktion bzw. eines eingebauten Datentyps. Den Namen sollte man nicht an einen anderen Wert binden. Denn ab da kann man `str()` nicht mehr verwenden und Leser sind verwirrt wenn `str` etwas anderes bedeutet als sie es gewohnt sind.
Womit prüfst Du denn die Typannotationen? Da ist ja ganz offensichtlich ein Fehler den dieses Werkzeug meldet. Solltest Du die Typannotationen nicht prüfen lassen, und zwar ständig, also mindestens beim Speichern der Datei, allerspätestens bevor Du den Quelltext irgend wem anders zeigst, dann lass die Typannotationen bleiben, denn *falsche* Typannotationen sind noch schlimmer als inhaltlich falsche Kommentare. Denn auf Typannotationen verlässt sich der Leser noch stärker, weil die ja *geprüft* sind/sein sollten. Dafür sind die ja da.
Wenn Du weisst das die Namen nicht die besten sind, warum verbesserst Du sie nicht? Funktionsnamen werden, wie fast alle anderen Namen klein_mit_unterstrichen geschrieben. Namen sollten keine kryptischen Abkürzungen enthalten. Und Funktionen und Methoden werden üblicherweise nach der Tätigkeit benannt die sie durchführen, damit der Leser weiss was die machen und sie leichter von eher passiven Werten unterscheidbar sind.
Um Bedingungen bei ``while`` gehören keine unnötigen Klammern. Ebenso nicht um einzelne Werte bei ``return``. Bei Tupeln kann man sie setzen, auch wenn sie technisch nicht notwendig sind, um den Quelltext an der Stelle deutlicher zu machen. Das hat aber nichts mit einer ``return``-Anweisung zu tun, die da vielleicht davor steht.
Code: Alles auswählen
def return_something():
return "Hallo"
print(return_something())
`str` ist der Name einer eingebauten Funktion bzw. eines eingebauten Datentyps. Den Namen sollte man nicht an einen anderen Wert binden. Denn ab da kann man `str()` nicht mehr verwenden und Leser sind verwirrt wenn `str` etwas anderes bedeutet als sie es gewohnt sind.
Womit prüfst Du denn die Typannotationen? Da ist ja ganz offensichtlich ein Fehler den dieses Werkzeug meldet. Solltest Du die Typannotationen nicht prüfen lassen, und zwar ständig, also mindestens beim Speichern der Datei, allerspätestens bevor Du den Quelltext irgend wem anders zeigst, dann lass die Typannotationen bleiben, denn *falsche* Typannotationen sind noch schlimmer als inhaltlich falsche Kommentare. Denn auf Typannotationen verlässt sich der Leser noch stärker, weil die ja *geprüft* sind/sein sollten. Dafür sind die ja da.
Wenn Du weisst das die Namen nicht die besten sind, warum verbesserst Du sie nicht? Funktionsnamen werden, wie fast alle anderen Namen klein_mit_unterstrichen geschrieben. Namen sollten keine kryptischen Abkürzungen enthalten. Und Funktionen und Methoden werden üblicherweise nach der Tätigkeit benannt die sie durchführen, damit der Leser weiss was die machen und sie leichter von eher passiven Werten unterscheidbar sind.
Um Bedingungen bei ``while`` gehören keine unnötigen Klammern. Ebenso nicht um einzelne Werte bei ``return``. Bei Tupeln kann man sie setzen, auch wenn sie technisch nicht notwendig sind, um den Quelltext an der Stelle deutlicher zu machen. Das hat aber nichts mit einer ``return``-Anweisung zu tun, die da vielleicht davor steht.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari