Wie funktioniert dieser Code?

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
Lukas_25025
User
Beiträge: 13
Registriert: Sonntag 16. Mai 2021, 10:20

Ich bin gerade dabei, Python zu lernen und hab den Code hier gesehen:
Kann mir jemand beschreiben, wie er funktioniert?

Code: Alles auswählen

while True:
    def pattern(n):
        x = 0
        for i in range(0, n):
            x += 1
            for j in range (0, i + 1 ):
                print(x, end = ' ')
            print('\r')

    pattern_number = int(input("enter a number: "))

    pattern(pattern_number)
    new_number = input('Do you want to test it with an another number? \n')
    if new_number == 'no' or new_number == 'nein':
        break
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

Hast Du das Beispiel laufen lassen, um nachzuvollziehen, was geschieht? Der Code ist recht umständlich, das folgende Beispiel ergibt die gleiche Ausgabe:

Code: Alles auswählen

def pattern(n):
    for i in range(1, n+1):
        print(" ".join([str(i)] * i))
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Die Frage ist jetzt etwas sehr breit. Was konkret verstehst du nicht? x = 0? Oder etwas anderes?

Man kann auf jeden Fall schon sagen, dass die Funktion pattern nicht in der Schleife definiert werden sollte.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du den Code gesehen hast, dann solltest Du ihn schnell unter "so nicht machen" abspeichern.
Funktionen definiert man nicht innerhalb von Schleifen.
`x` enthält immer den um 1 erhöhten Wert von `i`, ist also überflüssig. Ein '\r' richtet jetzt hier keinen großen Schaden an, ist aber auch unnötig verwirrend.
Bei "enter a number" würde der Nutzer gerne wissen, für was die Zahl den gut sein soll.
Bei einer in Englisch gestellten Frage würde ich jetzt nicht erwarten, dass ich eine Antwort auf Deutsch geben kann.

Code: Alles auswählen

def pattern(n):
    for i in range(1, n + 1):
        for j in range(i):
            print(i, end=' ')
        print()

while True:
    pattern_number = int(input("enter a number: "))
    pattern(pattern_number)
    retry = input('Do you want to test it with an another number? \n')
    if retry not in ['yes', 'ja']:
        break
Und was konkret verstehst Du an dem Code nicht?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich denke mal der ist von hier https://medium.com/edureka/python-patte ... e1e764a42f oder einer aehnlichen Seite, tut, was er soll, und jetzt muessen wir nur noch die Erklaerung liefern, damit der Lehrer/Dozent zufrieden ist....
Lukas_25025
User
Beiträge: 13
Registriert: Sonntag 16. Mai 2021, 10:20

Mir geht es um die Stelle wo die 2. for Schleife beginnt, die kapier ich nicht, alles davor und danach ist mir klar, aber die 2 for Schleife versteh ich nicht
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Lukas_25025,

das sind ja nur zwei Zeilen:

Code: Alles auswählen

for j in range (0, i + 1 ):
    print(x, end = ' ')
Da wird wiederholt der Wert von x plus einem Leerzeichen (end=' ') ausgegeben. "end" wäre normalerweise "\n" - also ein Zeilenumbruch. Der wurde jetzt durch " " ersetzt, daher wird alles in eine Zeile ausgegeben.
Antworten