Return Value None

Code-Stücke können hier veröffentlicht werden.
Antworten
Stanley2206
User
Beiträge: 3
Registriert: Freitag 28. Juni 2019, 17:20

Hi Leute,

ich bin ganz neu mit Python unterwegs, ich habe im Internet eine einfache Aufgabe zum Nachstellen einer Ausgabe gefunden. Allerdings gibt es keine ausführliche Lösungsbeschreibung für das Problem. Also im Endeffekt macht die Funktion alles was ich will, es liefert aber unter der Ausgabe ein None und ich habe keine Ahnung wie ich das wegbekomme. Könnte mir hier jemand behilflich sein?

Code: Alles auswählen

def diagram(x,y):
    for i in range(y):
        print("*" + "----*" * x)
        for i in range(3):
            print("|    " * (x +1))
    print("*" + "----*" * 6)

print(diagram(6,3))
Ich weiß, dass es unsauber programmiert ist, aber ich dachte mir, dass ich es erstmal zum laufen bekommen möchte.

Danke und VG
Stanley
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Stanley2206: Beschreibe doch mal was jedes `print()` in dem Programm Deiner Meinung nach ausgibt, und warum es das tut.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Stanley2206
User
Beiträge: 3
Registriert: Freitag 28. Juni 2019, 17:20

Ich skizziere mal einen Durchlauf
*----* * 6 bedingt durch Zeile 2 und 3
|
|
| für jede der oben gezeichneten Linien nach rechts
Und dann kommt nur noch die Abschlusslinie.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@Stanley2206: None ist der Standard-Rückgabewert, wenn nichts anderes angegeben wird. Da deine Funktion nur mit print()-Ausgaben arbeitet und nichts per return-Anweisung zurückliefert, ist das Ergebnis des Funktionsaufrufs also None. Die Zeile mit print(diagram(6,3)) sorgt dafür, dass dieses Ergebnis nach Ausführung der Funktion in die Konsole geschrieben wird. Also nachdem die Funktion ihre ganzen print()-Aufrufe durch hat, kommt der Rückgabewert auf den Bildschirm. Das lässt sich vermeiden, wenn du das print() am Ende weglässt, also einfach nur diagram(6,3) schreibst.
Stanley2206
User
Beiträge: 3
Registriert: Freitag 28. Juni 2019, 17:20

Ach krass, manchmal kann es so einfach sein. Danke, hab’s verstanden!!
Antworten