Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Like dokumenter
TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

Oppsummering fra sist

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Funksjoner og moduler Kapittel

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Læringsmål og pensum. if (be): else (not_to_be):

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

Øvingsforelesning 5 Python (TDT4110)

Øvingsforelesning 5 Python (TDT4110)

Øvingsforelesning 3 Python (TDT4110)

Hvordan løse problemer med programmering?

Repetisjon Novice Videregående Python PDF

YouTube-kanal ITGK. Læringsmål og pensum

Bruk piazza for å få rask hjelp til alles nytte!

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Læringsmål og pensum. Oversikt

print("hurra!") som ikke har innrykk, er ikke del av løkka, og vil derfor bare bli utført en gang, etter at løkka er ferdig.

TDT4110 IT Grunnkurs Høst 2015

Python: Strenger 3. utgave: Kapittel 8

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

TDT4110 IT Grunnkurs Høst 2016

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Løse reelle problemer

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

IN uke 1. Komme i gang med programmering

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Lister og tupler Gaddis: Kapittel 7

Sprettball Erfaren ComputerCraft PDF

Pensum: Starting out with Python

TDT4110 IT Grunnkurs Høst 2016

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

Mattespill Nybegynner Python PDF

IN uke 1. Komme i gang med programmering

Python: Funksjoner og moduler Kapittel

TDT4110 IT Grunnkurs Høst 2014

JS: Grunnleggende JavaScript Nybegynner

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Løkker og arrayer. Løse problemer med programmering. INF1000, uke3 Geir Kjetil Sandve

Metoder med parametre, løkker og arrayer

Excited. Hvordan komme i gang med tekstbasert programmering? Centre for Excellent IT Education. Guttorm Sindre

MAT1030 Plenumsregning 1

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger Utgave 3: Kap. 8

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

TDT4105 Informasjonsteknologi, grunnkurs

Læringsmål og pensum. v=nkiu9yen5nc

Løse reelle problemer

Objektorientert programmering i Python

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

Et lite oppdrag i bakgrunnen

MAT1030 Diskret Matematikk

TDT4110 Informasjonsteknologi grunnkurs: Uke 48 Oppsummering/Spørretime. Professor Alf Inge Wang

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning i Python (TDT4110)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler. - 3rd edition: Kapittel Professor Alf Inge Wang

Oppgaver uke 1: Løsningsforslag

Steg 1: Rest etter divisjon

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

Øvingsforelesning 1 Python (TDT4110)

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

JS: Grunnleggende JavaScript

Læringsmål og pensum. Intro til returverdifunksjoner: Generering av tilfeldige tall 27/09/16

TDT4105 Informasjonsteknologi, grunnkurs

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Løkker og lister. Løse problemer med programmering. INF1001, uke3 Geir Kjetil Sandve

Hangman. Level. Introduksjon

Finne ut om en løsning er helt riktig og korrigere ved behov

Løse reelle problemer

HØGSKOLEN I SØR-TRØNDELAG

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

Finne ut om en løsning er helt riktig og korrigere ved behov

En enkel while-løkke. 1 of :28. 2 of :28. while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Dagens forelesning. Husk prøveeksamen Fredag 15/3-13 kl 12 i R1. Iterator-teknikken. Eksempel med bruk av Iterator og Iterable-grensesnittene

Øvingsforelesning i Matlab TDT4105

Transkript:

Python: Løkker TDT4110 IT Grunnkurs Professor Guttorm Sindre

Læringsmål og pensum Mål Forstå hvorfor vi trenger løkker i programmering Ha kjennskap to ulike typer løkker (while-løkke, for-løkke) Og vite når det er best å bruke hvilken Praktiske ferdigheter i bruk av while-løkke Praktiske ferdigheter i bruk av for-løkke Pensum Starting out with Python: Chapter 4 Repetition Structures 2

Intro løkker Kapittel 5.1

Løkker - gjenta kodelinjer HVORFOR: repetere like eller nesten like handlinger Det datamaskiner er best på: samme operasjon om og om igjen Vi ønsker IKKE å skrive samme kode om og om igjen Repetisjoner i programmering generelt: To mulige teknikker: Løkker eller rekursjon Løkker i Python: to typer while-løkke: ukjent antall repetisjoner for-løkke: kjent antall repetisjoner Ordet løkke brukes fordi vi skal gjenta noe flere ganger (rundt og rundt) 4

Typisk bruk av ulike løkker While-løkke: ukjent antall repetisjoner Fortsette med en handling inntil brukeren ønsker å avslutte Fortsette en beregning inntil et mål er nådd: Matematisk beregning: til man finner nøyaktig nok svar Søking: til ønskede data er funnet Spill: til noen har vunnet Typisk kjennetegn: vet ikke hvor mange ganger som trengs For-løkke: kjent antall repetisjoner Enten fast antall, eller Variabelt antall men kjent når løkka starter Samme operasjon for alle elementer i en tabell eller liste alle tall i et intervall 5

while-løkker Kapittel 5.2

Flytskjema while-løkke betingelse kode 7

Skrive en while-løkke Generell syntaks for while-løkke i Python: while betingelse: kodelinje1 kodelinje2 kodelinje3 Minner om if: Kun kode med innrykk hører til while-løkka altså ikke kodelinje3 hvis betingelse er True blir linje1 og 2 utført ellers blir de ikke utført Men viktig forskjell: repetisjon! Kodelinje1 og 2 gjøres om og om igjen helt til betingelsen blir False Da går man videre i programmet 8

Oppgave: while-løkke Programmet skal La brukeren skrive inn ett og ett tall ved hjelp av input() Avslutte hvis tallet 0 blir gitt inn Da skal vi skrive ut på skjermen: Summen av tallene Mulige utvidelser: også skrive ut Produktet av tallene Det største tallet, og hvilket nummer i rekken dette var Hent fram koden: while1.py 9

Evig løkke While-løkker bør programmeres slik at de kan avsluttes Noe inni løkka må føre til at betingelsen etter hvert blir False Evig løkke: En løkke som ikke har kode som gjør at den stopper For eksempel while True: Eller annen betingelse som blir værende True Kan være aktuelt for noen anvendelser For eksempel kontrollsystemer som skal kjøre hele tiden For oss: vanligvis pga. tabber glemt å inkludere kode som avslutter løkka feil i koden som skal endre en variabel feil i testbetingelsen så den aldri blir False Men vi kommer oss ut med Ctrl-C 10

for-løkker Kapittel 4.3-4.4

for-løkker Gjenta ei kodeblokk et bestemt antall ganger Gå igjennom en sekvens (liste), element for element Generelt format: for variabel in liste: kodelinjer liste kan være En variabel som inneholder ei liste Liste gitt på direkten, f.eks. [ Arne, Nina, Lea ] eller [2, 3, 5, 7, 11, 13] Liste av tall i et intervall, generert ved range( )-funksjonen variabel får verdier Første runde: variabel = første element i lista Andre runde: variabel = andre element i lista Siste runde: variabel = siste element i lista Koden i for-løkka må ha innrykk Når løkka er ferdig, går vi videre med koden nedenfor Hvis lista er tom, hopper vi over løkkekoden og går med en gang videre 12

Hva skjer når man kjører? Kode som skriver ut tallene 1 til 5. Variabelen num får verdier fra lista, element for element, for hver runde løkka kjører

for-løkke for variabel som inneholder ei liste En for-løkke kan også kjøres på en variabel som inneholder en liste av verdier: navneliste=[ Ole, Per, Oline, Anna, Frida ] for navn in navneliste: print(navn) Skriver ut navnene til skjerm i rekkefølge Ei liste defineres ved [ ] rundt verdier komma mellom elementer kan ha ulike typer verdier strenger, heltall, flyttall, sannhetsverdier osv. 14

Bruk av range-funksjonen range er en funksjon som gjør det enklere å skrive forløkker range-funksjonen lager et objekt av typen iterable. iterable er et objekt som ligner på ei liste inneholder verdier ei liste kan iterere over, typisk en tallserie range kan ha tre varianter: range(til) # tilsvarer [0,1,2,til-1] range(fra, til) # tilsvarer [fra, fra+1, fra+ n, til-1] range(fra, til, steg) # tilsvarer [fra, fra+steg, fra+2*steg, fra+3*steg ] #t.o.m. størst mulige fra+n*steg <= til-1 #eller minst mulige fra+n*steg >= til+1 hvis steg < 0 15

Eksempler på range (og liste) Range: == Liste: for n in range(5): for n in [0,1,2,3,4]: print(n) print(n) for n in range(1,5): for num in [1,2,3,4]: print(n) print(n) for n in range(1,6,2): for num in [1,3,5]: print(n) print(n) for n in range(10,1,-3): for num in [10, 7, 4]: print(n) print(n) 16

Oppgave: for-løkke Skriv et program som Leser inn et positivt heltall Regner ut n! n! er 1*2*3* *n 0! er 0 Skriver ut svaret løsn: fakultet.py 17

Avslutningsverdi Kapittel 4.5

Endring av verdier i variable (gi avslutningsverdi i løkker) Lang-form Kompakt-form Hva gjøres x = x + 4 x += 4 Øker verdien av x med 4 x = x - 3 x -= 3 Minsker verdien av x med 3 x = x * 10 x *= 10 Multipliserer verdien av x med 10 x = x / 2 x /= 2 Dividerer verdien av x med 2 x = x % 4 x %= 4 Resten av x delt på 4 19

Validering av input ved hjelp av løkker Kapittel 4.6

Validering av input vha løkker Brukere kan gi feil input Med vilje Tastefeil Misforståelser Ofte viktig å sjekke input før programmet går videre Evt. også tvinge brukeren til korrekt input Dette kan man gjøre vha while-løkke: alder = int(input("hvor gammel er du? ")) while (alder < 0 or alder > 150): print("feil: Alder må være mellom 0 og 150!") alder = int(input("hvor gammel er du? ")) print("takk for den du!!!") kode: alder.py 21

Nøstede løkker Kapittel 5.7

Nøstede løkker Løkke inni annen løkke kalles nøstede løkker. Nyttig i mange situasjoner Hierarkiske strukturer F.eks. konserner som har datterselskap som har avdelinger som har utført kjøp og salg av ulike typer produkter Tabeller, matriser Tid er et godt eksempel teller først 60 sekunder, øker minutt med 1 osv Utskrift av tid som nøstede løkker: for t in range(24): for m in range(60): for s in range(60): print(t,":",m,":",s) kode: tid.py 23

Flytskjema for utskrift av tid

Oppgave: nøstet for-løkke Lag et program som skriver ut (Med dobbel for-løkke, ikke hardkode hele teksten) Rutene på sjakkbrettet heter: A8 B8 C8 D8 E8 F8 G8 H8 A7 B7 C7 D7 E7 F7 G7 H7 A6 B6 C6 D6 E6 F6 G6 H6 A5 B5 C5 D5 E5 F5 G5 H5 A4 B4 C4 D4 E4 F4 G4 H4 A3 B3 C3 D3 E3 F3 G3 H3 A2 B2 C2 D2 E2 F2 G2 H2 A1 B1 C1 D1 E1 F1 G1 H1 løsn: sjakkbrett.py 25

Oppsummering while-løkke: en betingelse avgjør antall iterasjoner: while(betingelse): setning(er) Setningene utføres så lenge betingelse er True for-løkke brukes for et bestemt antall iterasjoner F.eks. gjøre noe for alle elementer i ei liste eller intervall for x in [1, 2, 3, 4]: for y in [ test, 3.14, True, 9]: for i in range(1, 5): for z in range(1, 5, 2): Nøstede løkker er løkker inne i andre løkker: for x in [1, 3, 5]: for y in range [5, 7, 12]:... 26

Neste uke: Funksjoner (kap.5.1-5.7) Aktuelle spørsmål for quiz: «what happens when the end is reached» (Checkpoint 5.8) «What is a variable s scope?» (Checkpoint 5.11) «What are the pieces / variables called?» (Checkpoint 5.13, 5.14) «What is a parameter variable s scope?» (Checkpoint 5.15) «When a parameter is changed?» (Checkpoint 5.16) «What is the scope of a global variable?» (Checkpoint 5.18) «A variable created inside a function block is known as a» (Review, Multiple Choice 4) «When possible you should avoid using» (Review, Multiple Choice 12) «A global variable whose value cannot be changed» (Review, Multiple Choice 14) «Void functions do not return any value» (Review, True or False 2) «A statement in a function can access a local variable» (Review, True or False 7) «Name and describe two parts of a function definition.» (Review, Short Answer 2) «what happens when the end of the function» (Review, Short Answer 3) «What will the following program display?» (Algorithm Workbench 4) Noen av disse gis i «kahootisert form» Pluss 1-2 helt uannonserte spørsmål, men også om løkker 27