text n mal ausgeben Python?

3 Antworten

Die Pythonschste Variante wäre den Text in eine Liste zu packen, zu verfielfältigen und die Liste mit Join oder so auszugeben.

So was wie:

print("\n".join([text]*n))

Deine Lösung geht auch, aber du musst auf das Zählen aufpassen... Die erste Iteration ist i=0 und zählt mit. Für n=2 hast du also momentan: i=0, i=1, i=2 und damit eins zu viel.


bitblt  15.10.2021, 22:11

Genau so hätte ich das auch gemacht.

Schöne pythonstyle Lösung! :)

0

Noch keine "hilfreichste Antwort"? Dann versuche ich mal mein Glück. :P

Es gibt verschiedene Möglichkeiten, je nach Anforderung.

Die simpelste Möglichkeit ist einfach den Text zu multiplizieren:

print('Hallo' * 3) >> HalloHalloHallo

Oder soll der Text mit einem besonderen Trennzeichen verbunden sein, wie einem Komma, oder einem Zeilenumbruch?

print(','.join(['Hallo']*3)) >> Hallo,Hallo,Hallo

Funktionier natürlich auch mit einem Zeilenumbruch '\n' statt dem ','.

Muss das ganze in einer Funktion sein? Dann kannst du dir auch die Möglichkeit des Trennzeichens offenlassen:

def print_n_times(text: str, n: int, delimiter: str = ',') -> None:

  print(delimiter.join([text]*n))

# mit Komma als Standard-Trennzeichen
print_n_times('Hallo', 3)
# mit Zeilenumbruch
print_n_times('Hallo', 3, '\n')

Keine Ahnung, ob du es jemals nochmal brauchen wirst, aber vielleicht hilft es ja noch jemand anderem.

Das ist schon einmal gar nicht schlecht und macht schon fast das, was es tun soll.

Wenn du mit i = 0 anfängst und bis einschließlich i = 3 hochzählst, wird die Schleife 4-mal durchlaufen, statt 3-mal, da [0, 1, 2, 3] 4 Zahlen sind. Du solltest entweder bei i = 1 anfangen oder nur bis i < 3 (also bis i = 2) hochzählen. Also beispielsweise so...

def print_n_times(text, n):
    i = 0
    while i < n:
        print(text)
        i += 1

print_n_times("hallo", 3)

Des Weiteren weiß ich auch nicht, warum du nicht einfach eine for-Schleife, statt einer while-Schliefe verwendest. Beispielsweise dann so...

def print_n_times(text, n):
    for i in range(n):
        print(text)

print_n_times("hallo", 3)

Alternativ könnte man auch, statt mit einer Schleife n-mal den text in print reinzuwerfen, zunächst n Kopien von text mit "\n" (neue Zeile) dazwischen zusammensetzen und das dann in ein print reinwerfen.

def print_n_times(text, n):
    print("\n".join(n*[text]))

print_n_times("hallo", 3)