Tillbaka till Sommarprogrammering

python

Python är det språk som vi använder på Alströmergymnasiet för att lära oss programmera. Det finns flera fördelar med python och det som många uppskattar är att det är enkelt att komma igång med. För att kunna programmera i python behöver du en utvecklingsmiljö och denna går att ladda ner till en dator men det går också att programmera online genom en tjänst som heter repl.it. Det är denna tjänst som vi skall använda när vi programmerar. Följ länken och skapa ett eget konto kopplat till denna sommarkursen.

Jag tror på att lära sig programmera genom att göra uppgifter och steg för steg följa hur man kodar. När du känner dig trygg i dessa grundläggande koder så är det enklare att göra egna saker. Vi börjar med lite grundläggande programmering.

Grunderna

# En kommentar skrivs på en rad som börjar med tecknet "#", raden kommer också få en annan färg. 
# print() används för att skriva ut
# En sträng (text) ramas in av "dubbelfnuttar" eller 'enkelfnuttar'
print ('Hello World')

# Tal använder inga fnuttar
print(3)

# Vi kan göra en beräkning och skriva ut på samma rad. Det som står inne i parentesen körs först.
print(3+4)

# Kombinera text och tal/beräkningar kan göras på flera olika sätt. "," - kommatecken är det enklaste.
print("3 + 4 = ", 3 + 4)

# Här är ett alternativ där vi använder oss av format()-funtionen. "{}" talar om att något skall skrivas ut här, vad som skrivs ut beror på vad som skrivs i format()-funktionen
print("3 + 4 = {}".format(3+4))

# Ibland vill vi använda variabler
tal1 = 3
tal2 = 4

# Vi kan skriva ut svaret på följande sätt:
print(tal1 + tal2)

# Om vi vill skriva ut hela uträkningen så kan vi använda formatfunktionen, tänk på att {} markerar att något skall skrivas ut, har vi inte angivit någon ordning så skrivs värden ut i ordning.
print("{} + {} = {}".format(tal1, tal2, tal1+tal2))

# Vi kan också skriva det på följande sätt..
print("{0} + {1} = {2}".format(tal1, tal2, tal1+tal2))
# .. för att förtydliga att de skall skrivas i den ordningen, i datorns värd så börjar man räkna från 0.

# Om vi vill mata in något till programmet så behöver vi använda funktionen input()
# Inne i funktionen skrier vi den texten som vi vill skriva ut.
namn = input("Vad heter du? ")
print("Hej {}!".format(namn))

# Om vi vill mata in ett tal så måste vi göra om texten som du skriver in till ett tal.
tal1 = int(input("Skriv in det första talet: "))
tal2 = int(input("Skriv in det andra talet: "))
# Sedan kan vi skriva ut talet med uträkning och svar
print("{} + {} = {}".format(tal1, tal2, tal1+tal2))

# Om vi vill jobba med decimaltal så går det också. I datorns värld så skrivs decimaltal med punkt "."
tal1 = 5.6
tal2 = 3.3
print("{0} + {1} = {2}".format(tal1, tal2, tal1+tal2))

# Troligtvis blir de nu ett avrundningsfel och det beror på hur datorn lagrar decimalerna. Vi kan snygga till detta genom att hjälpa datorn att bestämma hur många decimaler som skall skrivas ut.
print("{0:.1f} + {1:.1f} = {2:.1f}".format(tal1, tal2, tal1+tal2))
# Det som finns efter : talar om hur talet skall formateras. Här säger vi att det skall formateras med 1 decimal och att datatypen skall vara float vilket är samma som decimaltal.

# Om vi nu skall mata in egna decimaltal för att beräkna
tal1 = float(input("Skriv in det första decimaltalet: "))
tal2 = float(input("Skriv in det andra decimaltalet: "))
print("Beräkningen blir:\n{0:.1f} + {1:.1f} = {2:.1f}".format(tal1, tal2, tal1+tal2))
# Här lägger jag till mer text, "\n" ger en radbrytning

Uppgift 1

Innan du gör uppgiften fundera på hur du skall spara alla filer och gamla projekt. Om du raderar koden så kommer den försvinna, vem vet, den kanske är bra att ha vid ett senare tillfälle.

Skapa nu ett program som beräknar arean och omkretsen av en kvadrat. En kvadrat är ju en fyrkantig figur där alla sidor är lika långa. Fråga användaren hur lång kvadratens sida är och beräkna sedan omkretsen, som är fyra gånger längden för sidan, och arean, som beräknas genom att sidan multipliceras med sidan. Skriv sedan ut svaren. Bestäm själv ifall du vill att användaren skall mata in ett heltal eller ett decimaltal.

Selektioner / val

När vi programmerar så kommer det hela tiden hända olika saker som gör att vi behöver ta olika beslut. Genom dessa beslut så kommer olika saker hända i vårt program. Vi skall nu leka lite med två tärningar.

# Börjar med att importerar paketet random för att kunna slumpa tal
import random

# Vi skapar två tärningar och ger dem var sitt värde, som vi sedan skriver ut
t1 = random.randint(1,6)
t2 = random.randint(1,6)
print("Tärningarnas värde är {} och {}.".format(t1, t2))

# Vi vill kolla om tärningarna har samma värde
if(t1 == t2):
  print("Tärningarna har samma värde.")
# Testa nu ifall detta fungerar genom att köra programmet några gånger tills tärningarna får samma värde.
# if (om på svenska) är en selektion där vi kan testa ett villkor. Vi kan om vi vill testa flera olika saker på samma gång.
print("Summan av tärningarna är {}.".format(t1+t2))
if(t1+t2 > 9):      # Summan av tärningarna är mer än 9
  print("Bra slag")
elif(t1+t2 > 5):    # Summan av tärningarna är mer än 5 (men mindre än 9...)
  print("Helt ok slag")
else:               # else betyder annars, vilket är alla andra värden (5 och mindre)
  print("Kasst slag")

# Det som är viktigt att tänka på här är att bara en utskrift kan göras, det första villkoret som är sant kommer att ge en utskrift i kedjan if-elif-else. Det får bara finnas en if-sats, det kan finnas noll eller flera elif-satser och endast noll eller en else-sats.
# Testa nu att köra programmet några gånger så att det fungerar som du tänker dig.

Uppgift 2

Fråga användaren efter hens ålder. Skriv sedan ut vad användaren gör på dagarna.

  • Om användaren är yngre än 7 år så bör användaren gå på förskola.
  • Om användaren är yngre än 16 år så bör användaren gå i grundskola.
  • Om användaren är yngre än 20 år så bör användaren gå i gymnasiet.
  • Om användaren är äldre än, eller är, 65 år så bör användaren vara pensionär.
  • Annars bör användaren arbeta.

Iteration / upprepning / loopar

När vi programmerar så använder vi ofta loopar för att saker skall upprepas gång på gång. I ett spel så är det vanligt att beräkningar görs 50-60ggr/sekund för att sedan ritas ut. Vi skall nu jobba lite med loopar.

# Upprepa något flera gånger
for i in range (5):
  print(i)
# Här skrivs talen 0 - 4 ut. Datorn börjar på 0 och skriver sedan ut fem tal i ordning.
# Vill vi skriva ut talen 1-5 så skriver vi loopen på detta sätt:
for i in range (1, 6):    # Börja på talet 1 och kör mot 6 men inte hela vägen
  print(i)

# Importerar paketet random för att kunna slumpa
import random
# En annan typ av variabel är en lista, den kan innehålla flera olika värden.
tärningar = []

# Slå fem tärningar och lägg dessa i listan
for i in range(1, 6):
  # append lägger till ett värde till listan, i detta fall en slagen täning.
  tärningar.append(random.randint(1,6))

# Skriv ut alla värden i listan
print("\nAlla tärningar i listan: ", tärningar)

print("\nHär skriver vi ut varje tärning på en egen rad:")
# Vill vi skriva ut tärningarna en och en i listan så får vi loopa igenom listan
for t in tärningar:     # tärningar är listan, t är en och en tärning som ligger i listan
  print(t)

# När vi har data i en lista så kan vi använda oss av funktioner för att göra saker med listan....
# ... hämta högsta värdet
print("Högsta värdet i listan: ", max(tärningar))
# ... hämta lägsta värdet
print("Lägsta värdet i listan: ", min(tärningar))
# ... summan av alla tärningar i listan
print("Poängsumman i listan: ", sum(tärningar))
# ... antal tärningar i listan
print("Antal tärningar i listan: ", len(tärningar))

# Om vi vill lägga till fler tärningar så kan vi göra det med en annan typ av loop, en whileloop.
while True:     # Villkoret här är True, vilket innebär att denna loop kommer köras oändligt länge
  svar = input("Vill du lägga till en täning till (J/N)?")
  # Gör om svar så att det bara lagras första bokstaven och sedan görs denna till stor bokstav/versal
  svar = svar[0].upper()
  if(svar == 'J'):                            # Om svaret är 'J' ...
      tärningar.append(random.randint(1,6))   # ... lägg till en ny tärning till listan
  elif(svar == 'N'):                          # Om svaret är 'N' ...
    break                                     # ... avbryt loopen med break, enda sättet att komma ur loopen
  else:                                       # Annars ...
    print("Felaktig inmaning, försök igen")   # ... skriv ut försök igen


# Här kan du kopiera eller flytta ner alla utskrifter så att de kommer när samtliga tärningar finns på plats.

Uppgift 3

Skapa en tom lista. Skapa sedan en oändlig loop. Fråga nu användaren vilket tal hen vill lägga i listan, upprepa frågan och lagra nya tal till listan så länge användaren matar in ett nytt tal. När användaren matar in en nolla (”0”) då avbryts loopen och du skriver ut hur många tal det finns i listan, vilket tal som är högst och lägst och summan av alla tal. Även negativa tal kan läggas in i listan. Du avgör själv om det bara får matas in heltal eller om decimaltal är godkända också.

Funktioner

Funktioner är användbart om det är saker som skall göras flera gånger. När vi senare skall bygga spel så använder vi funktioner för att göra specifika saker, som att flytta en gubbe när vi trycker på en viss tangent.

# Denna kod bygger vidare på uppgift 03 iterationer
# Importerar paketet random för att kunna slumpa
import random
# En annan typ av variabel är en lista, den kan innehålla flera olika värden.
tärningar = []

# Här skapar jag en funktion för att skriva ut information om alla tärningar i listan
# Funktionen definieras med nyckelordet "def" och måste finnas före första anropet till funktionen.
def print_list():
  # Skriv ut alla värden i listan
  print("\nAlla tärningar i listan: ", tärningar)

  # När vi har data i en lista så kan vi använda oss av funktioner för att göra saker med listan....
  # ... hämta högsta värdet
  print("Högsta värdet i listan: ", max(tärningar))
  # ... hämta lägsta värdet
  print("Lägsta värdet i listan: ", min(tärningar))
  # ... summan av alla tärningar i listan
  print("Poängsumman i listan: ", sum(tärningar))
  # ... antal tärningar i listan
  print("Antal tärningar i listan: ", len(tärningar))


# Slå fem tärningar och lägg dessa i listan
for i in range(1, 6):
  # append lägger till ett värde till listan, i detta fall en slagen täning.
  tärningar.append(random.randint(1,6))

# Anropa funktionen för att skriva ut information om listans tärningar
print_list()

# Om vi vill lägga till fler tärningar så kan vi göra det med en annan typ av loop, en whileloop.
while True:     # Villkoret här är True, vilket innebär att denna loop kommer köras oändligt länge
  svar = input("Vill du lägga till en täning till (J/N)?")
  # Gör om svar så att det bara lagras första bokstaven och sedan görs denna till stor bokstav/versal
  svar = svar[0].upper()
  if(svar == 'J'):                            # Om svaret är 'J' ...
      tärningar.append(random.randint(1,6))   # ... lägg till en ny tärning till listan
  elif(svar == 'N'):                          # Om svaret är 'N' ...
    break                                     # ... avbryt loopen med break, enda sättet att komma ur loopen
  else:                                       # Annars ...
    print("Felaktig inmaning, försök igen")   # ... skriv ut försök igen

# Anropa funktionen för att skriva ut information om listans tärningar
print_list()

Uppgift 4

Bygg nu vidare på uppgift 3 så att utskriften efter inmatningen skrivs ut i en funktion.

Detta var en väldigt kort genomgång av grunderna i pythonprogrammering. För att bli en duktig programmerare så behöver man träna och åter träna på olika typer av uppgifter.