Øvingsforelesning 5 Python (TDT4110)

Like dokumenter
Øvingsforelesning 5 Python (TDT4110)

Øvingsforelesning 6 i Python (TDT4110)

Øvingsforelesning 3 Python (TDT4110)

Øvingsforelesning 1 Python (TDT4110)

Øvingsforelesning i Python (TDT4110)

Repetisjon Novice Videregående Python PDF

TDT4110 IT Grunnkurs Høst 2015

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å.

TDT4110 IT Grunnkurs Høst 2016

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

Oppsummering fra sist

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

Øvingsforelesning 7 i Python (TDT4110)

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

Hangman. Level. Introduksjon

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

TDT4110 IT Grunnkurs Høst 2016

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

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

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.

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Øvingsforelesning i Python (TDT4110)

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.

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

TDT4110 IT Grunnkurs Høst 2014

TDT4105 IT Grunnkurs Høst 2016

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

TDT4110 IT Grunnkurs Høst 2012

Hvordan løse problemer med programmering?

Oppgaver uke 1: Løsningsforslag

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

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Kondisjonstest. Algoritmer og datastrukturer. Python-oppgaver. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.

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.

MAT1030 Diskret Matematikk

Steg 1: Rest etter divisjon

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

MAT1030 Plenumsregning 1

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

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

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

TDT Øvingsforelesning 1. Tuesday, August 28, 12

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

Eksamensoppgaver 2014

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

Løse reelle problemer

IN Seminaroppgaver til uke 11

Mattespill Nybegynner Python PDF

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

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

INF1000 Eksamen 2014 (modifisert)

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

Kondisjonstest. Algoritmer og datastrukturer. Python-oppgaver - LF. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.

Læringsmål og pensum. Oversikt

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

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

Programmering Høst 2017

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

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

INF1000 Eksamen 2014 (modifisert)

Øvingsforelesning i Python (TDT4110)

Oppgave 1 Hva tror du følgende program skriver ut til terminalen? Diskuter med gruppen.

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

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.

MAT1030 Diskret matematikk

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

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

INF120: Oblig 3. Yngve Mardal Moe

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

TDT4120 Øvingsforelesning 1 Introduksjon til Python

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

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

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

TDT4110 IT Grunnkurs Høst 2012

Python: Variable og beregninger, innlesing fra tastatur utskrift til skjerm. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning i Matlab TDT4105

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

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

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

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

IN1000 Obligatorisk innlevering 7

Pensum: Starting out with Python

Løse reelle problemer

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

IN uke 2. Presis forståelse av programmering

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

INF Ekstrainnlevering

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

Øvingsforelesning 9 i Python (TDT4110)

Objektorientert programmering i Python

Transkript:

Øvingsforelesning 5 Python (TDT4110) Repetisjon av løkker og funksjoner Ole-Magnus Pedersen

Oversikt Praktisk Info Gjennomgang av Øving 3 Repetisjon 2

Praktisk info Prosjekter i PyCharm må startes med Python 3.x Idle på mac: Installer ny versjon av Tcl (for eksempel ActiveTcl, som omtalt her) Problemer med backslash (løsning fra StackOverflow): Preferences Keys Under Custom Key Bindings, finn expand-word Endre kombinasjonen til noe annet (f.eks. Control-Option-Key-Slash) 3

Innlogging

Student

Oversikt Praktisk Info Gjennomgang av Øving 3 Repetisjon 7

Gjennomgang av Øving 3 Alternerende sum Doble løkker 8

Oversikt Praktisk Info Gjennomgang av Øving 3 Repetisjon 9

Variabler Peker på en minneplassering med data Kan sette verdien, bruke verdien og sette verdien på nytt Har en type (f.eks. int, float, boolean, str) NB! Må initialiseres før den brukes # Dette går ikke if a > 5: pass # Vi m å initialisere a fø rst a = 3 if a > 5: pass 10

Betingelser og if-setninger Betingelser er boolske uttrykk eller variabler, og har verdi True eller False Kan sammenligne variabler/konstanter med ==,!=, >, >=, <, <= Spesialord som and, or, not, is, in Ved å bruke if-setninger utføres kode kun hvis betingelsen stemmer if condition : pass elif condition_ 2 : pass else : pass 11

Løkker Kjører koden flere ganger For-løkker kjører et gitt antall ganger, f.eks. bestemt ved å bruke range() While-løkker kjører så lenge en betingelse er oppfylt break og continue kan brukes for å avslutte enten hele løkka eller en iterasjon for i in range ( 10) : pass x = 0 while x < 10: x += 1 12

Løkker 1 (for-løkke) Eksempel på kjøring Lag et program som tar inn en streng (s) og et tall (x). Programmet skal skrive ut hver xte bokstav i s, fra og med den første. Skriv inn en streng: abcdefghijkl Skriv inn et tall: 3 a D G J 13

Løkker 2 (while-løkke) Lag et program som spør om et passord fra bruker. Hvis passordet er likt et passord du bestemmer, skal brukeren få beskjed om at passordet er riktig. Hvis ikke skal programmet spørre om et nytt passord. Eksempel på kjøring # passordet er qwerty Passord: abcd Passordet er feil. Prøv igjen. Passord: qwerty Passordet er riktig! 14

Løkker 3 (while-løkke) Lag et program som tar inn to tall, n og k. Programmet skal summere alle tallene fra 0 til n, eller fram til summen er større enn k. Programmet skal skrive ut Sum ved i=<iterasjon>: <nåværende sum> i hver iterasjon, og skal bruke en while-løkke. Hvis programmet avslutter fordi i > n skal programmet skrive ut Etter <n> iterasjoner er summen <sum>. Ellers skal programmet skrive ut Etter <antall iterasjoner> overgikk summen <k>. Eksempel på kjøring n: 10 k: 7 Sum ved i=0: 0 Sum ved i=1: 1 Sum ved i=2: 4 Sum ved i=3: 6 Sum ved i=4: 10 Etter 4 iterasjoner overgikk summen 7. 15

Løkker 4 (sammensatte løkker) Lag et program som tar inn et heltall fra brukeren (kalt x her). Deretter skal programmet spørre brukeren om svaret på x i for alle i fra 1 til 10. Hvis brukeren svarer riktig skal programmet skrive ut det, ellers skal det spørre igjen til brukeren har riktig svar. Eksempel på kjøring Skriv inn et tall: 10 Hva er 1 10? 10 Riktig! Hva er 2 10? 21 Prøv igjen. Hva er 2 10? 20 Riktig!... 16

Funksjoner Definer kode som kjøres senere i programmet Parametre er input-verdier til funksjonen Kan returnere en eller flere output-verdier def func ( param1, param2 ): # Do something with params, here we add them and return the result res = param1 + param2 return res # Now we can use the function multiple times many_adds = func ( func (1, 3), func ( func (2, 4), 5)) print ( many_ adds ) # prints the result of (1 + 3) + ((2 + 4) + 5) 17

Scopes Variabler er gjeldende ut i fra hvor de defineres Variabler definert i en funksjon kan bare brukes i den funksjonen Overskriver også variabler med samme navn i fra utenfor funksjonen Variabler definert utenfor funksjoner kan refereres i funksjoner, men man må bruke global-nøkkelordet for å endre verdien g = 5 def func1 (): g = 3 print (g) def func2 (g): print (g) def func3 (): print (g) def func4 (): global g g = 2 print (g) # 5 func1 () # 3 func2 (4) # 4 func3 () # 5 print (g) # 5 func4 () print (g) # 2 def func5 (): h = 1 func5 () print (h) # Gir feilmelding 18

Funksjoner 1 Utvid programmet fra Løkker 3 til å kjøre i en funksjon som tar inn x som et parameter. Utvid programmet til å også ta inn y som et parameter og spør om svar på x i for alle i fra 1 til y. 19

Funksjoner 1 Utvid programmet fra Løkker 3 til å kjøre i en funksjon som tar inn x som et parameter. Utvid programmet til å også ta inn y som et parameter og spør om svar på x i for alle i fra 1 til y. Del koden opp i to funksjoner, en som kjører for-løkka, og en som spør bruker om svaret på regnestykket (til svaret er riktig). 19

Funksjoner 2 Lag en funksjon som tar inn to strenger. Funksjonen skal returnere True hvis strengene er like, eller hvis den ene strengen er lik den reverserte andre strengen. Hint: For å sjekke om strengene er reversert av hverandre kan du sjekke om de er like lange og sjekke at str1[i] == str2[-i - 1] i en for-løkke fra 0 til (men ikke med) len(str1) Lag så et program som kontinuerlig tar inn to strenger fra brukeren, og hvis de er like eller reversert skriver ut Dette var en match, og ellers skriver ut Dette var ikke en match. Programmet skal avslutte hvis begge strengene er lik q. Eksempel på kjøring Str1: abc Str2: abc Dette var en match Str1: abc Str2: cba Dette var en match Str1: abc Str2: abcd Dette var ikke en match Str1: q Str2: q 20

Funksjoner 3 Lag et program som gjør to ting: Først spør den brukeren om et adjektiv, og skriver ut komparativ-formen av dette. Deretter ber den brukeren om å skrive inn komparativ-formen av noen adjektiv (snill, pen, ung, gammel, lik), og skriver ut om brukeren skriver inn riktig svar. For de fleste norske adjektiv finnes komparativ ved å legge til -ere på slutten (snill - snillere), men programmet skal også ta hensyn til ordene ung (yngre) og gammel (eldre). Eksempel på kjøring Skriv inn et adjektiv: rik Komparativ av rik er: rikere Hva er komparativ av snill? snillere Riktig! Hva er komparativ av pen? penn Feil. Komparativ av pen er penere Hva er komparativ av ung? yngre Riktig!... 21

Funksjoner 4 Lag en funksjon som tar inn et tall, n, som parameter. Programmet skal returnere det nte fibonacci-tallet. Fibonacci-tallene er definert på denne måten: f 0 = 0, f 1 = 1, f n = f n 1 + f n 2 Bruk funksjonen i et program som tar inn to tall fra brukeren, n og x, der n er hvilket fibonacci-tall vi er interessert i og x er brukerens gjettning på det nte fibonacci-tallet. Hvis brukeren gjetter riktig skal programmet printe ut Det var riktig. Ellers skal det printe Feil. Det <n-te> fibonacci-tallet er <n-te fibonacci tall>. Eksempel på kjøring n:15 Hva tror du det 15. fibonacci tallet er? 610 Dette var riktig # - ny kjøring - n:15 Hva tror du det 15. fibonacci tallet er? 500 Feil. Det 15. fibonacci tallet er 610 22

Debugging Måten å gå fram på for å finne feil i koden To problemstillinger: Programmet kjører ikke, og vi får en feilmelding Les feilmelding tydelig Vi får typisk beskjed om hva som er feil, og hvor i koden feilen er Tips: Noen ganger må vi se på linjen før eller etter det man får beskjed om Programmet kjører, men gir feil resultat Logg relevante verdier flere steder i koden (i dette faget kan dere printe ut verdien) PyCharm (eller andre IDE-er) har debuggingsverktøy der du kan stoppe koden og se verdien av variabler på det tidspunktet 23