text n mal ausgeben Python?
Schreiben Sie eine Prozedur
print_n_times
, welche als erstes Argument einen Text und als zweites Argument eine positive Zahl
n
entgegennimmt. Die Prozedur soll den übergebenen Text
n
mal ausgeben, wobei jede Ausgabe auf eine neue Zeile kommt.
Das hab ich bisher:
def print_n_times(text, n):
i = 0
while i <= n:
print(text)
i += 1
print_n_times("hallo", 3)
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.
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)