Løsningsforslag til oppgavene

Del 1: Skrive til skjerm, operatorer

  1. 
    print(3 + 4**2)
          
  2. 
    print(5*3 - 4**3)
      
  3. 
    print(4 + 2/(3 - 4**2))
    
      
  1. 
    print(-5.33**2 + (7**2 - 3**2)/(8/3))
    
      
  2. 
    print(2/3 + 1 - 2**(-1/3))
    
    

Del 2: Operatorer (fortsetter)

  1. 
    print(50//6)
      
  2. 
    print(50%6)
      
  1. 
    print(167335 % 3 == 0)
        
  2. 
    print(64%2 == 0)
        
  3. 
    print(115469 % 12)
        

Del 3: Variabler


a = 5
a += 5
a += 5
a += 5

  

a = 2
b = 3
c = a
a = b
b = c
  

v_0 = 5
a = 9.81
t = 4
uttrykk = v_0*t + (1/2)*a*t**2
  

Del 4: Formatere utskrift


tall = 56
print(f'Verdien av variabelen tall er {tall}.')
  

a = 11/7
print(f"{a:.2f}")
  

Del 5: Hente inn opplysninger fra brukeren


fornavn = input("Skriv inn fornavnet ditt: ")
etternavn = input("Skriv inn etternavnet ditt: ")
print(f"Hei, {fornavn} {etternavn}!")
  

tall = float(input("Skriv inn et tall: "))
print(f"Du tastet inn tallet {tall}.")
  

tall = float(input("Skriv inn et tall: "))
halvparten = tall/2
print(f"Halvparten av {tall} er {halvparten}.")
  

tall = int(input("Skriv inn et tall: "))
antall = (tall//5)
print(f"Tallet {tall} er minst {antall} ganger så stort som 5.")
  

Del 6: Sannhetsverdier og vilkår


tall = int(input("Skriv inn et tall: "))
if tall > 0:
    print(f"Tallet {tall} er positivt.")
elif tall < 0:
    print(f"Tallet {tall} er negativt.")
else:
    print(f"Tallet {tall} er null.")
  

tall1 = int(input("Skriv inn et tall: "))
tall2 = int(input("Skriv inn et tall til: "))

if tall1 == tall2:
    print(f"Tallene {tall1} og {tall2} er like.")
else:
    print(f"Tallene {tall1} og {tall2} er ikke like.")
  

tall = int(input("Skriv inn et tall: "))

if tall%2==0:
    print(f"Tallet {tall} er et partall.")
else:
    print(f"Tallet {tall} er et oddetall.")
  

tall1 = float(input("Skriv inn et tall: "))
tall2 = float(input("Skriv inn et tall: "))

if tall1*tall2 > 0:
    print(f"Tallene {tall1} og {tall2} har samme fortegn.")
elif tall1*tall2 < 0:
    print(f"Tallene {tall1} og {tall2} har ulikt fortegn.")
else:
    print(f"Et av tallene {tall1} eller {tall2} er null.")
  

Del 7: Løkker, for-løkke


for i in range(1, 101,2):
    print(i)
  

Alternativ løsning:


for i in range(0, 100):
    if i%2 == 1:
        print(i)
  

print("x\t f(x)")
print("-------------")

for x in range(0, 10):
    print(f"{x}\t {x**2 + 3*x - 1}")
  

Litt penere utskrift:


print(" x\t f(x)")
print("-------------")

for x in range(0, 10):
    print(f"{x:2}\t {x**2 + 3*x - 1:4}")
  

for i in range(4):
    print('x'*(2*i + 1))
  

Del 8: while-løkke


start = 1
slutt = 128
svar = 0
temp = start

while temp != slutt:
    svar += 1
    temp *= 2

print(f"Løsningen er {svar}.")
  

start = 7
slutt = 15
svar = 0
temp = start

while slutt - temp > 0:
    svar += 1
    temp += 1

print(f"{slutt}-{start} = {svar}")
  

fortsett = True

while fortsett:
    print("Hei, hei! :)")
    svar = input("Vil du fortsette? Svar «ja» eller «nei»: ")
    if svar == "nei":
        fortsett = False
  

Del 9: Funksjoner


def multiplikasjon(n,m):
    return n*m
  

def f(x):
    return 3*x**2 + 3

x = float(input('Skriv inn x-verdi: '))
y = f(x)

print(f'f({x}) = {y}')
  

def utskrift(argument):
    print(argument)
    print(argument)
    print(argument)

  

def addisjon(n, m):
    print(f"{n} + {m} = {n+m}")
  

Del 10: Lister, feilsøking


liste = [0,1,2,3,4,5,6,7,8,9]

print(liste)

  

liste = []
liste.append("Niels")
liste.append("Henrik")
liste.append("Caspar")

print(liste)

  

liste = []
liste.append('m')
liste.append('ø')
liste.append('n')
liste.append('s')
liste.append('t')
liste.append('e')
liste.append('r')

antall = len(liste)

print(f'Det er {antall} elementer i lista.')

  

matematikere = ['Abel', 'Bernoulli', 'Cauchy', 'Descartes', 'Euler', 'Fibonacci',\
         'Gauss', 'Hilbert', 'ibn Musa al-Khwarizmî', 'Jacobi']

tredje = matematikere[2]
fjerde = matematikere[3]
femte = matematikere[4]
print(tredje, fjerde, femte)
  

liste = []

ønsket_lengde = int(input("Skriv inn et heltall: "))

print(f"Legger inn {ønsket_lengde} 1-tall i en liste.")

while len(liste) < ønsket_lengde:
    liste.append(1)

print(liste)
  

def f(x):
    return x**2 + 3*x - 1

xverdier = []
yverdier = []

fortsett = True

while fortsett:
    svar = input('Skriv inn x-verdi. (Avslutt med "q".) ')
    if svar.lower() == 'q':
        fortsett = False
    else:
        x = float(svar)
        xverdier.append(x)

for x in xverdier:
    yverdier.append(f(x))

print('x\t f(x)')
for i in range(len(xverdier)):
    print(f'{xverdier[i]:7} {yverdier[i]:7}')
  

Del 11: Eksterne bibliotek: Math, NumPy


import math

print(math.pi)
print(math.sqrt(15))

  

import numpy as np

x_verdier = np.arange(0,10,.1)

def f(x):
    return x**2 + 3*x + 1
for x in x_verdier:
    print(f"{x:.2f}\t{f(x):.2f}")
  

Det er mange måter å skrive dette programmet på. Her kommer én mulig variant.


import random

fortsett = True
poeng_maskin = 0
poeng_bruker = 0

while fortsett:
    maskin = random.randint(1,3) #1=stein, 2=saks, 3=papir
    bruker = input("Skriv inn st(ein), sa(ks) eller p(apir): ")

    if maskin == 1:
        maskinvalg="stein"
    elif maskin ==2:
        maskinvalg="saks"
    else:
        maskinvalg="papir"
    #
    if bruker == "st":
        brukervalg="stein"
    elif bruker =="sa":
        brukervalg="saks"
    elif bruker == "p":
        brukervalg="papir"
    else:
        print("Feil! Du skulle tastet inn st, sa eller p.")

    print(f"\nDu valgte {brukervalg}.")
    print(f"Maskinen valgte {maskinvalg}.")

    if (bruker == 'st' and maskin==1):
        print("Uavgjort!")
    elif (bruker == 'st' and maskin==2):
        poeng_bruker += 1
        print("Du vinner.")
    elif (bruker == 'st' and maskin==3):
        poeng_maskin += 1
        print("Maskinen vinner.")
    elif (bruker == 'sa' and maskin==2):
        print("Uavgjort!")
    elif (bruker == 'sa' and maskin==3):
        poeng_bruker += 1
        print("Du vinner.")
    elif (bruker == 'sa' and maskin==1):
        poeng_maskin += 1
        print("Maskinen vinner.")
    elif (bruker == 'p' and maskin==3):
        print("Uavgjort!")
    elif (bruker == 'p' and maskin==1):
        poeng_bruker += 1
        print("Du vinner.")
    elif (bruker == 'p' and maskin==2):
        poeng_maskin += 1
        print("Maskinen vinner.")
    else:
        print("Noe galt skjedde.")

    print("")
    svar = input("Vil du spille igjen? (j/n) ")
    if svar.lower() != "j":
        print("Da slutter vi. :-)")
        fortsett = False
        if poeng_bruker > poeng_maskin:
            print(f"Du vant! Stillingen ble {poeng_bruker} – {poeng_maskin} til deg.")
        elif poeng_bruker < poeng_maskin:
            print(f"Maskinen vant. Stillingen ble {poeng_maskin} – {poeng_bruker} til maskinen.")
        else:
            print("Det ble uavgjort!")
  

Del 12: Tegne grafer


import matplotlib.pyplot as plt
plt.plot([0, 5, 10, 15],[30, 43, 55, 60],'o')
  

import matplotlib.pyplot as plt
import numpy as np

xstart = -5
xslutt = 5
trinn = 0.01

def f(x):
    return x**2 + 3*x - 4

x = np.arange(xstart, xslutt, trinn)
y = f(x)

plt.plot(x, y)
  

Del 13: Oppgavesamling


partall = []
for i in range(0,101,2):
    partall.append(i)
  

def gjennomsnitt(a, b):
    return (a + b)/2

for i in range(2,10,2):
    print(gjennomsnitt(i, i+1))
  

tall = int(input("Skriv inn et tall: "))
temptall = tall
teller = 0

while temptall > 1:
    teller += 1
    temptall /= 10

print(f"Tallet {tall} har {teller} sifre.")
  

tall = int(input("Skriv inn et tall: "))
summen = 0

for i in range(tall + 1):
    summen += i

print(summen)
  

tall = int(input("Skriv inn et oddetall: "))

if tall%2 != 1:
    print("Tallet er ikke et oddetall!")
else:
    summen = 0
    for i in range(1, tall + 1, 2):
        summen += i
    print(summen)
  

tall = int(input("Skriv inn et heltall: "))

for i in range(1, tall):
    if i%6 == 0:
        print(i)
  

a_i = 1
a_j = 1
print(a_i)
print(a_j)

for i in range(2, 100):
    a_k = a_i + a_j
    print(a_k)
    a_i = a_j
    a_j = a_k
  

for i in range(4):
    print(' ' * (4 - (i+1)),'x' * (2*i+1))
  

primtall = [2]
for i in range(3,100,2):
    iPrimisk = True
    for j in primtall:
        if i % j == 0:
            iPrimisk = False
    if iPrimisk:
        primtall.append(i)
  

tall = int(input("Skriv inn et heltall: "))

primtallsfaktorer = [1]

for i in range(2,tall):
    if tall%i == 0:
        iPrimtallsfaktor = True
        for j in primtallsfaktorer[1:]:
            if i%j == 0:
                iPrimtallsfaktor = False
        if iPrimtallsfaktor:
            primtallsfaktorer.append(i)

if primtallsfaktorer == [1]:
    print(f"Tallet {tall} er et primtall.")
else:
    print(f"Største primtallsfaktor i {tall} er {max(primtallsfaktorer[1:])}.")
  

teller = 0
n = 1

while teller < 4:
    objekt = n
    funnet = False
    while not funnet:
        objekt += 1
        divisorer = [1]
        for i in range(2, objekt):
            if objekt%i == 0:
                divisorer.append(i)
        if sum(divisorer) == objekt:
            funnet = True
    teller += 1
    print(objekt)
    n = objekt

  
  1. 
    def f(x):
        return x**2 + 2*x + 3
    
    print(f'x\t f(x)')
    
    for x in range(10):
        print(f'{x}\t {f(x)}')
      
  2. 
    def f(x):
        return x**2 + 2*x + 3
    
    nedregrense = int(input('Skriv inn nedre grense: '))
    øvregrense = int(input('Skriv inn øvre grense: '))
    trinnlengde = int(input('Skriv inn trinnlengde: '))
    
    print(f'x\t f(x)')
    
    for x in range(nedregrense, øvregrense + 1, trinnlengde):
        print(f'{x}\t {f(x)}')