/ arte de saída de loop aninhado / python e reverso - python, aninhado em loops

arte de saída de loop aninhado python e inversão - python, aninhado-laços

Eu estou tentando escrever um programa que se pareça com isso se, digamos, o número de entrada for 6, ou algo assim, a saída deve ficar assim:

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

mas quando faço isso, como me foi dito, especificamente, porque é isso que um colega me disse para fazer. :

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

Eu recebo:

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

O que estou fazendo de errado? Por favor, diga-me como obtê-lo para alinhar corretamente, eu realmente aprecio se alguém poderia me ajudar com isso para que eu possa aprender a fazer isso sozinho, por favor, me ajude ...

Respostas:

2 para resposta № 1

Se sua tarefa exige que você escreva o código exatamente como você postou, a resposta de Austin Kootz é o caminho a percorrer.

No entanto, uma maneira mais simplificada de fazer isso é usando 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 para resposta № 2

Seus loops são um pouco complicados, então eu simplifiquei um pouco:

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)

Apreciar!


0 para resposta № 3

O que você quer no segundo conjunto de loops épegue o número da linha (contando a partir de 1) e imprima esses espaços ("") e imprima asteriscos ("*") pelo resto da linha. Então, se i é o número da linha ej o número da coluna (e a indexação começa em 0), você deve imprimir "" enquanto j <i + 1 e "*" caso contrário. Isto dá:

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