Seite 1 von 1

verschachtelte for schleife

Verfasst: Montag 16. Dezember 2013, 12:49
von nfehren
Servus,
Bin grad dabei n kleines Progrämmchen zu schreiben, das zeilen und spaltenanzahl ließt und dann daraus ein Rechteck aus Sternchen macht.

Bleibe grade nur an der For- hängen. In der Ausbildung lernen wir mit C# und das wandele ich jetzt sozusagen in Python3 um.

Hier ist mein Code:

Code: Alles auswählen

#!/usr/bin/python3

zeile = input("Bitte geben sie die Zeilenanzahl an:\n")
spalte = input("Bitte geben sie die Spaltenanzahl an:\n")

for i =0; <= zeile:
    for j = 0; j<=spalte:
        print ("*")
    print("\n")
Bei den beiden "for's" meckert er..

Danke für Antworten :)

Re: verschachtelte for schleife

Verfasst: Montag 16. Dezember 2013, 13:05
von BlackJack
@nfehren: Das ist ja auch keine gültige Python-Syntax. Du erwartest jetzt aber nicht ernsthaft das Dir jemand die Python-Dokumentation oder ein Grundlagentutorial vorliest, oder? Bei der Gelegenheit kannst Du auch gleich nachlesen was die `input()`-Funktion zurück gibt, also insbesondere welchen Typ die Werte haben.

Edit: Code 1:1 aus anderen Programmiersprachen zu übertragen führt übrigens häufig zu unidiomatischem Quelltext in der Zielsprache. Zumindest die innere Schleife würde man sich in Python zum Beispiel sparen weil Zeichenketten eine praktische Operation bieten um eine Zeichenkette aus Wiederholungen einer anderen Zeichenkette zu erstellen.

Code: Alles auswählen

from itertools import repeat


def main():
    column_count = 42
    row_count = 23
    print('\n'.join(repeat('*' * column_count, row_count)))


if __name__ == '__main__':
    main()

Re: verschachtelte for schleife

Verfasst: Montag 16. Dezember 2013, 13:12
von nfehren
BlackJack hat geschrieben:@nfehren: Das ist ja auch keine gültige Python-Syntax. Du erwartest jetzt aber nicht ernsthaft das Dir jemand die Python-Dokumentation oder ein Grundlagentutorial vorliest, oder? Bei der Gelegenheit kannst Du auch gleich nachlesen was die `input()`-Funktion zurück gibt, also insbesondere welchen Typ die Werte haben.
War ne dumme Frage sorry :lol:
hab den code jetzt verbessert:

Code: Alles auswählen

#!/usr/bin/python3

zeile = int(input("Bitte geben sie die Zeilenanzahl an:\n"))
spalte = int(input("Bitte geben sie die Spaltenanzahl an:\n"))



for i in range(0, zeile):
    out = ""
    for j in range(0, spalte):
        out += "*"
    print(out)

Re: verschachtelte for schleife

Verfasst: Montag 16. Dezember 2013, 13:33
von /me
Das lässt sich noch deutlich verkürzen wenn man im Tutorial zum Thema Strings gelesen hat, dass mit dem *-Operator eine String-Wiederholung möglich ist.

Code: Alles auswählen

for i in range(zeile):
    print('*' * spalte)
Man könnte es mittels join auch noch auf eine Zeile eindampfen.

Code: Alles auswählen

print('\n'.join('*' * spalte for i in range(zeile)))

Re: verschachtelte for schleife

Verfasst: Montag 16. Dezember 2013, 14:58
von snafu
Bei geschickter Nutzung der ``print()``-Funktion kann man sich das ``'\n'.join()`` sogar sparen:

Code: Alles auswählen

print(*repeat('*' * columns, lines), sep='\n')
Zugegeben sind da jetzt ganz schön viele Sternchen im Code. ^^

Re: verschachtelte for schleife

Verfasst: Montag 16. Dezember 2013, 15:03
von BlackJack
@snafu: Viele Sternchen passt doch zu Weihnachten. ;-)

Re: verschachtelte for schleife

Verfasst: Montag 16. Dezember 2013, 15:05
von snafu
Wobei das ja eher Flocken wären. Passt aber genau so. Ich frag mich schon, warum die nicht aus meiner Codezeile schweben... :o

Re: verschachtelte for schleife

Verfasst: Montag 16. Dezember 2013, 15:37
von nfehren
Vielen Danke für eure Antworten!!
Ist echt ein super Forum hier muss ich echt sagen :)