Test deg selv - uke 37/38

Informasjon om test-deg-selv

Dette er oppgaver som er ment som mengdetrening i programmering. Det legges ut løsningsforslag etter at vi har gått gjennom og løst oppgavene i webinaret. Se Blackboard/Slack for mer informasjon om tidspunkt for dette.

Oppgavene er strukturert på samme måte som i øvingene: Det er tre kategorier: 1(grunnleggende), 2(forventet), 3(avansert). Kategori 1 og 3 har én oppgave hver, imens kategori 2 har fire oppgaver. Oppgavene i kategori 2 er det forventet at man klarer å løse.

Står du fast? Prøv å google problemet, eller spør om tips eller hjelp på Slack :)

TIPS!

For å fjerne den automatiske numereringen av markdown-celler (som gjør at cellene får en ekstra nummerering fra 1-10):

Trykk på knappen som er den nest ytterste til høyre på verktøylinja. Da kommer det en meny opp på venstre side i ruta, der det står "Contents". Trykk på tannhjulet, og kryss ut "Automatically number headings" og trykk OK.

Operatorer, input, output og biblioteker

1.1

Spør brukeren om å skrive inn et tall som han/hun vil finne kvadratroten av. Bruk funksjonen "sqrt" fra math-biblioteket, og finn kvadratroten av tallet. Print tallet, og kvadratroten, ut til konsoll med en passende tekst. Formater kvadratroten slik at den skrives ut med én desimal.

In [5]:
# 1.1 svar

import math

# Spør om et tall
fraBrk = int(input('Skriv tallet du vil finne kvadratroten av: '))

# Beregn kvadratroten
resultat = math.sqrt(fraBrk)

# Print til konsoll
print('Kvadratroten av',fraBrk, 'er:', format(resultat,'.1f'))

2.1

Skriv formelen under med python-kode. Bruk gjerne math-biblioteket hvis du ønsker. Print ut a gitt x = 5, y = 9.8 og n = 240 til konsoll, og rund av svaret til tre desimaler.

image.png

In [4]:
# 2.1 svar

import math as m

# Angi variablene
x = 5
y = 9.8
n = 240

# Regn ut formelen og legg resultatet i a
a = m.sqrt(((x-y)**2)/n)

print('Resultatet gitt x = 5, y = 9.8 og n = 240 er', format(a,'.3f'))

2.2

Skriv et program som spør brukeren om et desimaltall som representerer radiusen på en sirkel. Bruk turtle-biblioteket for å tegne sirkelen.

In [6]:
## 2.2 svar

import turtle

# Lag en turtle-instans vi kan bruke senere
t = turtle.Turtle()

# Hent radius fra bruker
radius = float(input('Hva er radius? '))

# Tegn sirkel med radius fra bruker
t.circle(radius)

# Hindre canvas'et fra å lukkes med en gang turtle'en er ferdig med å tegne
turtle.done()

2.3

Bruk av heltallsdivisjon og modulo

Erstatt ordet "None" i print-setningene med uttrykk med // og % , så påstandene blir riktige

1) print(355, "minutt blir", None, "timer.")

2) print(403, "sekund blir", None, "minutt og", None, "sekund.")

3) print(67, "dager blir", None, "måneder.")

4) print(100, "timer blir", None, "døgn og", None, "timer.")

Riktig utskrift skal være:

355 minutt blir 5 timer.

403 sekund blir 6 minutt og 43 sekund.

67 dager blir 2 måneder.

100 timer blir 4 døgn og 4 timer.

In [9]:
# 2.3 svar

#1)
print(355, 'minutt blir ',355//60, 'timer.')

#2) 
print(403, "sekund blir", 403//60, "minutt og", 403%60, "sekund.")

#3) 
print(67, "dager blir", 67//30, "måneder.")

#4) 
print(100, "timer blir", 100//24, "døgn og", 100%24, "timer.")

2.4

"Finn multiplikatoren".

Skriv et program som bruker random-biblioteket. Angi en variabel med et tilfeldig tall mellom 1-10 med funksjonen "random.randrange(1,10)", og spør brukeren om å angi et tall mellom 1-100. Multipliser tallet som brukeren angir med det tilfeldige tallet, og spør brukeren om å prøve å gjette hvilket tall mellom 1-10 han/hennes tall ble multiplisert med. Print ut hva brukeren gjettet, og hva som var riktig multiplikator.

In [15]:
# 2.4 svar

import random

# Henter er tilfeldig tall mellom 1-10
tilf = random.randrange(1,10)

# Henter er tall fra bruker mellom 1-100
brukerTall = int(input('Skriv et tall mellom 1-100! '))

# Regner ut brukerens tall multiplisert med det tilfeldige tallet
resultat = tilf*brukerTall

# Viser utregningen til bruker, og spør han/hun om å gjette hva tallet hans/hennes ble multiplisert med
gjett = input('Resultatet fra multiplik. ble '+str(resultat)+'. Hvilket tall tror du ditt tall ble multip. med? ')

# Printer resultatet med brukerens tall til konsoll og viser hva det ble multiplisert med
print('Ditt tall var '+str(brukerTall)+', og det ble multiplisert med '+str(tilf)+' for å få '+str(resultat)+'.')

3.1

Skriv et program som spør brukeren om hans/hennes fødselsår. Bruk datetime-biblioteket til å hente inn årstallet vi er i nå (sjekk for eksempel denne nettsiden for tips: https://www.w3schools.com/python/python_datetime.asp). Følg pseudokoden, og skriv ut til konsoll hvor mange hele uker det er igjen til det året han/hun blir 100 år gammel.

In [1]:
# 3.1

# Importer datetime-biblioteket
## Spør bruker om fødselsår, og lagre tallet i en variabel "fodt"

## Regn ut hvilket år personen blir 100 år, ved å plusse 100 på variablen "fodt",
#### og lagre det i en variabel "blir100"

## Hent inneværende år fra datetime-biblioteket og lagre det i variablen "innev"
## Finn ut hvor mange år det er til personen blir 100 år ved å trekke "innev" fra "blir100",
#### og lagre det i en variabel "aarTil100" 

## Regn ut hvor mange uker det er til året "blir100" ved å ta "aarTil100"*52, 
#### og lagre det i en variabel "ukerTil100"

## Print "ukerTil100" til konsoll med en forklarende tekst
In [24]:
# 3.1 svar
import datetime

# Hent fødselsår fra bruker
fodt = int(input('Hvilket år er du født? '))

# Regn ut hvilket år brukeren blir 100
blir100 = fodt+100

# Hent inneværende år fra datetime-biblioteket
now = datetime.datetime.now()
innev = now.year

# Regn ut hvor mange år det er til brukeren blir 100
aarTil100 = blir100-innev

# Regn ut hvor mange uker det er til brukeren blir 100 og print resultatet
ukerTil100 = aarTil100*52
print('Du blir 100 år om', ukerTil100, 'uker.')
In [ ]: