/ / python verschachtelte Schleifenausgabeart und reverseal - Python, verschachtelte Schleifen

Python Nested Loop-Ausgabe Kunst und Reverse - Python, Nested-Loops

Ich versuche, ein Programm zu schreiben, das ungefähr so ​​aussieht, wenn beispielsweise die Eingabezahl 6 war oder die Ausgabe so aussehen sollte:

         *
**
***
****
*****
******
*****
****
***
**
*

Aber wenn ich es so mache, wie mir gesagt wurde, genau so, weil es mir ein Klassenkamerad befahl. :

    n = int(input("Enter a value for n: "))
for i in range(1, n + 1):
for j in range(n):
if n - j > i:
print(" ", end = " ")
else:
print("*", end = " ")
print("")

for i in range(1, n):
for j in range(n):
if n - j < i:
print(" ", end = " ")
else:
print("*", end = " ")
print("")

Ich bekomme:

         *
**
***
****
*****
******
*****
****
***
**
*

Was mache ich falsch? Bitte sagen Sie mir, wie ich es richtig anordnen kann. Ich würde es wirklich sehr schätzen, wenn mir jemand dabei helfen könnte, so dass ich es selbst lernen kann. Helfen Sie mir bitte ...

Antworten:

2 für die Antwort № 1

Wenn Sie bei Ihrer Aufgabe den Code genau so schreiben müssen, wie Sie ihn gebucht haben, ist die Antwort von Austin Kootz der richtige Weg.

Eine vereinfachte Methode ist jedoch die Verwendung von ljust

n = 6

for x in range(n - 1, 0, -1):
print "".ljust(x, " ") + "*".ljust(n - x, "*")

for x in range(n):
print "".ljust(x, " ") + "*".ljust(n - x, "*")

2 für die Antwort № 2

Ihre Loops sind etwas zu kompliziert, daher habe ich mich etwas vereinfacht:

n = int(input("Enter a value for n: "))

for x in range(n):
out = ""
for y in range(n-x):
out = out +" "
for y in range(x):
out = out +"*"
print(out)
for x in range(n):
out = ""
for y in range(x):
out = out +" "
for y in range(n-x):
out = out +"*"
print(out)

Genießen!


0 für die Antwort № 3

Was Sie in der zweiten Gruppe von Schleifen wollen, ist zuNehmen Sie die Zeilennummer (Zählen von 1) und drucken Sie so viele Leerzeichen ("") und dann Sternchen ("*") für den Rest der Zeile. Wenn also i die Zeilennummer und j die Spaltennummer ist (und die Indizierung bei 0 beginnt), sollten Sie "" drucken, während j <i + 1 und "*" andernfalls ist. Das gibt:

# The top part of the pyramid
for i in range(1, n + 1):
for j in range(n):
if n - j > i:
print(" ", end = " ")
else:
print("*", end = " ")
print("")
# The bottom half of the pyramid
for i in range(n):
for j in range(n):
# Print spaces in the beginning of the row
# (while the column number is less than the row number)
if j < i + 1:
print(" ", end = " ")
# Print asterisks for the rest of the row
else:
print("*", end = " ")
print("")