Seite 1 von 1

Frage zu print()

Verfasst: Mittwoch 23. November 2016, 15:01
von Bindl
Hi zusammen,

ich soll folgendes Porgramm schreiben:
Schreiben Sie eine Funktion, die je nach übergebener Zahl eine Ausgabe nach folgendem
Muster liefert.
Ausgabe bei Aufruf mit übergebener Zahl 5:
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5

Nun habe ich da eine Lösung gefunden. Nur bekomme ich zwischen den Zahlen kein Leerzeichen hin.

Code: Alles auswählen

def matrix(i):
    i=1
    while i<=a:
        print(a*str(i))
        i+=1
    return matrix

a=int(input("Zeilen und Spalten: "))
matrix(a)
Ich lasse je nach Eingabe i, a-mal Ausgeben und das bei i Zeilen.
Ich kenn bei print(), die end=" " Funktion:
Sie verhindert den Zeilenumbruch und fügt in diesem Bsp. ein Leerzeichen hinzu.
sep=" " kenne ich auch und das wäre hier wohl das richtige, da es zwischen die Strings ein Leerzeichen hinzufügt. Nur erkennt Python a*str(i) als eine Zeichenkette an.
Was kann ich hier machen?

Re: Frage zu print()

Verfasst: Mittwoch 23. November 2016, 15:19
von noisefloor
Hallo,

schau' dir mal die `format()` Methode von Strings an.

Gruß, noisefloor

Re: Frage zu print()

Verfasst: Mittwoch 23. November 2016, 15:33
von BlackJack
@Bindl: Hier würde man eine ``for-`` statt einer ``while``-Schleife verwenden.

Es gibt mehrere Varianten. Du könntest eine Zeichenkette mit Zahl + ein Leerzeichen erstellen und *die* Multiplizieren. Hat den Nachteil das dann auch am Ende der Zeile noch ein Leerzeichen ausgegeben wird, was man aber nicht sieht. Oder Du erstellst eine Liste mit den Zahlen und schaust mal wie die Syntax bei Funktionsaufrufen aussieht um aus einer Liste (oder einer anderen Sequenz) einzelne Aufrufparameter macht. Oder Du schreibst statt *eines* `print()`-Aufrufs eine Schleife die die Zahlen einer Zeile nacheinander ausgibt. Oder Du erstellst eine Liste mit den Zahlen einer Zeile als Zeichenkette und verwendest dann die `join()`-Methode von Zeichenketten um die zu *einer* Zeichenkette zusammenzufügen bei der die einzelnen Elemente durch ein Leerzeichen getrennt sind. Oder…