Ich habe Probleme mit der Formatierung der Pyramide. Ich habe versucht, das Format beim Drucken aus der Schleife zu verwenden, aber das schien nicht zu funktionieren und bricht nur das Programm. Was wären unterschiedliche Möglichkeiten, die Ausgabe zu formatieren? Das einzige Problem, das ich habe, ist, wenn ich 10 und höher drucke, wenn es zweistellig ist. Was wäre der beste Ansatz, um die Druckausgabe zu formatieren? Ich habe verschiedene Weise versucht, konnte aber nicht die Formatierung funktioniert innerhalb der Schleife von der Dokumentation https://docs.python.org/3.5/library/string.html#formatstringsWie druckt man die Formatierung in Python mit Zeichenketten?
Hier ist das Skript:
userinput = int(input("Enter the number of lines: ")) # User input of the total number of lines
userinput = userinput + 1 # adding a value of 1 additionally with the user input to make numbers even
for i in range(1, userinput): # Loop through lines from 1 to userinput
for j in range(userinput - i): # printing spaces, 1 at a time from j = 1 to j = userinput - i
print(" ", end = " ")
for j in range(i, 0, -1): # printing number decreasing from the line number j to 1
print(j, end = " ")
for j in range(2,i + 1): # Printing number increasing from 2 to line number j
print(j, end = " ")
print()
j += 1
Der Ausgang, wenn sein kleiner als 10
Enter the number of lines: 9
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
6 5 4 3 2 1 2 3 4 5 6
7 6 5 4 3 2 1 2 3 4 5 6 7
8 7 6 5 4 3 2 1 2 3 4 5 6 7 8
9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9
Der Ausgang, wenn es 15 oder mehr:
Enter the number of lines: 15
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
6 5 4 3 2 1 2 3 4 5 6
7 6 5 4 3 2 1 2 3 4 5 6 7
8 7 6 5 4 3 2 1 2 3 4 5 6 7 8
9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9
10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10
11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11
12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12
13 12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12 13
14 13 12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Wenn ich einen zusätzlichen Platz für 10 und höher reserviert habe, sieht hier mein outout so aus: (Die Punkte wurden verwendet, um von leeren Räumen zu unterscheiden, alles was ich tat, war ein " "
Anführungszeichen am Anfang des Ausdrucks.
Enter the number of lines: 12
. . . . . . . . . . . . 1
. . . . . . . . . . . 2 1 2
. . . . . . . . . . 3 2 1 2 3
. . . . . . . . . 4 3 2 1 2 3 4
. . . . . . . . 5 4 3 2 1 2 3 4 5
. . . . . . . 6 5 4 3 2 1 2 3 4 5 6
. . . . . . 7 6 5 4 3 2 1 2 3 4 5 6 7
. . . . . 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8
. . . . 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9
. . . 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10
. . 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11
. 12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12
Hier ist, was ich habe
for j in range(userinput - i): # printing spaces, 1 at a time from j = 1 to j = userinput - i
print(".", end = " ")
for j in range(i, 0, -1): # printing number decreasing from the line number j to 1
print(" ", j, end = "")
for j in range(2,i + 1): # Printing number increasing from 2 to line number j
print(" ", j, end = "")
for j in range(userinput - i): # printing spaces, 1 at a time from j = 1 to j = userinput - i
print(" ", end = " ")
hier durch Hinzufügen aditional Raum versucht zu ändern ist der ideale Ausgang von dem, was ich zu tun versuche:
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
6 5 4 3 2 1 2 3 4 5 6
7 6 5 4 3 2 1 2 3 4 5 6 7
8 7 6 5 4 3 2 1 2 3 4 5 6 7 8
9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9
10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10
11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11
12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12
13 12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12 13
14 13 12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Thank you!
Danke! Wenn Sie Zeit haben, weitere Erklärungen hinzuzufügen, wäre das großartig, denn das versuche ich mehr zu verstehen. Ich werde es versuchen, um es zu verstehen. – Dmitriy
@Dmitriy, ich habe meine Antwort mit einer Erklärung aktualisiert. Ich hoffe, es hilft. – Paradoxinabox
danke für die Erklärung. Eine Sache, die ich versuche zu verstehen, ist 'spaces =" "* (input_length + 1 - len (str (j)))' also, wenn ich richtig verstanden habe, wenn es zwei Ziffern gibt, was es macht ist '" "* (2 + 1 - 1) '? da das 'j' technisch auch 1 ist? Ich versuche zu verstehen, wie wir die Räume berechnen, die Logik dahinter. Vielen Dank! – Dmitriy