ÖVNINGSUPPGIFT

Uppgift 8 - Julgranen

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: While-loopen, For-loopen

Skriv ut en julgran i Python

Skriv ett program som skriver ut en julgran enligt följande specifikation.

nmbr_of_rows = 10;
nmbr_of_cols = 10;

ger följande utskrift.

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

och

nmbr_of_rows = 5;
nmbr_of_cols = 5;

ger

     *
    ***
   *****
  *******
 *********
Ledtråd

Försök hitta ett samband hur antal asterisker (*) växer med antal rader.

Ledtråd

På rad i, räknat från 0, skrivs 2 * i + 1 asterisker. Det ger 1, 3, 5 och så vidare.

Använd parametern end="" i print-funktionen för att skriva ut flera textsträngar på samma rad.

Exempel:

print("1234", end="")
print("5678", end="")

Skriver ut textsträngen:

12345678

Medans

print("1234")
print("5678")

skriver ut:

1234

5678

Svar
nmbr_of_rows = 10
nmbr_of_cols = 10

# Loopa igenom antal rader
for i in range(nmbr_of_rows):

    # Loopa igenom antal blankslag " "
    for j in range(nmbr_of_cols - i):
        print(" ", end ="")
    
    # Loopa igenom antal asteriks
    k = 0
    while (k < (2 * i + 1)) :
        print("*", end ="")
        k += 1

    # Skriv ut en ny rad
    print()

Förklaring

Den yttre loopen går igenom raderna. Första inre loopen skriver mellanslag och den andra skriver 2 * i + 1 stjärnor. Båda antalen är kända i förväg, så en for-loop passar även för stjärnorna. Här används while för att öva båda looptyperna.

I Python kan man skriva ut text på samma rad genom att lägga till parametern end="" i print-funktionen.

Testa ändra värdena på nmbr_of_rows och nmbr_of_cols och se hur granen växer och minskar!