Pythonguide
Tillbaka till artikelarkivet
En pythonguide som förhoppningsvis ska kunna hjälpa både de som inte programmerat alls förut, och de som vill kolla upp det där python som alla påstår är så bra (för det är det).
Navigation:
< Föregående del || Nästa del >
Text - Python del 3 - Vilkorssatser, loopar och funktioner
Med det vi kan göra nu så kan vi skriva ut både siffror och tal, men skulle det inte vara kul att kunna ställa vilkor och skapa loopar och sånnt? Jo, och just därför ska jag gå igenom det nu.
Det första jag ska gå igenom är dock "Significant Whitespace". Jag älskar det här, men jag vet att många vägrar skriva Python av just den här anledningen. Ni har kanske hört/sett att man ska skriva luftig kod? När man går in i en vilkorssats så ska man trycka på tab en gång eller space några gånger. Gör man det så blir koden mycket mer lättläst. Kommer ni ihåg vad jag sa i del 0 om att Python kräver att du skriver Pythonskt?
Python använder intenderingar för att avgöra var en vilkorssats (/funktion/klass/något annat) börjar och slutar. Istället för VBs förhatliga then, end if och allt vad de heter, istället för Cs {}, så har Python mellanslag och tabbar. Pratar jag förvirrande? Vi ska se på lite exempel strax.
Den enda vilkorssatsen som finns i Python är if-satsen. Python har ingen motsvarighet till switch-case-satser. En if-sats konstrueras såhär:
>>> a = raw_input("Vad heter du? ") #Så här tar man emot input by the way
>>> if a == "Baltazar":
... print "Det heter inte jag"
... elif a == "Robin":
... print "Det heter jag!"
... elif len(a) < 3:
... print "Du har ett kort namn"
... else:
... print "Pungsvan!"
...
Pyton använder dubbla =-tecken för att jämföra två tal (som C) men stödjer inte att man tilldelar variabler värden i if-satsen (till skillnad från C). Man får ha C-styleparenteser runt uttrycket om man vill. Raden måste avslutas med ett kolon. elif står för else if, och testas alltså bara om det första inte var sannt. Else finns här också. len() är en inbyggd funktion för att kontrollera längden på en sträng.
Förutom == finns flera andra komparatorer (jämförartecken).
== Identiskt med
< Mindre än
> Större än
<> Större eller mindre än (dvs inte lika med)
!= Inte lika med
<= Mindre eller lika med
>= Större eller lika med
While-loopen är en loop. Den exekveras medans vilkoret man skrivit in är sannt. Här bjuds inte på några större överraskningar heller.
>>> a = 1
>>> while a <= 10:
... print a
... a+=1
Ovastående program kommmer att skriva ut det aktuella värdet på a tills a blir mer än 10. a+=1 betyder "lägg till ett till a och spara i a". Samma grundläggande syntax som i if-satsen.
For-loopen kommer att verka väldigt mysko för många tidigare programmerare. Den for-loopen Python använder är den som PHP kallar för foreach. Personligen föredrar jag den här, eftersom den känns lättare att använda och att jobba med. Men nu ska vi använda den istället för att prata om den, så ska jag förklara den. for-satsen vill ha två variabelnamn: ett som det finns något i, och ett som den lägger något i. Den kommer att ta innehållet i variabeln, dela upp det i delar, och sen lägga in delarna en och en i den nya variabeln. Jag ska försöka göra det aningen mindre abstrakt med ett par exempel.
>>> a = 'sträng'
>>> for char in a:
... print char
...
s
t
r
ä
n
g
>>> for int in range(3)
... print int
...
1
2
3
Sådär. Som ni ser tar for-loopen t ex en sträng bokstav för bokstav. När vi kommer vidare kommer ni få lära er fler typer än strängar man kan använda sig av. range() är en funktion som genererar alla tal från 1 till det slutvärdet man skriver in. Man kan också skriva ett tal innan slutvärdet så används det som startvärde istället. Det sista man kan göra är att skriva vad för värde den ska öka med varje varv. ,,r det negativt så minskar den alltså istället. Ett exempel.
>>> range(50, 1, -12) #startvärde 50, slutvärde 1, minska med 12 varje varv
[50, 38, 26, 14, 2]
I looparna finns det två olika användbara keywords som används; break och continue. Break hoppar ut ur loopen och koden fortsätter läsas efter loopen. Continue hoppar till början av loopen. Förstår ni? Bra <img src="/styles/emoticons/tongue.gif" alt="Smiley"/>
pass är ett annat användbart keyword. Skriver man pass i en loop så sätter sig programmet och rullar tummarna tills du trycker på valfri knapp. Om du inte orkar skriva en bit kod nu, skriv pass, och skriv klart den biten någon annan dag.
Men nu ska vi inte vänta till någon annan dag, utan vi ska direkt vidare till att skriva funktioner. En funktion anropas genom att man skriver namnet följt av två parenteser. Innanför parenteserna skriver man eventuella argument (dvs bifogade värden och variabler). Funktionen definieras med def. Nu kan vi äntligen ha lite praktisk användning alla loopar och vilkor. Vi lägger vilkoret eller loopen i en funktion, och så anropar vi den varje gång vi vill använda den koden, istället för att skriva den varje gång. Det är inte så svårt som jag får det att låta.
>>> def jaellernej(char):
... if char == "j":
... print "Du valde ja"
... elif char == "n":
... print "Du valde nej"
... else:
... print "Felaktigt svar"
...
>>> var = raw_input("Vill du äta? j/n")
>>> jaellernej(var)
Så. Programmet frågar om du vill äta, och anropar en funktion som behandlar svaret.
Man kan välja att ha default-värden också. Dessa måste stå sisst av argumenten. Vi demonstrerar lite:
>>> def funk(a, b, c=1, d="apa"):
... pass
...
>>> func(1, 3) #funkar
>>> func(3, 1, 5, "gnu") #funkar
>>> func(5, 9, d="bäver") #Också tillåtet
>>> func(1) #Fel! b måste få ett värde
>>> func(1, 3, c=2, "struts") #Fel! Man får inte tilldela ett värde baserat på positionen ("struts") efter att man har tilldelat ett värde baserat på variabelnamn (c=2)
Något som ni från och med nu Alltid bör göra är att inkludera en dokumentationssträng i alla funktioner. Eftersom det kan vara svårt att göra om man inte vet hur en sån ser ut så kanske jag ska visa det...
>>> def dokumenteradfunktion()
... """Den här funktionen gör inte ett endaste dugg."""
... pass
Du kan sedan läsa vad funktionen gör genom att skriva
>>> print dokumenteradfunktion.__doc__
Sådär. Nästa gång ska vi gå igenom olika typer av arrayer. Stay tuned!
Slut
Navigation:
< Föregående del || Nästa del >
Till toppen