Inleiding Programmeren 2

Vergelijkbare documenten
Inleiding Programmeren 2

Inleiding Programmeren 2

Inleiding Programmeren 2

Inleiding Programmeren 2

Programmeermethoden NA

Programmeermethoden NA. Week 6: Lijsten

Inleiding Programmeren 2

[13] Rondjes draaien (loops)

OEFENINGEN PYTHON REEKS 1

Code Voorbeeld Resultaat. print(6, end="") print(7) print(type(6)) <class 'int'> + optelling - aftrekking * vermenigvuldiging / deling 8 16 % modulo

Uitwerkingen. Python Assessment

Niet-numerieke data-types

OEFENINGEN PYTHON REEKS 1

Programmeren PYTHON OEFENTENTAMEN 2. Schrijf jouw antwoorden op dit tentamen. Tijd: 2 uur. Maximaal aantal punten: 32. Naam: Studentnummer:

OEFENINGEN PYTHON REEKS 1

Javascript oefenblad 1

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27

Voorbeelden. Sorteren. Voorbeeld: n = 5. # intsort.py: sorteren van een rij getallen

Programmeermethoden NA. Week 5: Functies (vervolg)

Toetsvoorbereiding Informatica HAVO/VWO 5 (T51) Programmeren met Python II. Duur: 70 minuten Datum: sept 2018

Programmeermethoden NA. Week 3: Controlestructuren

Opgaven. Python Assessment

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

BEGINNER JAVA Inhoudsopgave

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Modelleren en Programmeren

Zelftest Inleiding Programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Python voor Natuur- en Sterrenkundigen Week 2

Programmeren met Grafische Objecten. Inleiding Programmeren II Hoorcollege 1 prof. dr. van Noord en dr. L.M. Bosveld-de Smet

Geeft de lengte van een object (string, lijst, tupel) terug als integer

Stroomschema s maken op papier

Gebruik van command-line operating systems

Tentamen Programmeren in C (EE1400)

Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren

Modelleren en Programmeren


Tentamen Programmeren in C (EE1400)

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

PYTHON REEKS 2: FUNCTIES. Mathias Polfliet

Modelleren en Programmeren

Programmeren in C++ Efficiënte zoekfunctie in een boek

Waarden persistent (blijvend) opslaan gaat in bestanden (files). Lege tekst: eof

Practicumopgave 3: SAT-solver

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

Programmeren met Python

Informatica: C# WPO 7

Stel dat u 15 tellers nodig heeft. Dat kunt u een array van tellers als volgt declareren:

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Informatica: C# WPO 11

algoritmiek - antwoorden

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

[14] Functies. Volg mee via 14_Functies-1.py. We beginnen met een eenvoudig voorbeeldje:

Een korte samenvatting van enkele FORTRAN opdrachten

NAAM: Programmeren 1 Examen 29/08/2012

Les 9: formulier controle met javascript.

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

A Python Crash Course

Programmeren. Cursus Python

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

Een spoedcursus python

Small Basic Programmeren Text Console 2

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Online c++ leren programmeren:

Inleiding Programmeren 2

Programmeermethoden NA

Informatica: C# WPO 6

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

extra oefening algoritmiek - antwoorden

Datastructuren en algoritmen voor CKI

Elementary Data Structures 3

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Tussentoets Programmeren en genomics, 8CA10, versie A 17 maart 2017, u.

Informatica: C# WPO 6

Zoemzinnen. Algemene info. Functies met een variabel aantal argumenten

Modelleren en Programmeren

Hoofdstuk 7: Werken met arrays

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

inleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur

Programmeerstructuren met App Inventor

Persistentie via bestanden. Bestanden

DOBBELSTEEN 2.0. Stap-voor-stap instructie

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Transcriptie:

Inleiding Programmeren 2 Gertjan van Noord en Leonie Bosveld December 19, 2016

Vandaag Naar aanleiding van de opdrachten Zelle hoofdstuk 11

Boolean variabelen: niet checken met == Fout: if clicked == True : gohome () Goed: if clicked : gohome ()

Boolean variabelen: niet checken met == Fout: if clicked == False : gowork () Goed: if not clicked : gowork ()

While loop en break Fout: clicked = False while not clicked : doit () if buttonclicked (): clicked = True Goed: while True : doit () if buttonclicked (): break

Simulatie als de kansen niet gelijk zijn: Goed p1 = 0.23132 # probability of event e1 p2 = 0.32122 # e2 p3 = 0.44746 # e3 r = random. random () if r < p1: return ("e1") if r < p1 + p2: return ("e2") else : return ("e3")

Simulatie als de kansen niet gelijk zijn: Fout p1 = 0.23132 # probability of event e1 p2 = 0.32122 # e2 p3 = 0.44746 # e3 if random. random () < p1: return ("e1") if random. random () < p1 + p2: return ("e2") else : return ("e3")

If statements Fout: if x < 0: print (" negative!") if x > 0: print (" positive!") if x == 0: print (" zero!") Goed: if x < 0: print (" negative!") elif x > 0: print (" positive!") else : print (" zero!")

Teveel variabelen Fout: def convert ( celsius ): fahrenheit = 9/5 * celsius + 32 return fahrenheit Goed: def convert ( celsius ): return 9/5 * celsius + 32

En verder het maken van een mooiere interface mag niet ten koste gaan van de overzichtelijkheid van je code random walk: netjes afsluiten

Hoofdstuk 11

Lijsten In andere talen: array Python lijsten zijn bijzonder: dynamisch: je hoeft niet te zeggen hoe lang een lijst is heterogeneous: je kunt verschillende soorten data in een lijst mixen mutable: je mag elementen veranderen

Wat kun je met lijsten concatenatie repetitie indexing lengte slicing iteratie lidmaatschaptest: if el in list:

Nog meer methoden voor lijsten lst.append(x) lst.sort() lst.sort(key=fun) lst.reverse() lst.index(x) lst.insert(i,x) lst.count(x) lst.remove(x) lst.pop() lst.pop(i)

>>> lst =[3,2,1,2,3,4] >>> lst. reverse () >>> lst [4, 3, 2, 1, 2, 3] >>> lst. sort () >>> lst [1, 2, 2, 3, 3, 4] >>> lst. index (3) 3 Nog meer methoden voor lijsten

>>> lst [1, 2, 2, 3, 3, 4] >>> lst. insert (5,0) >>> lst [1, 2, 2, 3, 3, 0, 4] >>> lst. count (2) 2 >>> lst. count (10) 0 >>> lst. remove (0) >>> lst [1, 2, 2, 3, 3, 4] Nog meer methoden voor lijsten

Sorteren lst = [( jan,3), ( piet,7),( anja,8)] >>> lst. sort () >>> lst [( anja, 8), ( jan, 3), ( piet, 7)]

Sorteren lst = [( jan,3), ( piet,7),( anja,8)] >>> lst. sort () >>> lst [( anja, 8), ( jan, 3), ( piet, 7)] >>> def arg2 ( pair ):... return pair [1]... >>> lst. sort ( key = arg2 ) >>> lst [( jan, 3), ( piet, 7), ( anja, 8)]

Sorteren >>> lst [( jan, 3), ( piet, 7), ( anja, 8)] >>> lst. sort ( key =arg2, reverse = True ) >>> lst [( anja, 8), ( piet, 7), ( jan, 3)]

Sorteren methode van lijsten: sort() alleen voor lijsten vervangt de huidige lijst door de gesorteerde built-in: sorted() voor elke data-structuur waar je over kunt itereren resultaat is een nieuwe lijst

Lijsten en dictionaries Lijsten zijn dus erg flexibel Erg handig om te gebruiken Maar: niet altijd de beste keus

Lijsten en dictionaries Lijsten zijn dus erg flexibel Erg handig om te gebruiken Maar: niet altijd de beste keus def lookup_word (w): """ for a given word w, find its part - of - speech """ words = [( de, det ),( het, det ), ( ik, pron ),( boek, noun )] for (word, tag ) in words : if w == word : return tag Python moet hier de hele lijst doorlopen om te controleren of het woord in de lijst voor komt. Dictionaries: een data-structuur waarbij je in 1 stap antwoord krijgt!

Dictionaries Belangrijk! Datastructuur waarmee je een waarde opzoekt voor een gegeven key. In andere talen wordt dit soms een hash of associatief array genoemd Opzoeken van een key is efficient

Dictionaries >>> mydict = { slaapt : ww, ik : pron, gisteren : bijwoord } >>> mydict [ ik ] pron >>> mydict [ jij ] = pron >>> mydict { ik : pron, gisteren : bijwoord, slaapt : ww, jij : pron } >>> mydict [ ik ] = pron1 >>> mydict { ik : pron1, gisteren : bijwoord, slaapt : ww, jij : pron }

Dictionaries Vaak gemaakt door 1 voor 1 de elementen toe te voegen Bijvoorbeeld: passwd = {} for line in sys. stdin : line = line. rstrip () user, pass = line. split () passwd [ user ] = pass

Dictionaries if mykey in mydict: mydict.keys() mydict.values() mydict.get(key,default) del mydict[key] mydict.clear() for el in mydict:

Dictionaries >>> mydict { ik : pron1, gisteren : bijwoord, slaapt : ww, jij : pron } >>> for key in mydict. keys ():... print ( key )... ik gisteren slaapt jij >>> for key in mydict. keys ():... print ( mydict [ key ])... pron1 bijwoord ww pron

Dictionaries: woordenteller mydict = {} for line in sys. stdin : words = line. split () for word in words : if word in mydict : mydict [ word ]= mydict [ word ]+1 else : mydict [ word ]=1

Dictionaries: woordenteller mydict = {} for line in sys. stdin : words = line. split () for word in words : mydict [ word ]= mydict. get (word,0)+1

Opdracht 1 deadline 8 januari Zelle hoofdstuk 11, opdracht 6. Er zijn betere manieren om dit te doen, maar voor deze opdracht volstaat de volgende aanpak. Deleer steeds een random element uit de bestaande lijst, en voeg die toe aan een nieuwe lijst, net zo lang tot de bestaande lijst leeg is. Zorg voor een main functie die als test een random shuffle van een lijst van afwisselend nullen en enen naar standard output schrijft, waarbij de lengte van de lijst gegeven wordt door het eerste command-line argument. Als n bijvoorbeeld 5 is, dan moet je een random shuffle van de lijst [0,1,0,1,0] genereren. Als n 2 is, moet je een random shuffle maken van de lijst [0,1]../random_shuffle 5 [0, 1, 0, 0, 1]./random_shuffle 2 [1,0]

Opdracht 2 deadline 8 januari Schrijf een programma dat een tekst van standard input leest en vervolgens de frequentie bijhoudt van alle trigrammen (sequenties van drie woorden) in de tekst. Alle trigrammen met hun frequentie moeten naar standard output worden geschreven, in volgorde van frequentie. Besteed geen aandacht aan punctuation. De dictionary die je nodig hebt, heeft als keys steeds een trigram, wat je in Python het beste als tuple van de drie woorden kan representeren. Een trigram telt alleen mee als de woorden op dezelfde regel staan. We gaan er bij deze opdracht van uit dat de tekst al getokenizeerd is: de leestekens zijn al gescheiden door spaties van de woorden. We beschouwen die leestekens zelf ook als woorden. Een voorbeeldbestand is: /net/corpora/eindhoven/cdb/cdb.zinnen. cat /net/corpora/eindhoven/cdb/cdb.zinnen./ex2.py head -n 5, dat de 74, die in 44 een van de 42, die de 40, dat het 39

Opdracht 3 BONUS deadline 8 januari Maximaal 5 punten (extra) Schrijf een programma dat een tekst van standard input leest en dat vervolgens alle woorden die voorkomen in de tekst op een bepaalde manier in een data-structuur opslaat. Je moet een geschikte data-structuur kiezen op basis van het volgende. Na het inlezen van de tekst moet een grafische interface worden gestart waarbij de gebruiker steeds een woord intypt (in de interface), en waarbij je dan alle contexten laat zien waarin dat woord is gebruikt in de tekst. De context bestaat steeds uit de twee woorden links en twee woorden rechts. Indien een woord meerdere keren in dezelfde context voorkomt moet je die context maar n keer op het scherm tonen, maar daarbij geef je dan wel aan hoevaak deze context voorkwam. De interactie stopt nadat de gebruiken op een quit button heeft geklikt.

Opdracht 3 voorbeeld Met bestand /net/corpora/eindhoven/cdb/cdb.zinnen en als zoekterm Tweede moet je een overzicht zoals dit krijgen: in de Tweede Kamer, 2 In de Tweede Kamer is 2 aan de Tweede Kamer uitgebrachte 1 dat de Tweede Kamer in 1 hebben de Tweede Kamerleden Schuring 1 in de Tweede Kamer. 1 in de Tweede Kamer aanwezige 1 in de Tweede Kamer drs. 1 in de Tweede Kamer medegedeeld 1 in de Tweede Kamer niet 1 in de Tweede Kamer voorstellen 1 in de Tweede Kamer wordt 1 In de Tweede Wereldoorlog werden 1 naar de Tweede Kamer hebben 1 op het Tweede Vaticaanse Concilie 1 sinds de Tweede Wereldoorlog heeft 1 tot de Tweede Wereldoorlog, 1 uit de Tweede Wereldoorlog zijn 1 van de Tweede Helmerstraat en 1 van de Tweede Kamer, 1 van de Tweede Kamer. 1 van de Tweede Kamer nog 1