diff --git a/uke36/python/forelesning.py b/uke36/python/forelesning.py new file mode 100644 index 0000000000000000000000000000000000000000..4a10d1865acc19e3763837d7821e93ea40081a60 --- /dev/null +++ b/uke36/python/forelesning.py @@ -0,0 +1,12 @@ +tall = 435.50551 +x = -3 + +pre, post = str(tall).split('.') + +if x < 0: + t2 = pre[x+1]+post +print(t2 > "5") + + +# print(post[x:]) +# print(post[x:] > "5") \ No newline at end of file diff --git a/uke36/python/puls_forelesning.py b/uke36/python/puls_forelesning.py new file mode 100644 index 0000000000000000000000000000000000000000..31451f22f8af4aec29e8ee5d653f830f1c089cfa --- /dev/null +++ b/uke36/python/puls_forelesning.py @@ -0,0 +1,3 @@ +while True: + print('sant') + diff --git a/uke37/Python/avansert_for.py b/uke37/Python/avansert_for.py new file mode 100644 index 0000000000000000000000000000000000000000..47ab0b3b1c64d49945e77529ab71756673acfd56 --- /dev/null +++ b/uke37/Python/avansert_for.py @@ -0,0 +1,26 @@ +# Dette eksempelet er ikke noe en skal kunne lage selv. +# Tanken er heller: kan du forstå hva koden gjør for noe? + +# Du skal registrere tiden noen bruker hver runde på å løpe +# så langt som de skriver inn rundt en 400 meters bane. +# Du skal be dem legge inn rundetid for hver runde +# For hver runde: + # Skrive ut samlet tid brukt + # Skrive ut hastighet (km/h) for den runden + +banelengde = 400 +hvorlangt = int(input('Hvor langt: ')) + +sammenlagttid = 0 +status = 0 + + +for runde in range (1, (hvorlangt // banelengde) + 2): + rundetid = int(input(f"tid på runde {runde}: ")) + sammenlagttid += rundetid + status += banelengde + # TODO: siste runde er ikke alltid banelengdelengde! + # Hvordan påvirker det utregning av hastighet? + # Hvordan finner vi ut hvor langt det _egentlig_ ble løpt siste runde? + print(f"hastighet runde {runde}: {(banelengde/rundetid)*3.6:.2f} km/time.") + print(runde, rundetid, sammenlagttid, status) \ No newline at end of file diff --git a/uke37/Python/gangetabell.py b/uke37/Python/gangetabell.py new file mode 100644 index 0000000000000000000000000000000000000000..e4b7dd64842476218f80d8a16202d4b220e13f29 --- /dev/null +++ b/uke37/Python/gangetabell.py @@ -0,0 +1,14 @@ +# Lage overskrift + +print('\t',end='') # Den tomme greia der tittelx krysser tittely tabbes bort +for y in range(1, 11): + print(f'y:{y}\t',end='') +print() + +# LoopDeLoop - for alle xer går du igjennom alle yer +for x in range(1,11): + print(f'x:{x}\t',end='') + for y in range(1,11): + # legger inn en tab mellom hver, og ikke linjeskift + print(f'{x*y}\t',end='') + print('') # linjeskift etter hver hele x \ No newline at end of file diff --git a/uke37/Python/intro_for.py b/uke37/Python/intro_for.py new file mode 100644 index 0000000000000000000000000000000000000000..e85d8839f3e6424caa441adad3c0923bdbe54c97 --- /dev/null +++ b/uke37/Python/intro_for.py @@ -0,0 +1,26 @@ +# https://play.kahoot.it/#/k/3424402e-b469-4b48-98b7-270fbc572281 + +#coding=utf-8 +# For - loopies + +# Den enkleste - fra 0 til og uten et heltall + +# Den litt mer avanserte: fra et tall til og uten et annet + +# Enda mer avansert: Fra et tall, til og uten et annet tall, men hopp n hver gang! + +# Avansertest: Kan man loope tegnene i en streng? + +# Avansertestestere: Kan man... uhm... +# Hvis jeg vil loope gjennom mange ulike tall jeg vet på forhånd... +# Er det noe i senere pensum som kan hjelpe meg med det? Pliiiis!!!1! [te] +# Hint til neste år: iterable + +# Avansertestest: kan vi... uhm... gå nedover? Telle baklengs? fra bakerste bokstav? + +# Avansertestestere: Vi får se om vi har tid til en oppgave eller to om for-løkker. +# Som: + # spør om og lagre en streng + # spør hvor stort hopp du skal gjøre mellom hvert tegn + # for hvert hopp gjennom strengen skriver du ut om bokstaven er en vokal: + # bokstav in 'aeiouyæøå' diff --git a/uke37/Python/intro_while.py b/uke37/Python/intro_while.py new file mode 100644 index 0000000000000000000000000000000000000000..327920931a23f332226adbd6aa4748c6850412fc --- /dev/null +++ b/uke37/Python/intro_while.py @@ -0,0 +1,58 @@ +# Hva gjorde vi sist +# Oppsummeringssider - powerpoint - nå med to ekstra sider! + +# Dagens tema: løkker og sløyfer +# while +# for + + +# Oppgave 1: +# Be brukeren om å skrive inn en streng som er enten 'krone' eller 'mynt' +# Hvis svaret er 'krone' skriver du ut 'krone' +# Hvis svaret er 'mynt' skriver du ut 'mynt' +# ellers skriver du ut 'feil svar' + +# Oppgave 2: brukeren kan skrive 'k' eller 'm' også! +# hvordan skal du snike inn en or i de to testene? +# Dette er en utrolig vanlig feil: tall == 3 or 4 + +# Oppgave 3: gjør dette i en uendelig løkke +# tips: hvis du skal 'lempe' en de linjer ett hakk mot høyre, +# da kan du markere dem og trykke på <tab> (shift-tab mot venstre) + +# Oppgave 4 +# Lag to variable, krone og mynt, FØR while-løkken, begge 0. +# Hvorfor må disse variablene deklareres før løkken og ikke inni? +# Øk respektive variabel med 1 basert på om det blir krone eller mynt. +# Hver gang gjennom løkken skal du til slutt skrive ut +# hvor mange krone og mynt brukeren har skrevet inn til nå. + + +# Oppgave 5: Tell antall ganger du har kastet krone eller mynt +# Hvor må du deklarere denne variabelen for at den skal +# 'holde seg' hver gang gjennom løkken? +# Bonuspoeng hvis du skriver ut prosentandel krone hver runde + +# Oppgave 6: Avslutt etter ti kast! +# while tester om noe er sant. Er det sant, da kjører den løkken +# Hvis ikke, da avslutter den løkken og går videre +# Hvordan kan du endre while-testen så den returnerer sant hvis og bare hvis +# variabelen kast er ti eller mindre? + +# Oppgave 7: Rensk opp +# Fjern unødvendige utskrifter +# Endre slik at du skriver ut antall kron, mynt (og prosentandel mynt) +# etter at alle er skrevet inn + +# Oppgave 8: hvorfor 10 kast? +# Spør brukeren hvor mange ganger det skal kastes +# hvordan kan en bruke dette rett i while-testen? + + +# Oppgave 9: hvorfor bestemme kast først? +# Det er mye bedre å spørre brukeren om hen skal kaste en +# gang til. Endre ting slik at du i stedet spør i slutten av +# løkka om man skal legge inn en gang til, og så sjekker while +# mot denne. Men da må du ha satt den til noe før du går inn i +# løkka også. Men denne er ment å være tricky, jeg viser løsningen +# i videoen. OG eksempel i jukselappen i samme folder som denne! diff --git a/uke37/Python/intro_while_fasit_ikke_se_da_faller_nesa_di_av.py b/uke37/Python/intro_while_fasit_ikke_se_da_faller_nesa_di_av.py new file mode 100644 index 0000000000000000000000000000000000000000..8c355e805d6327579eea526cf70744721c696468 --- /dev/null +++ b/uke37/Python/intro_while_fasit_ikke_se_da_faller_nesa_di_av.py @@ -0,0 +1,203 @@ +# Hva gjorde vi sist +# Oppsummeringssider - powerpoint - nå med to ekstra sider! + +# Dagens tema: løkker og sløyfer +# while +# for + + +# Oppgave 1: +# Be brukeren om å skrive inn en streng som er enten 'krone' eller 'mynt' +# Hvis svaret er 'krone' skriver du ut 'krone' +# Hvis svaret er 'mynt' skriver du ut 'mynt' +# ellers skriver du ut 'feil svar' +''' +svar = input("krone eller mynt(m): ") + +if svar == 'krone': + print('krone') +elif svar == 'mynt': + print('mynt') +else: + print('feil svar') +''' + +# Oppgave 2: brukeren kan skrive 'k' eller 'm' også! +# hvordan skal du snike inn en or i de to testene? +# Dette er en utrolig vanlig feil: tall == 3 or 4 +''' +svar = input("krone(k) eller mynt(m): ") + +if svar == 'k' or svar == 'krone': + print('krone') +elif svar == 'm' or svar == 'mynt': + print('mynt') +else: + print('feil svar') +''' + +# Oppgave 3: gjør dette i en uendelig løkke +# tips: hvis du skal 'lempe' en de linjer ett hakk mot høyre, +# da kan du markere dem og trykke på <tab> (shift-tab mot venstre) +''' +while True: + svar = input("krone(k) eller mynt(m): ") + + if svar == 'k' or svar == 'krone': + print('krone') + elif svar == 'm' or svar == 'mynt': + print('mynt') + else: + print('feil svar') +''' + +# Oppgave 4 +# Lag to variable, krone og mynt, FØR while-løkken, begge 0. +# Hvorfor må disse variablene deklareres før løkken og ikke inni? +# Øk respektive variabel med 1 basert på om det blir krone eller mynt. +# Hver gang gjennom løkken skal du til slutt skrive ut +# hvor mange krone og mynt brukeren har skrevet inn til nå. + +''' +krone, mynt = 0,0 +while True: + svar = input("krone(k) eller mynt(m): ") + + if svar == 'k' or svar == 'krone': + print('krone') + krone += 1 + elif svar == 'm' or svar == 'mynt': + print('mynt') + mynt += 1 + else: + print('feil svar') + print(f'Krone: {krone}, mynt: {mynt}') +''' + +# Oppgave 5: Tell antall ganger du har kastet +# Hvor må du deklarere denne variabelen for at den skal +# 'holde seg' hver gang gjennom løkken? +# Bonuspoeng hvis du skriver ut prosentandel krone hver runde +''' +krone = 0 +mynt = 0 +kast = 0 +while True: + svar = input("krone(k) eller mynt(m): ") + + if svar == 'k' or svar == 'krone': + print('krone') + krone += 1 + elif svar == 'm' or svar == 'mynt': + print('mynt') + mynt += 1 + else: + print('feil svar') + kast += 1 + print(f'Kast: {kast}, krone: {krone}, mynt: {mynt}') + print(f'Prosentandel krone: {(krone/kast)*100:>4.2f}') # Og litt fint formatert + # En student postet denne løsningen på forelesning + print(f'Prosentandel krone: {(krone/(krone+mynt)):.2%}') + # En mye vakrere løsning! Det kule med Python er at det er så mange veier til målet. +''' + +# Oppgave 6: Avslutt etter ti kast! +# while tester om noe er sant. Er det sant, da kjører den løkken +# Hvis ikke, da avslutter den løkken og går videre +# Hvordan kan du endre while-testen så den returnerer sant hvis og bare hvis +# variabelen kast er ti eller mindre? +''' +krone = 0 +mynt = 0 +kast = 0 +while kast < 10: # Vi starter med 0, så da blir ti kast 0 - 9 + svar = input("krone(k) eller mynt(m): ") + + if svar == 'k' or svar == 'krone': + print('krone') + krone += 1 + elif svar == 'm' or svar == 'mynt': + print('mynt') + mynt += 1 + else: + print('feil svar') + kast += 1 + print(f'Kast: {kast}, krone: {krone}, mynt: {mynt}') + print(f'Prosentandel krone: {(krone/kast)*100:>4.2f}') # Og litt fint formatert +''' + + +# Oppgave 7: Rensk opp +# Fjern unødvendige utskrifter +# Endre slik at du skriver ut antall kron, mynt (og prosentandel mynt) +# etter at alle er skrevet inn +''' +krone = 0 +mynt = 0 +kast = 0 +while kast < 10: # Vi starter med 0, så da blir ti kast 0 - 9 + svar = input("krone(k) eller mynt(m): ") + + if svar == 'k' or svar == 'krone': + krone += 1 + elif svar == 'm' or svar == 'mynt': + mynt += 1 + else: + print('feil svar') + kast += 1 +print(f'Kast: {kast}, krone: {krone}, mynt: {mynt}') +print(f'Prosentandel krone: {(krone/kast)*100:>4.2f}') # Og litt fint formatert +''' + + + +# Oppgave 8: hvorfor 10 kast? +# Spør brukeren hvor mange ganger det skal kastes +# hvordan kan en bruke dette rett i while-testen? +''' +krone = 0 +mynt = 0 +kast = int(input("Hvor mange kast?")) +while kast > 0: # Hvis vi teller nedover med 1 hver gang... + svar = input("krone(k) eller mynt(m): ") + + if svar == 'k' or svar == 'krone': + krone += 1 + elif svar == 'm' or svar == 'mynt': + mynt += 1 + else: + print('feil svar') + kast -= 1 +# Under: Ser du at jeg plutselig ikke kan bruke variabelen kast lenger? +# Hvorfor ikke? Hva gjør jeg med den over? Men det var en omvei! +print(f'Kast: {krone+mynt}, krone: {krone}, mynt: {mynt}') +print(f'Prosentandel krone: {(krone/(krone+mynt))*100:>4.2f}') +''' + + +# Oppgave 9: hvorfor bestemme kast først? +# Det er mye bedre å spørre brukeren om hen skal kaste en +# gang til. + +krone = 0 +mynt = 0 +igjen = True +svar = input("krone(k) eller mynt(m) (q avslutter): ") +while svar != 'q': + + if svar == 'k' or svar == 'krone': + krone += 1 + elif svar == 'm' or svar == 'mynt': + mynt += 1 + else: + print('feil svar') + svar = input("krone(k) eller mynt(m) (q avslutter): ") +# Under: her feiler utregningen hvis en aldri kaster. Legger derfor til +# en liten sjekk for å se om det faktisk ble kastet noe. +if krone + mynt > 0: + print(f'Kast: {krone+mynt}, krone: {krone}, mynt: {mynt}') + print(f'Prosentandel krone: {(krone/(krone+mynt))*100:>4.2f}') + + + + diff --git a/uke37/Python/loopy_hashes.py b/uke37/Python/loopy_hashes.py new file mode 100644 index 0000000000000000000000000000000000000000..d2f7c3a82a061a5ae1d0967f7815d33ce619ae24 --- /dev/null +++ b/uke37/Python/loopy_hashes.py @@ -0,0 +1,6 @@ +#coding=utf-8 +# En litt mer grafisk beskrivelse av hvordan en kjører løkker + +for i in range(0,20,2): + print("x"*i) + diff --git "a/uke37/Python/mer/Bartel\303\270kke.py" "b/uke37/Python/mer/Bartel\303\270kke.py" new file mode 100644 index 0000000000000000000000000000000000000000..67c383b8854f5cd94868fbb2959074604be84ed8 --- /dev/null +++ "b/uke37/Python/mer/Bartel\303\270kke.py" @@ -0,0 +1,18 @@ + +lengde = 0 +antall = 0 +total = 0 + +while True: + lengde = int(input("Hvor lang er barten? (0 avslutter): ")) + if lengde == 0: + print("Snittlengde av",antall,"barter: ",total/antall) + break + if lengde < 0: + print("Legg inn positive bartelengder, du...") + continue + total += lengde + antall += 1 +print("Ferdig med bartemåling!") + + \ No newline at end of file diff --git a/uke37/Python/mer/alder.py b/uke37/Python/mer/alder.py new file mode 100644 index 0000000000000000000000000000000000000000..c994caf22fd47f33b7f9509ebbf0afb3f362301a --- /dev/null +++ b/uke37/Python/mer/alder.py @@ -0,0 +1,11 @@ +alder = int(input("Hvor gammel er du? ")) +while (alder<0 or alder>120): + print("Feil: Alder må være mellom 0 og 120!") + alder = int(input("Hvor gammel er du? ")) + +print("Takk for den din "+str(alder)+"åring!!!") +# Merk bruken av + i print, den må ha str(tall) +# alternativt +print(f"Takk for den din {alder}åring!!!") + + diff --git a/uke37/Python/mer/break_continue.py b/uke37/Python/mer/break_continue.py new file mode 100644 index 0000000000000000000000000000000000000000..d9b6fd6962423d5ec6750a03f557c8583042d411 --- /dev/null +++ b/uke37/Python/mer/break_continue.py @@ -0,0 +1,21 @@ +import random + +tall = random.randint(0,100) +ganger = 0 # Teller hvor mange ganger man gjetter + +while True: + gjett = int(input("Gjett et tall mellom 0 og 100: ")) + if not (0 < gjett < 100): + print("Tallet må være mellom 0 og 100") + continue + ganger += 1 + if tall == gjett: + print("Riktig! Forsøk: ",ganger) + break + elif gjett < tall: + print("Høyere") + elif gjett > tall: + print("Lavere") + + + \ No newline at end of file diff --git a/uke37/Python/mer/gjettespill.py b/uke37/Python/mer/gjettespill.py new file mode 100644 index 0000000000000000000000000000000000000000..e1d5f8c2955744e9c4c47363c10c907814070c93 --- /dev/null +++ b/uke37/Python/mer/gjettespill.py @@ -0,0 +1,13 @@ +import random # Henter inn random-biblioteket + +tall = random.randint(1,100) # tall mellom 1 og 100 +gjett = -1 + +while (tall!=gjett): #så lenge man gjetter feil + gjett = int(input("Gjett tall mellom 1 og 100: ")) + if (gjett>tall): + print("Psst: Litt for stort!") + elif (gjett<tall): + print("Psst: Litt for smått!") + +print("RIKTIG!!!! Hvordan klarte du det????") diff --git a/uke37/Python/mer/klokkami.py b/uke37/Python/mer/klokkami.py new file mode 100644 index 0000000000000000000000000000000000000000..2f529a89c78d17102e3f4f5efdccf16eba2abefd --- /dev/null +++ b/uke37/Python/mer/klokkami.py @@ -0,0 +1,6 @@ +i = 0 + +while True: + i += 1 + if i % 10000000 == 0: + print(i) \ No newline at end of file diff --git a/uke37/Python/mer/kort.py b/uke37/Python/mer/kort.py new file mode 100644 index 0000000000000000000000000000000000000000..802074d316d0394b404b0282f542aeb62351aba0 --- /dev/null +++ b/uke37/Python/mer/kort.py @@ -0,0 +1,9 @@ +sum = 0 + +# Synes du det ser ut som det er unødvendig mange parenteser her? Fjerne den ytterste og se hva som skjer. +# Men hva skjer da!? Hvorfor kræsjer det ikke, når en forsøke å bruke pluss med True? hva blir 1 + True? + +while tall := int(input("Skriv inn neste tall, 0 avslutter: ")) != 0: + print(tall) + sum = sum + tall +print(sum) \ No newline at end of file diff --git a/uke37/Python/mer/kvadrat.py b/uke37/Python/mer/kvadrat.py new file mode 100644 index 0000000000000000000000000000000000000000..0734e5eb2beaba0ef1e64488854635289824c228 --- /dev/null +++ b/uke37/Python/mer/kvadrat.py @@ -0,0 +1,3 @@ +for x in range(3,31,3): + print(x,"\t",x**2) + diff --git a/uke37/Python/mer/my_gjette.py b/uke37/Python/mer/my_gjette.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/uke37/Python/mer/summer.py b/uke37/Python/mer/summer.py new file mode 100644 index 0000000000000000000000000000000000000000..775b903594955d233afbee37f5387363903e7e07 --- /dev/null +++ b/uke37/Python/mer/summer.py @@ -0,0 +1,11 @@ +summen = 0 +tall = -1 # Setter variabelen tall til ikke å være lik 0 +print("Programmet summerer tallene du skriver inn") +print("Avslutt summeringen ved å skrive 0") + +while tall!=0: # Saa lenge tall er ikke lik 0 + tall = int(input("Skriv inn et tall, avslutt med 0: ")) + summen = summen + tall + +print("Summen av tallene blir",summen) + diff --git a/uke37/Python/mer/tid.py b/uke37/Python/mer/tid.py new file mode 100644 index 0000000000000000000000000000000000000000..ed0ce532c08fd516fd882bde8d71db49eab60a1a --- /dev/null +++ b/uke37/Python/mer/tid.py @@ -0,0 +1,7 @@ + +for t in range(24): + print('ding ding') + for m in range(60): + for s in range(60): + print(f'{t}:\t{m}:\t{s}') + diff --git a/uke37/Python/mer/walrus.py b/uke37/Python/mer/walrus.py new file mode 100644 index 0000000000000000000000000000000000000000..9ea4fa30a572c26001ad027ae0fdbcc3c61b1d2c --- /dev/null +++ b/uke37/Python/mer/walrus.py @@ -0,0 +1,5 @@ +# Dette benytter seg av 'walrus operator'. Noen liker det, andre ikke. Det kan lett bli uoversiktlig, +# samtidig slipper man å kickstarte en whileløkke før man hopper inn i den. + +while alder := int(input("tall: ")) < 100: + print("For lavt") \ No newline at end of file diff --git a/uke37/TDT4109_uke37_kort_BH.pdf b/uke37/TDT4109_uke37_kort_BH.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4fae9b2cabfae9c5693f7fa8b6a02471b4a2a09a Binary files /dev/null and b/uke37/TDT4109_uke37_kort_BH.pdf differ