if, while, for og ternary

For å styre kjøringen av et program trenger man å gjøre logiske sjekker for å bestemme hva man skal gjøre i en gitt situasjon.

if

Brukes for å sjekke med en gang om noe er sånn det skal være:

if True:          # Sann
   print("Denne linjen vil bli vist.")

if True and True: # Sann og sann = sann
   print("Denne linjen blir også vist.")

if True or False: # Sann eller usann = sann
   print("Og denne.")

if False:             # Usann
   print("Ikke denne.")

if True and False:    # Sann og usann = usann
   print("Og ikke denne.")

if False and False:   # Usann og usann = usann
   print("Ej heller denne.")

if not True:          # Ikke sann = usann
   print("Eller denne.")

if not not False:     # Ikke ikke usann = usann
   print("Eller denne.")

if not True or False: # Ikke sann eller usann = usann
   print("Eller denne")

if True:   # Sann
   print("Men så vises denne")
else:      # Nødt til å være usann
   print("Vises ikke")

if 1 == 2:    # Usann
   print("Ikke denne heller")
elif 1 == 1:  # Sann
   print("Denne vises")
elif 1 == 3:  # Usann
   print("Denne vises ikke")
else:         # Vises ikke fordi første elif over er sann
   print("Vises ikke")

while

For å gjøre noe igjen og igjen helt til noe bestemt skjer:

while True: # Vil kjøre i det uendelige!
   print("Vises igjen og igjen.")

nummer = 0
while nummer < 10:
   print(nummer, end=" ")
   nummer += 1
# gir: "0 1 2 3 4 5 6 7 8 9" 

nummer = 0
while nummer < 10:
   print(nummer, end=" ")
   nummer += 2
# gir: "0 2 4 6 8"

nummer = 10
while nummer > 0:
   print(nummer, end=" ")
   nummer -= 2
# gir: "10 8 6 4 2"

for

Om man f.eks. trenger å kjøre gjennom en liste fordi man skal sjekke eller gjøre noe med innholdet i denne:

for nummer in [3,4,5,6,7,8,9]:
   print(nummer, end=" ")
# gir: "3 4 5 6 7 8 9"

for nummer in range(0,10):
   print(nummer, end=" ")
# gir: "0 1 2 3 4 5 6 7 8 9"

for nummer in range(10,20):
   print(nummer, end=" ")
# gir: "10 11 12 13 14 15 16 17 18 19"

for nummer in range(0,10,2):
   print(nummer, end=" ")
# gir: "0 2 4 6 8"

for nummer in range(10,0,-1):
   print(nummer, end=" ")
# gir: "10 9 8 7 6 5 4 3 2 1" 

for nummer in range(10,0,-2):
   print(nummer, end=" ")
# gir: "10 8 6 4 2"

ternary

Brukt for omtrent samme situasjoner som if-else:

temperatur = 10
print("Det er varmt") if temperatur > 20 else print("Det er kaldt")
# gir: "Det er kaldt"

temp = 0
print("Varmt") if temp > 0 else ( print("Kaldt") if temp < 0 else print("0") )
# gir: "0"

Denne måten å sjekke på er av mange mislikt fordi den ser så annerledes ut sammenlignet med tilsvarende i andre programmeringsspråk, som f.eks. Java:

# ...
temp > 0 ? print("Varmt") : ( temp < 0 ? print("Kaldt") : print("0") );

switch

Denne finnes ikke direkte i Python (enda).


Hva som er det riktige for deg når du skal bruke en eller flere av disse må du selv bestemme, det finnes ingen fasitsvar på hva som er riktig eller galt.

Fokuser heller på å gjøre det enkelt og lesbart.

Lister som ikke lar seg endre

Lister i Python som ikke lar seg endre kalles for tupler, f.eks. (1, 2, 3).

For å opprette en tuppel:


tuppel = ("A", "B", "C", "D", "E")

Avlesing av et eller flere enkeltelementer:

tuppel[0]     # gir: "A"
tuppel[-1]    # gir: "E"
tuppel[0:1]   # gir: ("A",)
tuppel[0:2]   # gir: ("A", "B")
tuppel[0:3]   # gir: ("A", "B", "C")
tuppel[1:1]   # gir: "()"
tuppel[1:2]   # gir: ("B",)
tuppel[1:3]   # gir: ("B", "C")
tuppel[1:4]   # gir: ("B", "C", "D")
tuppel[1:100] # gir: ("B", "C", "D", "E")
tuppel[:100]  # gir: ("A", "B", "C", "D", "E")
tuppel[3:]    # gir: ("D", "E")
tuppel[100:]  # gir: "()"

Lister som lar seg endre

En liste i Python er en tabell (f.eks. [1, 2, 3]) som lar seg endre etter opprettelse.

For å opprette samt legge til i ettertid:

liste = []              # oppretter tom liste
liste = ["A", "B", "C"] # oppretter liste med A, B, C

liste.append("E")       # legger til E på slutten
liste.append("F")       # legger til F på slutten
liste.insert(0, "G")    # legger til G først 

# innholdet er nå: ["G", "A", "B", "C", "E", "F"]

For å avlese et eller flere enkeltelementer:

liste[0]     # gir: "A"
liste[-1]    # gir: "G"
liste[0:1]   # gir: ["A"]
liste[0:2]   # gir: ["A", "B"]
liste[0:3]   # gir: ["A", "B", "C"]
liste[1:1]   # gir: "[]"
liste[1:2]   # gir: ["B"]
liste[1:3]   # gir: ["B", "C"]
liste[1:4]   # gir: ["B", "C", "E"]
liste[1:100] # gir: ["B", "C", "E", "F", "G"]
liste[:100]  # gir: ["A", "B", "C", "E", "F", "G"]
liste[3:]    # gir: ["E", "F", "G"]
liste[100:]  # gir: "[]"

Antall i listen:

len(liste) # gir: "6" (som er antallet/lengden)

Sortering:

sorted(liste) # for sortert visning uten endringer
# gir: ["A", "B", "C", "E", "F", "G"]
liste.reverse()
# gir: ["F", "E", "C", "B", "A", "G"]
liste.sort()
# gir: ["A", "B", "C", "E", "F", "G"]
liste.sort(reverse=True)
# gir: ["G", "F", "E", "C", "B", "A"]

Reversering:

liste.reverse()
# gir: ["F", "E", "C", "B", "A", "G"]

Fjerning:

liste.remove("G")       # fjerner G
del liste[-1]           # fjerner E
fjernet = liste.pop()   # flytter D fra liste til variabel
fjernet = liste.pop(-1) # flytter C fra liste til variabel

TBC

Matte i Python

De enkle matematiske operasjonene:


fire = 2 + 2      # gir: '4'
ingenting = 2 - 2 # gir: '0'
fire = 2 * 2      # gir: '4'
en = 2 / 2        # gir: '1.0'
fire = 2 ** 2     # gir: '4' (fordi dette er 2 opphøyd i 2) 

Det er dog et problem med matte og programmering som man før eller senere garantert vil dulte borti:


tull = 0.1 + 0.2 # gir: '0.30000000000000004'

Årsaken er at datamaskinen ikke kan oppbevare litt spesielle tall.

For tall som skal bli del av tekst:


"Uken har " + 7 + " dager"      # gir: TypeError
"Uken har " + str(7) + " dager" # gir: 'Uken har 7 dager'

TBC

Behandling av tekst i Python

Tre måter å opprette tekstvariabler på:


navn = str("Ove Bakken")
navn = "Ove Bakken"
navn = ("Ove" " " "Bakken")

For å skrive ut i terminalvinduet:


print("tekst")  # gir: 'tekst'
print(variabel) # gir innholdet i variabel

For å gjøre tekst liten, stor, eller til et navn:

navn = "Ove baKkEn"
navn.title() # gir: 'Ove Bakken'
navn.lower() # gir: 'ove bakken'
navn.upper() # gir: 'OVE BAKKEN'

Behandling av tomrom:

navn = "Ove Bakken"
tekst = navn + " lærer Python." # sammenliming av tekst
tekst = " " + tekst + " " # ekstra tomrom på begge sider
                          # som gir: ' Ove Bakken lærer Python. '
tekst.lstrip() # gir: 'Ove Bakken lærer Python. '
tekst.rstrip() # gir: ' Ove Bakken lærer Python.'
tekst.strip()  # gir: 'Ove Bakken lærer Python.'

For å lage en tabell:

print("Testtabell:\n") # \n gir linjeskift
print("\t\tKol. 1\t\t|\t\tKol. 2\t\t|\t\tKol. 3")
print(" -------------------------------------------------------")
print("\t\tData 1\t\t|\t\tData 2\t\t|\t\tData 3")
print("\t\tData 4\t\t|\t\tData 5\t\t|\t\tData 6")
print("\t\tData 7\t\t|\t\tData 8\t\t|\t\tData 9")
# \t gir tab

.. gir resultatet

Mye mer finnes i dokumentasjonen for den som er interessert.

TBC

Installasjon, oppsett, samt kjøring av Python

Først lastet jeg ned Python 3 fra python.org/downloads og installerte.

Og siden jeg er hakket latere enn det som er sunt – og i tillegg ganske praktisk av meg, valgte jeg å bruke Sublime som IDE siden denne allerede var installert:

Her kan jeg da skrive kode, lagre innholdet i filnavn.py, og trykke på CTRL+B som gjør at Sublime kjører kommandoen python filnavn.py for meg og viser resultatet i et eget vindu.

Easy.

Da var tiden kommet for å lære seg Python

Fra tid til annen har jeg vurdert om jeg ikke skulle lære meg Python, men så har jeg funnet andre ting å drive med fordi nytten virket uklar.

Men igjen og igjen dukker dette språket opp. Blant annet når jeg trenger å løse problemer i Linux, men oftest når jeg leser jobbannonser på FINN. Så hvorfor ikke gi det en sjanse og få et innblikk?

print("Wish me luck!")

Jeg fant en kræsjkursbok i Python på Amazon med meget gode anbefalinger som jeg håper gjør jobben.