print(2+2)
print(2-2)
print(2*2)
print(2/2) # Divisjon gir alltid float
print(2**2)
# Beregning av antall timer
print(280 // 60)
# Beregning av antall minutter
print(280 % 60)
variabel_1 = 10 # Deklarerer integer
variabel_2 = "Ole Olsen" # Deklarerer streng
print(variabel_1, variabel_2, "abc")
print(variabel_1, variabel_2, "abc", sep="***") # Skifter ut mellomrom med stjerner
print(variabel_1, variabel_2, "abc", end=", ") # Tar vekk linjeskift
print(variabel_1, variabel_2, "abc")
# Enkle datatyper
int_1 = 7
float_1 = 0.007
string_1 = "Hei"
bool_1 = True
# Konvertering mellom datatyper
tall1 = "11"
print(int(tall1)) # Konverterer til integer
print(float(tall1)) # Konverterer til flyttall
# Eksempel:
a = 7.77
a *= 100
print(int(a))
# Avrunde til to siffer
a = 7.7777
a = round(a, 2)
print(a) # 7.78
# Annet
tall_1 = 8.88
int_1 = 4
int_2 = 2
a = type(tall_1) # Returnerer datatype
b = int_1 / int_2 # Returnerer alltid en float
print(a) # <class 'float'>
print(b) # 2.0
print("I'm Alice")
#I'm Alice
print("en\nto tre")
# en
# to tre
print("Jeg sier \"Hei\" ")
# Jeg sier "Hei"
print("en \t to \t tre")
# en to tre
# Konvertere til streng
a = 7.77
print(type(a)) # <class 'float'>
b = str(a)
print(type(b)) # <class 'str'>
print(a)
print(b)
tekstv1 = input("Tast inn en tekst")
tallv1 = int(input("Tast inn et heltall"))
tekstv2 = "hei" + " på " + "deg"
print(tekstv1) # Skriver teksten
print(tallv1) # Skriver ut heltallet
print(tekstv2) # Skriver hei på deg
# Programkode fra filmen
# Enkelt eksempel på bruk av input-funksjon:
navn = input("Hva er navnet ditt?")
print("Hei", navn)
# Gjøre om input til et tall:
alder = int(input("Hvor gammel er du?"))
årstall = 2016 - alder
# sette sammen flere strenger til en streng:
født_i_årstall = input("Ble du født i " + str(årstall) + "?")
print("Du svarte:", født_i_årstall)
variabel1 = True
variabel2 = False
type(variabel1) # Returnerer bool
bool(0) # Returnerer False
bool(77) # Returnerer True
bool("") # Returnerer False
stor = 10
liten = 1
stor > liten # Returnerer True
streng1 = "Hei på deg"
"Hei" in streng1 # Returnerer True
a = 250
b = 53
print()
if b > a:
print("b er større enn a")
elif a == b:
print("a og b er like")
else:
print("a er større enn b")
alder = int(input("Hvor gammel er du? "))
høyde = int(input("Hvor høy er du? "))
hjerteproblemer = False
if (alder >= 18 or (alder >= 13 and høyde >= 140)) \
and not hjerteproblemer:
print("Du får ta berg og dalbanen")
# Hvor gammel er du? 14
# Hvor høy er du? 150
# Du får ta berg og dalbanen
# Deklarasjon av og kall av funksjon:
def funk1():
print("Hallo")
funk1() # Kaller funksjonen funk1
# Kall med overføring av variabel
def funk1(ett_parameter):
tekst_streng = ett_parameter
print(tekst_streng)
funk1("Hallo")
# Hallo
# Kall med overføring av variabel og retur av verdi
def funk1(ett_parameter):
tekst_streng = ett_parameter
return tekst_streng
tekst1 = funk1("Hallo")
print(tekst1)
# Hallo
def funk1(ord1, ord2):
print(ord1 + " og " + ord2)
funk1("hopp", "sprett") # Kaller funksjonen funk1()
# Skriver ut: hopp og sprett
# Void funksjon returnerer ingen ting.
# none er en egen datatype
# Retur av en variabel:
def partallsjekk(tall):
if (tall % 2) == 0:
partallStatus = True
else:
partallStatus = False
return partallStatus
def printSvar(tall):
if partallsjekk(tall): # Kall av funksjonen partallsjekk
print("Tallet " + str(tall) + " er et partall")
else:
print("Tallet " + str(tall) + " er et oddetall")
tall1 = int(input("Skriv inn et tall: ")) # 1. Hente inn tall fra bruker
printSvar(tall1) # 2. Kall av funksjonen printSvar
# Retur av flere verdier:
def funk1(ord):
return 3, "Hei", False, ord # ret av: tall, tekst, boolean, tekstvar.
a, b, c, d = funk1("Hallo") # Kall til funk1 som gir en variabel i kallet
print(str(a), b, str(c), d) # Gir utskrift: 3 Hei False Hallo
# Ingenting publisert
# To lokale variabler med samme navn men med forskjellig innhold
def trondheim():
kongens_gate_1 = "Vitensenteret"
print("Trondheim: ", kongens_gate_1)
def oslo():
kongens_gate_1 = "Waisenhuset"
print("Oslo: ", kongens_gate_1)
trondheim()
oslo()
# Trondheim: Vitensenteret
# Oslo: Waisenhuset
# En global variabel er globalt tilgjengelig
var1 = "En global variabel"
def funkA():
var1 = "En lokal variabel"
print(var1)
def funkB():
print(var1)
funkA()
funkB()
# En lokal variabel
# En global variabel (Kan ikke endres inne i en funksjon.)
# Endring av en global variabel
var1 = "En global variabel"
def funkA():
global var1
var1 = "En endret global variabel"
print(var1)
def funkB():
print(var1)
funkA()
funkB()
# En endret global variabel
# En endret global variabel
# math bibliotek – importere funksjonen – Et helt bibliotek:
import math
tall1 = math.sin(3.14159 / 2)
print("%.2f" % tall1)
# printer ut svaret 1.00
# Import av utvalgte funksjoner i et bibliotek:
from math import sin, cos
tall1 = math.sin(3.14159 / 2)
print("%.2f" % tall1)
# printer ut svaret 1.00
# random bibliotek
import random
tall1 = random.randint(0, 10)
print(tall1)
# Skriver ut et tilfeldig tall fra 0 til 10
# randrange funksjon
import random
tall1 = random.randrange(0, 100, 5)
print(tall1)
# Skriver ut et tilfeldig tall fra 0 til 100
# i steg 5 for eksempel 65
# Hente ut ett tegn fra en streng:
streng1 = "Hei"
a = streng1[1] # Returnerer e
b = streng1[-1] # Returnerer i
print(a, b) # Skriver ut e i
# Hente ut flere tegn fra en streng (slicing):
streng1 = "kokkelimonke"
a = streng1[1:3] # Returnerer ok
b = streng1[:3] # Returnerer kok (de tre første)
c = streng1[6:] # Returnerer imonke (de seks siste)
d = streng1[0:8:2] # Returnerer annenhver bokstav
print(a) # ok
print(b) # kok
print(c) # imonke
print(d) # kkei
# While løkke:
a = 1
while a <= 4:
print(a)
a+=1
# Gir ut 1 2 3 4
# for løkke 1:
for i in range(1, 5):
print(i)
# Gir ut 1 2 3 4
for i in range(5):
print(i)
# Gir ut 1 2 3 4
# break i for løkke
for bokstav in "Python":
if bokstav == 'h':
break
print(bokstav)
# break i while løkke
var = 10
while var > 0:
print(var)
var -= 1
if var == 6:
break
# pass – kan brukes som placeholder
def funksjon_1():
pass
# continue – for å utelate programlinjer
for bokstav in 'Python':
if bokstav == 'h':
continue
print(bokstav)
# Enkle datatyper:
# int – 88
# float – 0.007
# string – «abc»
# bool – True
# Komplekse datatyper:
# list (indeksert og dynamisk)
# tuples (indeksert, statisk)
# set (usortert, unike medlemmer)
# dictionary (par av key og datafelt.)
# Matriser er egentlig todimensjonale lister.
# En liste er en sekvensiell datastruktur som kan inneholde alle typer data.
# Elementene i listen er nummerert med en indeks som starter på 0
# Listen kan ikke ha noen tomme plasser.
# Opprette en tom liste
liste_1 = []
# En liste kan ganges med et tall og øker da i lengde/innhold:
print(['a', 'b', 'c'] * 3)
# Skriver ut:
# ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
# Konvertere streng til liste:
print(list("abcd"))
# Skriver ut:
# ['a', 'b', 'c', 'd']
# in liste og not in liste:
listevar1 = ['abc', 123, 4.0]
if 'abc' in listevar1:
print("abc er der") # Rett
else:
print("abc er der ikke")
if 123 not in listevar1:
print("123 er der ikke")
else:
print("123 er der") # Rett
# abc er der
# 123 er der
# Finne lengden av en liste:
listevar1 = ['abc', 123, 4.0]
a = len(listevar1) # len gir lengden av listen
print(a) # Lengde 3
print(type(a)) # type int
# Sjekke for tom liste:
liste = []
if not liste:
print("Tom liste")
# Printer Tom liste
# Klippe ut deler av en liste:
liste = [1, 2, 3, 4, 5, 6]
print(liste[:3])
# De tre første - [1, 2, 3]
print(liste[3:])
# De tre siste - [4, 5, 6]
print (liste[-1])
# Den siste - 6
# Endre innholdet i liste:
liste = [1, 2, 3, 4, 5, 6]
liste[2] += 5
print(liste)
#[1, 2, 8, 4, 5, 6]
# Skjøte sammen lister:
list1 = list('abc') + [1, 2, 3]
print(list1)
# ['a', 'b', 'c', 1, 2, 3]
# Append funksjonen
list1 = [1, 2, 3]
list1.append(7)
print(list1)
# [1, 2, 3, 7]
# Insert funksjonen
list1 = [1, 2, 3, 4]
list1.insert(2, 6) # Plasserer integer 6 i posisjon 2
print(list1)
# [1, 2, 6, 3, 4]
# pop funksjonen
# kan brukes til å fjerne og eventuelt returnere elementer i en liste.
# Hvis pop ikke mottar noe parameter, så fjerner den det siste elementet i listen.
list1 = [1, 2, 3, 4]
a = list1.pop(2)
print(a)
print(list1)
# 3 - Ble poppet ut og returnert
# [1, 2, 4] - Resten av listen
# del kommando (er ikke en funksjon)
list1 = [1, 2, 3, 4]
del list1[2]
print(list1)
# [1, 2, 4] - Resten av listen - Det som er igjen
# remove funksjonen:
list1 = [1, 2, 3, 3, 4]
list1.remove(3)
print(list1)
# [1, 2, 3, 4] - Resten av listen Det som er igjen
# index funksjonen
# Finner hvor i listen første element av verdien befinner seg
list1 = [1, 2, 3, 3, 4, 5]
print(list1.index(3))
# 2 - Første indeks for tallet 3
# sort funksjonen
list1 = [5, 2, 3, 3, 4, 1]
list1.sort()
print(list1)
# [1, 2, 3, 3, 4, 5]
# sorted kommando
# Oppretter en sortert kopi av listen:
list1 = [5, 2, 3, 3, 4, 1]
list2 = sorted(list1)
print(list1)
# [5, 2, 3, 3, 4, 1]
print(list2)
# [1, 2, 3, 3, 4, 5]
# reverse funksjon.
# Sortering i motsatt rekkefølge:
list1 = [1, 2, 3, 3, 4, 5]
list1.reverse()
print(list1)
# [5, 4, 3, 3, 2, 1]
# min og max funksjon
list1 = [5, 2, 3, 3, 4, 1]
a = min(list1)
b = max(list1)
print(str(a) + " " + str(b))
# 1 5
# Iterering over elementer i listen:
list1 = [5, 2, 3, 3]
for elx in list1:
print(elx)
# 5
# 2
# 3
# 3
# iterere over indekser i listen:
list1 = [5, 2, 3, 3]
for ix in range(len(list1)):
print(ix)
print(list1[ix])
print()
# 0
# 5
#
# 1
# 2
#
# ....
# Vi bruker iterering over elementer i følgende tilfeller:
# For å finne element men ikke forandre.
# print()
# utregninger.
# Vi bruker iterering over indekser i følgende tilfeller:
# Ved behov for å endre element
# Ved relativ adressering
# Full kode til filmen
liste = ['tomat', 'agurk', 'gulrot', 'squash',\
'aubergine', 'salat', 'paprika']
# iterere over elementer
for grønnsak in liste:
print(grønnsak)
""" Denne måten å iterere på er bra, hvis vi
bare skal printe elementene eller bruke de til noe,
og vi ikke trenger å endre på lista.
Passende variabelnavn:
item, element, eller noe som beskriver hva som
er i lista. """
# iterere over indekser
for i in range(len(liste)):
print("indeks: ", i)
print("element: ", liste[i])
"""
Passende variabelnavn:
i, j, k, x, y
index
"""
# For å endre på elementer i lista,
# itererer vi over indekser
for i in range(len(liste)):
liste[i] = 0
print(liste)
print()
""" Dette fungerer ikke:
for grønnsak in liste:
grønnsak = 0
# Lista blir /ikke/ endret,
# kun variabelen "grønnsak" blir endret.
"""
# Hvis vi trenger påfølgende eller etterfølgende
# elementer i lista, itererer vi over indekser
for i in range(0, len(liste), 2):
if i == len(liste) - 1:
print(liste[i])
"""Hvis i er indeks til siste element i lista,
kan vi bare printe dette elementet.
liste[i + 1] vil gi feilmeldingen IndexError."""
else:
print(liste[i], liste[i + 1])
# Sette alle elementene i en liste til 0:
list1 = [1, 2, 3, 4]
for inx in range(len(list1)):
list1[inx] = 0
print(list1)
print()
# [0, 2, 3, 4]
#
# [0, 0, 3, 4]
#
# [0, 0, 0, 4]
#
# [0, 0, 0, 0]
# Printe to elementer pr linje. Hindre at index kjører «out of range»:
list1 = [1, 2, 3, 4, 5]
for inx in range(0, len(list1), 2):
if inx == len(list1) -1:
print(list1[inx])
else:
print(list1[inx], list1[inx] + 1)
# 1 2
# 3 4
# 5
# Variabler som inneholder lister fungerer til dels som pekere:
list1 = [1, 2, 3, 4, 5]
list2 = list1
list2[1] = 10
print(list1)
# [1, 10, 3, 4, 5]
print(list2)
# [1, 10, 3, 4, 5]
# Funksjon som oppretter en kopi av listen og deler innholdet på to ved interering gjennom indeks:
list1 = [2, 4, 6, 8, 10]
def delePaaTo(list1):
list2 = list1[:] # Kopierer listen
for i in range(len(list2)):
list2[i] = list2[i] // 2
return list2
ny_liste = delePaaTo(list1)
print(list1)
# [2, 4, 6, 8, 10]
print(ny_liste)
# [1, 2, 3, 4, 5]
# Funksjon som oppretter en kopi av listen og deler innholdet på to vha ineterering gjennom elementer
list1 = [2, 4, 6, 8, 10]
def delePaaTo(list1):
list2 = [] # opprette en ny tom liste
for element in list1:
list2.append(element // 2)
return list2
ny_liste = delePaaTo(list1)
print(list1)
# [2, 4, 6, 8, 10]
print(ny_liste)
# [1, 2, 3, 4, 5]
# Opprette tupler:
a = (1, 2, 3)
b = 2, 3, 4
print(a)
# (1, 2, 3)
print(b)
# (2, 3, 4)
print(type(a))
# <class 'tuple'>
print(type(b))
# <class 'tuple'>
# Konvertere til tupler:
a = tuple("abc")
print(a)
# ('a', 'b', 'c')
b = tuple([1, 2, 3])
print(b)
# (1, 2, 3)
# Matriser er egentlig bare todimensjonale lister.
# Nummerering – Tenk kinosal – rad og plass.
# Prinsipp – [liste1, liste2, liste3]
# matrisenavn[y][x]
# Test av flerdimensjonal liste
mat1 = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(mat1[1]) # [4, 5, 6]
print(mat1[1][1]) # 5
print(mat1) # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(type(mat1)) # <class 'list'>
# Opprette og printe ut gangetabell:
mat_1 = []
for i in range(1, 11):
rad = []
for j in range(1, 11):
rad.append(i * j)
mat_1.append(rad)
for rad in mat_1:
for tall in rad:
print(str(tall).rjust(5), end="")
print()
# Programkode til filmen:
# Vi oppretter en matrise med gangetabellen for tallene 1 til 10.
matrise = []
for i in range(1, 11):
rad = []
for j in range(1, 11):
rad.append(i * j)
matrise.append(rad)
# Fin printing av matrisa, der vi bruk. streng.rjust()-funksjonen
for rad in matrise:
for tall in rad:
print(str(tall).rjust(5), end="")
print()
# Deretter sletter vi elementer og rader fra matrisa
del matrise[0][1]
del matrise[0][8]
del matrise[2] # Legg merke til at her slettes faktisk en hel rad
del matrise[4][2]
del matrise[3][2]
del matrise[8][9]
# Nå vil vi endre alle tall i matrisa til 0 istedet, men nå er det
# ikke lenger sånn at alle rader har lengde 10. Derfor passer vi på
# å bruke len(matrise) og len(rad) [samme som len(matrise[i])] i
# for-løkkene.
for i in range(len(matrise)):
rad = matrise[i]
for j in range(len(rad)):
rad[j] = 0
# Merk at her vil matrise[i][j] = 0 gi akk. samme resultat!
# Til slutt printer vi matrisa igjen - samme kode som tidligere!
print("\n")
for rad in matrise:
for tall in rad:
print(str(tall).rjust(5), end="")
print()
# ValueError:
try:
tallv = float(input("Tast inn et tall: "))
except ValueError:
print("Input må være et tall")
# Tast inn et tall: erter
# Input må være et tall
# ZeroDivisionError:
try:
tallv = float(input("Tast inn et tall: "))
except ValueError:
print("Input må være et tall !")
# Tast inn et tall: e
# Input må være et tall !
# Ved å bare skrive
# except:
# uten å spesifisere hvilken feilmelding jeg forventer, vil jeg fange alle feilmeldinger.
# Kode fra filmen:
while True:
try:
lønn = float(input("Hvor mye har du tjent?\n>>> "))
dager = int(input("Hvor mange dager har du jobbet?\n>>> "))
print("Gjennomsnittslønnen er", lønn/dager, "kroner per dag.")
except ValueError:
print("Du må skrive et tall.")
except ZeroDivisionError:
print("Du kan ikke skrive 0 dager.")
else:
print("Takk for at du brukte programmet.")
finally:
svar = input("Vil du avslutte? Ja/nei\n>>> ").lower().strip()
if svar == "ja":
break
# Eksempel på mengde
m1 = {1, 5, 1, 3, 1, 4}
print(m1) # {1, 3, 4, 5}
print(type(m1)) # <class 'set'>
# Mengder bruker krøllparanteser likt med dictionaries
# Opprette en tom mengde
m1 = set()
print(m1) # set()
print(type(m1)) # <class 'set'>
# add funksjon - Legge til element
m1 = set() # Oppretter en tom mengde
m1.add(1) # Legger til 1
m1.add(8) # Legger til 8
print(m1) # {8, 1}
# update funksjon - Legge til flere element
m1 = {1, 5, 1, 3, 1, 4}
m1.update([7, 8, 9], 'abc')
print(m1)
# remove funksjonen - Fjerne et element
m1 = {1, 2, 3, 4}
m1.remove(3)
print(m1) # {1, 2, 4}
m1 = {1, 2, 3, 4}
m1.discard(199) # Fjerner element uten å gi feilmelding
m1.clear() # Fjerner alle elementene
print(m1) # set()
# uion, intersection og difference
a = {1, 2}
b = {2, 3}
print(a.union(b)) # {1, 2, 3}
print(a.intersection(b)) # {2}
print(a.difference(b)) # {1}
# issuperset og issubset
a = {1, 2, 3}
b = {2, 3}
print(a.issuperset(b)) # True
print(b.issubset(a)) # True
# Dictionary inneholder key og datafelt. Key er immutable.
# Eksempel:
bursdager = {
'mamma': '21.10.64',
'pappa': '23.05.54'
}
tekstv = bursdager['mamma']
print (tekstv) # Printer ut 21.10.64
# ‘mamma’ in bursdager – vil undersøke om nøkkelen mamma finnes og returnere True
# Legge til og endre innhold:
bursdager = {
'mamma': '21.10.64',
'pappa': '23.05.54'
}
bursdager['susanne'] = '15.10.90'
bursdager['mamma'] = '21.10.62'
tekstv = bursdager['mamma'] + ' ' + bursdager['susanne']
print(tekstv) # Skriver ut: 21.10.62 15.10.90
# del bursdager[‘mamma’] – sletter element mamma
# len(bursdager) – returnerer antallet nøkler.
# variabel1 = {} – Oppretter en tom dictionary
# Iterere over bursdager:
bursdager = {
'mamma': '21.10.64',
'pappa': '23.05.54',
'susanne': '15.10.90'
}
for key in bursdager:
print(key)
print(bursdager[key])
print()
# skriver ut key og bursdager
# Diverse små tester:
# Test av dictionary med lister
dic1 = {
1: [1, 2, 3],
2: [4, 5, 6],
3: [7, 8, 9]
}
print(dic1[1]) # [1, 2, 3]
print(dic1[1][1]) # 2
print(dic1) # {1: [1, 2, 3], 2: [4, 5, 6], 3: [7, 8, 9]}
print(type(dic1)) # <class 'dict'>
# Finner lengden av dictionary
a = len(dic1)
print(a) # 3
# Endre innhold i dictionary
dic1[2] = [1, 2, 3]
print(dic1)
# Finne om nøkler er der
print(3 in dic1) # True
print(4 in dic1) # False
# Sortere dictinary på nøkler:
# sortere dictionary på nøkler
dic1 = {
1: [1, 2, 3],
3: [4, 5, 6],
2: [7, 8, 9]
}
b = sorted(dic1) # Oppretter en sortert liste av nøkler
print(b) # [1, 2, 3] - Sortert liste av nøkler
for key in b:
print(key, dic1[key])
# 1 [1, 2, 3]
# 2 [7, 8, 9]
# 3 [4, 5, 6]
# Grunnleggende filoperasjoner:
fil1 = open("filnavn.txt", "w")
fil1.write("Bare bra")
fil1.close()
fil1 = open("filnavn.txt", "a")
fil1.write(" - ikke sant")
fil1.close()
fil1 = open("filnavn.txt", "r")
tekst1 = fil1.read()
print(tekst1)
# Bare bra - ikke sant
def funk1(i):
print(i)
i+=1
if i < 5: # Bare hvis i < 5
funk1(i) # Kall til funk1, i øker i verdi
funk1(1) # Kall til funk1, parameter 1
# 1
# 2
# 3
# 4