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

Like dokumenter
TDT4120 Øvingsforelesning 1 Introduksjon til Python

Introduksjon til øvingsopplegget og gjennomgang av Python

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

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

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

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

Øvingsforelesning 5 Python (TDT4110)

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

Øvingsforelesning 9 i Python (TDT4110)

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

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

Øvingsforelesning 5 Python (TDT4110)

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

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

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

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

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

TDT4110 IT Grunnkurs Høst 2015

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

IN uke 2. Presis forståelse av programmering

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

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

Øvingsforelesning 6 i Python (TDT4110)

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

UNIVERSITETET I OSLO

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

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Øvingsforelesning 1 Python (TDT4110)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Informasjon Prøveeksamen i IN1000 høsten 2018

Repetisjon Novice Videregående Python PDF

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

Python: Lister og tupler Gaddis: Kapittel 7

Øvingsforelesning 7 i Python (TDT4110)

Objektorientert programmering i Python

IN1000 Obligatorisk innlevering 7

Forelesning inf Java 5

INF1000 Eksamen 2014 (modifisert)

Forelesning inf Java 5

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

Algdat - øvingsforelesning

TDT4100 Objektorientert programmering

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

Øvingsforelesning i Python (TDT4110)

Øvingsforelesning 3 Python (TDT4110)

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

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Seminaroppgaver IN1010, uke 2

Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

Eksamensoppgaver 2014

INF1000 undervisningen INF 1000 høsten 2011 Uke september

IN uke 2. Presis forståelse av programmering

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

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

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

INF1000 Behandling av tekster

Kap 2: Løkker og lister

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

INF1000 Eksamen 2014 (modifisert)

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

TDT4110 IT Grunnkurs Høst 2016

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Oppsummering fra sist

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

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

INF Uke 10. Ukesoppgaver oktober 2012

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Programmeringsspråket C

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

Hver ting i en liste kalles et element. En liste lages ved å skrive elementer inni [], med, mellom elementene:

Informasjon Eksamen i IN1000 høsten 2017

TDT4110 IT Grunnkurs Høst 2016

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

UNIVERSITETET I OSLO

Forelesning inf Java 4

Java-kurs. Andreas Knudsen Nils Grimsmo 9th October 2003

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

MAT1030 Plenumsregning 1

Læringsmål uke 7. Introduksjon til objektorientert programmering. Paradigmet objektorientering. Objektreferanser. INF1001 Høst 2016 Uke 7

INF120: Oblig 3. Yngve Mardal Moe

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

IN1010 våren januar. Objektorientering i Java

OPPGAVE 5b og 8b Java Kode

INF2820 Datalingvistikk V2016. Jan Tore Lønning

TOD063 Datastrukturer og algoritmer

Python: Mengder og Dictionaries 3. utgave: Kapittel 9

Løsningsforslag til eksamen i INF1000 våren 2006

Forkurs i informatikk Python. Andreas Færøvig Olsen

Transkript:

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1 Ole Kristian Pedersen, Høst 2016

Agenda Introduksjon til Python for begynnere Intro til øving 1 Litt om lenkede lister Øvingssystemet 2

Python? Enkelt å lese og skrive Dynamisk typet Variabelens type evalueres når det trengs, og typen kan endre seg underveis Python 3.x vs Python 2.7.x Endringer som ikke er bakoverkompatible Bruker i år Python 3 (vs 2 tidligere år) Kommer her bare til å ha en minimal gjennomgang av Python 3

Python vs Java #python print( Hello world! ) //java public class HelloWorld { public static void main(string[] args) { System.out.println( Hello world! ); } } 4

Python: Syntaks Indentering og linjeskift Ikke krøllparanteser og semikolon Kommentarer starter med # 5

Python: utskrift print( Hello, world ) print( Per, Ola, Kari ) # Skriver ut navnene med mellomrom og newline print( Hello,, end= ) print( World ) # Skriver ut Hello, World på samme linje Kan også skrive ut tall, dictionaries og lister. Prøv selv! 6

Python: Nyttige datatyper Strenger Heltall, flyttall, boolske variabler Tupler, lister Dictionaries 7

Python: Strenger og er likeverdige Tegn kan escapes som C++ og Java \, \, \n, \t Strenger er immutable, så alle endringer lager en ny streng -> dyre operasjoner s = Hello, World x = 3 s2 = str(x) # -> 3 8

Python: ints, floats and bools x = 3 y = 9.81 a = int( 3 ) b = float( 2.7 ) t = True f = False 9

Python: Lister Tilsvarende ArrayList (Java) eller vector (C++) 0-indeksert, mutable Kan inneholde ulike datatyper i samme liste l = [] # Tom liste l2 = [ a, b, 1] l3 = [ x ] * 3 # liste med 3 x -strenger l3[2] = z # [ x, x, z ] l2[1] # => b len(l3) # => 3 print(l2) # [ a, b, 1] 10

Python: Lister, forts Legg til elm bakerst i listen lst.append(elm) Legg elementene i lst2 bakerst i lst lst.extend(lst2) Legg til elm på index lst.insert(index, elm) Fjern elementet på index, og returner det lst.pop(index) Finn første forekomst av element lst.index(element) Fjern første forekomst av element lst.remove(element) 11

Python: tupler Som lister, men immutable Kan ikke endre på elementene, eller lengden Greit når man har flere returverdier def getminmax(lst): mn = min(lst) mx = max(lst) return (mn, mx) Utpakking av tupler: mn, mx = getminmax([7, 3, 5]) 12

Python: Dictionaries Nøkler og verdier Nøkler er indekser, og brukes til å finne tilhørende verdi Nøkler må være immutable Implementert som hashmaps (pensum i faget) 13

Python: Dictionaries forts. Tom dictionary: d = {} Med verdier: d = { key1 : value1, (1, 2): tupler kan brukes } Lagring av verdi: d[key] = value Henting av verdi: d[key] (NB! vil krasje om key ikke eksisterer) Sjekk om key eksisterer: if key in d: Iterer over verdier: for v in d.values(): Iterer over nøkler: for k in d: Iterer over nøkler: for k in d.keys(): Iterer over (key, value)-par: for k in d.items(): 14

Python: if-elif-else mn = 0 mx = 9000 x = input() if x < mn: print( Too small ) elif x > mx: print( It s over 9000! ) else: print( Valid number! ) 15

Python: if-elif-else forts. 0, [], {},,, False og None tolkes som False: alt annet tolkes som True Java/C++: &&,,! Python: and, or, not if not a < b and not b < a: print( a == b ) 16

Python: for-løkker Iterator-basert iterasjon Kan iterere over lister, dictionaries, strenger, tupler (og noen spesialobjekter) for element in list: print(element) 17

Python: for-løkker og range range returnerer en liste med heltall Ikke helt sant i Python 3, men ikke så langt unna range(end) # [0, 1,..., end-1] range(start, end) #[start, start+1,, end-1] range(start, end, step) #[start, start+step, ] # skriv ut alle tallene fra 100 til 1 for i in range(100, 0, -1): print(i) 18

Python: continue og break Fungerer som i C++ og Java 19

Python: Funksjoner def add(a, b): return a+b Funksjoner som ikke returnerer noe, returnerer None i Python (C++/Java: void-funksjoner) Alt sendes som referanser, så store objekter kopieres ikke. Tall, strenger og tupler er immutable Lister, dictionaries og objekter er mutable 20

Python: global x = 5 def changex(a): x = a # dette er ikke den samme x-en! # korrekt x = 5 def changex(a): global x x = a # endrer den globale x-en 21

Python: Strengmanipulasjon # Split: 3:5:6.split( : ) #Returnerer [ 3, 5, 6 ] # Strip: a = asfd a = a.strip() # fjerner mellomrom fra endene print(a) # asdf 22

Python: Input from sys import stdin # Hent neste linje fra input linje = stdin.readline() # Kan også iterere over gjenværende linjer for linje in stdin: pass 23

Python: Listeoperasjoner Sortere stigende: list.sort() Sortere synkende: list.sort(reverse=true) Reverse liste: list.reverse() Slicing: lst = [0, 1, 2, 3, 4] print(lst[1:3]) # [1, 2] print(lst[3:] # [3, 4] print(lst[:2] # [0, 1] 24

Python: Klasser class ClassName: def init (self, arg, ): self.var1 = arg1 self.var2 = arg2 def methoda(self, arg, ): # #... 25

Python: Klasser forts. Python: self er tilsvarende this i C++/Java Konstruktøren heter alltid init To understreker på hver side 26

Gjennomgang av øving 1 Praksis: Lenkede lister (Cormen, kap 10.2) algdat.idi.ntnu.no Utdelt rammeverk Trenger ikke tenke på lesing av input [Gjennomgang på tavla] 27

28 Spørsmål?