Lesestoff uke 1

Denne ukens lesestoff fra boken Automate the Boring Stuff:

Lesestoff fra kursnotatene som er relevant for denne uken:


Intro

Denne uken skal du utforske bruken av flere grunnleggende Python-funksjoner, inkludert print(), input(), len(), max(), int(), float() og str(). Du vil også få en forståelse for hvordan man bruker variabler og tilordner verdier til dem.

Før du kjører eksemplene, vennligst les gjennom dem og diskuter spørsmålene som er inkludert i koden.

Utskrift til terminalen

I Python kan du skrive ut tekst til terminalen ved å bruke print()-funksjonen. Funksjonen skriver ut det som blir angitt mellom parantesene. Eksempelet under viser hvordan du kan skrive ut en tekststreng til terminalen.

print("foo")
print("42")
print(42)

# Hvorfor vises ikke hermetegnene i utskriften?
# Er det forskjell på "42" og 42?
# Hva skjer med print(foo) (foo uten hermetegn)?

Variabler

Symbolet = benyttes for å angi en verdi til en variabel. Variabelnavnet er til venstre, og verdien som skal tilordnes er til høyre. Merk at dette ikke er helt den samme betydningen et likhetstegn har i matematikk.

# Symbolet '=' betyr her at vi tilordner verdien 5 til variabelen x
x = 5
print(x)     # 5
print(2 * x) # 10
print(x)     # fremdeles 5

x = x + 2
print(x)     # 7
x + 4        # Ikke noe tilordningssymbol (=) her
print(x)     # fremdeles 7

Les gjennom og diskuter spørsmålene som er inkludert i koden:

sted = "Vi er i Bergen"
print(sted)

flere = "Aaa\nBbb\nCcc"  # hva betyr \n her?
print(flere)

print("&" * 5) # &&&&&

hei = "Hei alle sammen!"
print(hei * 3) # Hva skrives ut her?

# Hva er forskjellen her?
print(4 + 7)
print("4 + 7")

print()  # Hva gjør denne?

x = 12
y = 20
print("x =", x)
print("y =", y)
print("y - x =", y - x)
print()

x = x + 1
y = y + 5
print("x =", x)
print("y =", y)
print("y + x =", y - x)
# Hvorfor er svaret feil her?

Input fra terminalen

Et program som kjøres kan interagere med en bruker. Merk at en bruker av programmet ikke nødvendigvis er den samme som utvikler programmet; brukeren skal ikke trenge å kunne programmering i det hele tatt.

Input-funksjonen gir brukeren muligheten til å putte sine egne verdier inn i programmet som kjøres.

Når du kjører Pythonkode som inneholder input() så stanser kjøringen når den kommer til input(). Der venter den til den har fått input fra brukeren i terminalen. Etter den har fått input fortsetter kjøringen.

# Les input og skriv ut en hilsen
print("Skriv ditt navn")
name = input()
print(f"Hei, {name}!")
# Input kan brukes uten = (assignment). Hva skjer med svaret da?
input("Kan vi gå videre? ")

# Når input er et tall
a = input("Tall A: ")
b = input("Tall B: ")

#Hva tror du outputet blir her?
print("Summen er ", a + b)

a = int(a)
b = int(b)

#og hva tror du outputet blir her?
print("Summen er ", a + b)

Var det riktig? Hvorfor blir de to output-ene ulike?

# Når input er et tall
print("Skriv et tall")
x = input()
half_x = x / 2 # Krasjer!
print("Halvparten av", x, "er", half_x)
# Når input er et tall
print("Skriv et tall:")
user_input = input()
x = int(user_input)   # Eller bruk float(user_input) for desimaltall
half_x = x / 2 # Bedre!
print("Halvparten av", x, "er", half_x)

Eksempel

# Finner arealet av stuen din.
print('Vi skal beregne arealet av stuen din!')

print('Hva er bredden (m) på stuen din? ')
bredde_str = input()
print('Hva er lengden (m) på stuen din? ')
lengde_str = input()

bredde_int = float(bredde_str)
lengde_int = float(lengde_str)

arealet = bredde_int * lengde_int
print('Stuen din er', arealet, 'm^2.')

Hvorfor må vi bruke float() før beregningen av arealet? Hva skjer om vi ikke bruker float?

Lengde

Vi kan bruke len() til å for eksempel lage understrekk under et navn.

navn = "Ola"

lengde = len(navn)
print("Navnet ditt har", lengde, "bokstaver.")

understrek = "-" * lengde  # hva skjer her?
print()
print(navn)
print(understrek)

print()
print()
print()

Maksimum

Funksjonen max() returnerer den maksimale verdien av de tingene du putter inn. Den kan ta hvor mange argumenter som helst. Før du kjører koden: hva tror du utskriften blir?

print(max(3, 1))
print(max(5, 12, -3))
print(max(4.2, 9, -13.4, 22.52, 14))
print(max("a", "bbb", "cc"))

a = 5+2
b = 13-4
print(max(a, b, 4+4))

Øvingsoppgaver

Se på følgende eksempelkode:

print("Skriv et tall:")
user_input = input()
x = int(user_input)
half_x = x / 2
print("Halvparten av", x, "er", half_x)

Kategoriser følgende som enten operasjon, funksjon, verdi, uttrykk, setning, tilordningssymbol eller variabel:

  • print("Skriv et tall:")
  • print
  • "Skriv et tall:"
  • user_input = input()
  • =
  • user_input
  • input()
  • input
  • int
  • x / 2
  • x
  • /
  • 2
  • half_x
Lag et program som spør brukeren om navnet sitt, og skriver ut navnet i en ramme. Eksempel på kjøring av programmet:
Skriv navnet ditt: Ola
+-----+
| Ola |
+-----+
Denne koden inneholder noen feil som gjør at den ikke kan kjøres. Finn feilen(e) og endre koden slik at den kan kjøres.
a = 7
b = 12
sted = 'Vi er i Bergen'
print(stedt)

flere = 'Aaa\nBbb\nCcc'
print(flere)

print('\n' + 3)

print(4 + )
print('4 + 7')

prin()

x = 12
y = 20
print('x =', x)
print('y =', y)
print('y - x =', z-x)
print()

x = x + 1
y = y + 5
print('x =', x)
print('y =', y)
print('y + x =', y-x)

print('God morgen!)
print('Hva heter du? ')
navn = input()
print('Hyggelig å hilse på deg,',navn)
print('Tall A:')
A = input()
print('Tall B:')
B = input()

print('Summen av A og B er:', a + b)

Å finne og fikse feil i koden én etter én er en vanlig måte å jobbe på. (Vanligvis er det ikke så mange feil som her). Heldigvis er Python ganske hjelpsom med å si ifra. Her er en typisk feilmelding:

File "errors_2.py", line 7
  Input("Hva heter du? ")
NameError: name 'Input' is not defined

Den første linjen forteller oss at feilen ligger i errors_2.py på linje 7. Den andre linjen viser oss innholdet til linje 7, der feilen er. Til slutt ser vi hva slags feil som har oppstått. Her er det en NameError og Python sier at Input (med stor I) ikke finnes. Vi fikser feilen ved å skrive input med liten i.

For å fikse alle feilene kan vi kjøre filen på nytt, få en ny feilmelding og fikse den også helt til vi ikke får flere feil.