Python
Viktige avslutningstemaer
Lærebok, kapittel 9.3:
File Objects
# Halterman, R. L, 2019. Fundamentals of Python Programming
#
# Listing 9.5: simplefileread.py
f = open('planeter.txt') # f is a file object
for line in f: # Read each line as text
print(line[0:-1]) # Remove trailing newline character
f.close() # Close the file
# Halterman, R. L, 2019. Fundamentals of Python Programming
#
# Listing 9.6: simplerread.py
with open('planeter.txt') as f: # f is a file object
for line in f: # Read each line as text
print(line[0:-1]) # Remove trailing newline character
# No need to close the file
# Varianter av open-kommandoen
open('planeter.txt') # standard-valg
# - åpner fil for lesing
open('planeter.txt', 'r') # åpner fil for lesing
# - eksplisitt uttrykt
open('planeter.txt', 'w') # åpner fil for skriving
# - sletter eventuell eksisterende fil
open('planeter.txt', 'a') # åpner fil for skriving
# - legger nytt innhold til eksisterende
# angir tegnsett - viktig for å behandle norske tegn
open('planeter.txt', 'a', encoding='utf-8')
Skriving til fil - inkludert formatering med f-strings
- Demo med VS Code
- Kodeeksempler her:
http://folk.ntnu.no/sverrsti/INGG1001-H2019/fstrings.html
http://folk.ntnu.no/sverrsti/INGG1001-H2019/files.html
Valg av verktøy
3 alternativer
Jupyterlab - skyløsning
- Ikke tilgjengelig når semsteret er over
- Kan eksportere *.py-fil fra Jupyterlab (executable script)
Jupyterlab - på egen PC
- Anaconda-installasjon
- Kan eksportere *.py-fil fra Jupyterlab (executable script)
Anaconda - VS Code
- Ekstra muligheter utover Jupyterlab:
- Kan opprette *.py -filer direkte
- *.py-filene kan kjøres fra terminalvindu (Anaconda Prompt)
Jupyter notebook vs.
"exectutable script" (*.py)
- Notebooks trenger en mer omfattende installasjon for å kjøres.
- *.py-filer trenger bare en ren python-installasjon
- *.py-filer kan lettere inngå i en sammenheng med andre python-programmer (f.eks. ulike former for automatisering)
- Notebooks egner seg veldig godt der man skal både forklare teori og foreta utregninger.
- Notebooks kan eksporteres som html-filer og pdf-filer.
Om forskjell på
mutable og immutable types
mutable = modifiserbar
Disse er modifiserbare:
- list
- dictionary (ikke nøklene (keys))
- set (elementene må være ikke-modifiserbare)
Modifiserbar innebærer f.eks.
- legge til og slette elementer
- endre elementer (bytte ut)
immutable = ikke modifiserbar
Disse er ikke modifiserbare:
- Enkelt-verdier
- int
- float
- bool
- str (string)
- tuple
mutable vs. immutable - hvordan merker vi forskjellen?
modifiserbare objekter kan forandres "in-place"
hvis vi skal lage en ny variant av et ikke-modifiserbart objekte, dannes det et nytt objekt
demo:
- https://folk.ntnu.no/sverrsti/INGG1001-H2019/Mutable_immutable_types.html
- https://folk.ntnu.no/sverrsti/INGG1001-H2019/Assignment.html
funksjoner, lokale variabler og scope
# Funksjon for å lage et datasett ved simulering -
# trekking av tilfeldige tall fra normalfordeling
#
# n: antall punkt som skal genereres
# mu: forventning
# sigma: standardavvik
def createRandomPoints(n, mu, sigma):
S = {}
for i in range(1, n + 1):
x = random.normalvariate(mu,sigma)
y = random.normalvariate(mu,sigma)
S[i] = x, y
return S
Lokale variabler inne i funksjonen er ikke synlige utenfor funksjonen - de har lokalt scope
Vi ønsker generelt så få globale variabler som mulig.
Grunn: Vi kan få navne-kollisjoner
Funksjoner kan skjule variabler fra globalt scope.
dokumentasjon av funksjoner, moduler
def createRandomPoints(n, mu, sigma):
""" Funksjon for å lage et datasett ved simulering -
trekking av tilfeldige tall fra normalfordeling.
n: antall punkt som skal genereres
mu: forventning
sigma: standardavvik
Returnerer dictionary med
punkt-id, (x,y)
"""
S = {}
for i in range(1, n + 1):
x = random.normalvariate(mu,sigma)
y = random.normalvariate(mu,sigma)
S[i] = x, y
return S
Eksempel på docstring for dokumentasjon av funksjon
Datatyper:
Sequence types vs.
non-sequence types
Sequence types: str, tuple, list
Rekkefølgen på elementene er definert.
Støtter uthenting ved index, samt slicing (L[3], L[3:10]).
Non-sequence types: dictionary, set
Ingen fast rekkefølge.
Begge gruppene er iterable, som gjør at man kan løpe gjennom alle elementene ved for-løkker
Hvor finner vi hjelp?
Gode dokumentasjonskilder
Python Standard Library:
https://docs.python.org/3.7/library/index.html
W3Schools - Python reference:
https://www.w3schools.com/python/python_reference.asp
Emnesidene for INGG1001 - Python:
http://folk.ntnu.no/sverrsti/INGG1001-H2019/python.html
Lærebok (p.t. ingen offisiell url)
INGG1001 Finale
By sverres
INGG1001 Finale
- 493