/ / Python zagnieżdżonych obrazów pętli wyjściowej i odwrotnej - python, zagnieżdżone-pętle

Python zagnieżdżonych obrazów wyjściowych pętli i reverseal - python, zagnieżdżonych pętli

Próbuję napisać program, który wygląda mniej więcej tak, jeśli, powiedzmy, numer wejściowy to 6, lub coś w tym stylu, dane wyjściowe powinny wyglądać tak:

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

ale kiedy robię to tak, jak mi powiedziano, w ten właśnie sposób, ponieważ właśnie to powiedział mi kolega z klasy. :

    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("")

Dostaję:

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

Co ja robię źle? Proszę, powiedz mi, jak ustawić poprawnie linię, naprawdę byłbym wdzięczny, gdyby ktoś mógł mi w tym pomóc, abym mógł nauczyć się robić to sam, proszę, pomóż mi ...

Odpowiedzi:

2 dla odpowiedzi № 1

Jeśli twoje zadanie wymaga napisania kodu dokładnie tak, jak napisałeś, odpowiedź Kootza jest drogą do zrobienia.

Jednak bardziej uproszczonym sposobem na to jest użycie 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 dla odpowiedzi nr 2

Twoje pętle są nieco zawikłane, więc nieco uprościliśmy:

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)

Cieszyć się!


0 dla odpowiedzi № 3

To, czego chcesz w drugim zestawie pętli, toweź numer wiersza (licząc od 1) i wydrukuj tyle spacji (""), a następnie wydrukuj gwiazdki ("*") w pozostałej części wiersza. Więc jeśli i jest numerem wiersza, a j numerem kolumny (i indeksowaniem zaczyna się od 0), powinieneś wydrukować "", podczas gdy j <i + 1 i "*" inaczej. To daje:

# 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("")