Permalänk

Uppgift i Python

Hej! Det är så att jag är nybörjare i Python och har en uppgift jag fastnat på. Har suttit i någon timme och klarar inte av att lösa den.

Uppgiften ser ut på följande sätt:

Gör ett program som med nästlade loopar skriver ut nedanstående figur:

http://imgur.com/fBALWXj

Lägg sedan in en loop som skriver ut mellanslag i början av varje rad så att
du får fram det första mönstret. För att bara få fram figurerna kan man göra på
olika sätt, varav de flesta är enklare, men nu gör vi för övnings skull det
hela med loopar där varje print-instruktion bara skriver ut ett tecken.

((Man skall alltså först göra den undre figuren och sedan den övre))

Detta är vad jag har gjort:

for rad in range(1,11):
for s in range(rad):
print('*',end='')
print()

for rad in range(9,0,-1):
for s in range(rad):
print(' ',end='')
print()

Jag har alltså fått ut den andra figuren, och mellanrummen på den första figuren. Det tar dock stopp när jag ska få "*" att skrivas ut efter mellanrummen. Jag räknar inte med att ni ska lösa uppgiften åt mig men skulle vara snällt om någon kunde komma med något tips/ledtråd på hur jag skall gå till väga!

Tack på förhand!

Permalänk
Medlem

Varje rad är 10 tecken, om du har en * så har du 9 mellanslag, 2 * => 8mellanslag, osv
Med andra ord, antalet mellanslag ges av (10 - "antal *")

Liten ledtråd:

for rad in range(1,11): #TODO: Innan du skriver ut rad antal '*' måste du skriva ut (10 - rad) antal mellanslag for s in range(rad): print('*',end='') print()

Ändrade "11 tecken" till "10 tecken" då range() ju inte tar med övre värdet.
Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk

Hej! Tack så mycket för svar förstår inte riktigt vad du menar tyvärr haha.. :/ Vill du ge mig ännu en ledtråd vad jag ska använda mig av?

Permalänk
Medlem

I ditt första inlägg har du koden:

for s in range(rad): print(' ',end='')

Som skriver ut "rad antal" mellanslag. (Där "rad" ju bara är ett heltal som kommer från den yttre loopen).

Följande skulle skriva ut rad+1 antal mellanslag

for s in range(rad+1): print(' ',end='')

Och detta skulle skriva ut rad-1 antal mellanslag:

for s in range(rad-1): print(' ',end='')

Hur skriver du då ut 10-rad antal mellanslag?

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk
Medlem

Om du ska skriva 10 tecken totalt... på första raden vill du skriva en stjärna och 9 mellanrum, på andra raden två stjärnor och 8 mellanrum osv.
Du vill altså skriva "rad" antal stjärnor och 10-"rad" antal mellanrum för varje rad 1-10.

observera att du kan printa upprepade tecken genom:

print('A'*22)

t.ex. kan man då göra uppgifterna i stil med:

for i in range(1,11): print("%s%s" % ('*'*i, ' '*(10-i)))

samt

for i in range(1,11): print("%s%s" % (' '*(10-i), '*'*i))

Visa signatur

weeeee

Permalänk

Tack så jättemycket för all hjälp! Är nu klar med uppgiften och har fått MYCKET mer förståelse för loopar!!