[09:58] <Felix__> hoi
[14:08] <hajour> hi all
[14:10] <hajour> relog
[18:30] <leoquant> StefandeVries, EN commandoline_ alles staat goed hier
[18:31] <StefandeVries> dank je, leoquant
[18:31] <commandoline_> goed, welkom allemaal
[18:32] <commandoline_> we hebben vandaag de les wat anders geregeld
[18:32] <commandoline_> want ik ben vandaag op de Ubuntu Jam in Burgum
[18:32] <commandoline_> dat betekend dat we de les vandaag via een videostream doen
[18:32] <commandoline_> http://www.livestream.com/ubuntufryslan
[18:32] <commandoline_> daarnaast zal StefandeVries zoals altijd vragen beantwoorden in #ubuntu-nl-mwanzo
[18:33] <commandoline_> en CasW zal hier een samenvatting maken van wat ik zeg
[18:33] <commandoline_> kan iedereen me zien?
[18:33] <leoquant> ja
[18:34] <leoquant> loud and clear
 ja hoor, spannend
[18:34] <commandoline_> :)
[18:34] <leoquant> iedereen hoort je
[18:34] <leoquant> RawChid> Je bent verstaanbaar hier
[18:34] <leoquant> peewee22> goed te horen
[18:38] <CasW_> Het huiswerk staat hier http://paste.ubuntu.com/594909/
 nee, ik zie niets op het scherm
[18:39] <CasW_> Zie je wel iets in de terminal? En heb je python-qt4 geínstalleerd?
[18:41] <leoquant> CasW, het probleem is visueel, klun je meeschrijven?
[18:41] <CasW_> Hij heeft nu het programma geschreven (ik zou het samenvatten, dat is waar ook)
[18:42] <CasW_> Hij heeft nu de volgende instructies gegeven, naar voren gaan een paar keer tot het einde en dan naar rechts draaien en richting de uitgang
[18:42] <leoquant> fallure hier
[18:42] <CasW_> Het is mogelijk om ook een programma te schrijven om alle levels automatisch op te lossen, dat hebben Marten en ik geschreven
[18:44] <CasW_> Het staat hier:http://paste.ubuntu.com/594911/
[18:45] <CasW_> Marten is nu de run-functie aan het beschrijven, en de functie run is het meest belangrijk<
[18:45] <CasW_> Die kijkt eerst of er een uitgang in de buurt is, zo ja, dan gaat hij daarnaartoe
[18:45] <CasW_> Daarna zoekt hij voor de steen, daarna voor lege ruimte
[18:46] <CasW_> We gaan nu door met de stof van vandaag
[18:46] <CasW_> Hij wil jullie vandaag de ´exceptions´ laten zien
[18:46] <CasW_> Jullie hebben het al laten zien, hij pakt nu weer de rekenmachine ervoor
[18:47] <CasW_> Jullie hebben toen gevraagt wat er gebeurt als je iets bijvoorbeeld door 0 deelt
[18:47] <CasW_> Dan krijg je een exception
[18:47] <CasW_> Normaal gesproken zie je dat die wordt gegooid, zoals dat heet, maar dat hoeft niet
[18:47] <CasW_> Je kunt ze ook ´afvangen´
[18:48] <CasW_> Hij gaat dat nu doen
[18:48] <CasW_> (typwith.me-link komt eraan)
[18:49] <commandoline_> http://typewith.me/ep/pad/view/ro.Muc6jvLcxm8/latest
[18:49] <CasW_> typewith.me-ep-pad-view-ro.Muc6jvi.cxm8-latest
[18:52] <CasW_> Die exception kan je afvangen in een zogenaamd codeblok
[18:52] <CasW_> Dan kan je bijvoorbeeld ipv de error een eigen stuk tekst weergeven
[18:53] <CasW_> Met het sleutelwoord continue kan je dan weer ´opnieuw beginnen´
[18:53] <CasW_> Hij heeft nu de code makkelijker gemaakt
[18:54] <CasW_> Als jullie dit programma draaien, dan zal je merken dat het programma blijft draaien als je iets verkeerds invoert
[18:54] <CasW_> Wat hem natuurlijk een stuk stabieler maakt
[18:54] <CasW_> Vragen
[18:55] <CasW_> Geen vragen
[18:55] <CasW_> Dan gaan we verder met het volgende onderwerp
[18:55] <CasW_> We hebben nu de exception afgevangen
[18:56] <CasW_> Nu vangen we alle exceptions af, omdat we alleen except hebben ingetypt
[18:56] <CasW_> Maar dat wil je soms niet
[18:56] <CasW_> Je kunt ook maar één exception afvangen
[18:56] <CasW_> Dat zal hij je nu laten zien
[18:57] <CasW_> Bij bijvoorbeeld regel 46 kan je door 0 delen
[18:57] <CasW_> En dat kan niet, dan krijg je een ZeroDivisionError
[18:58] <CasW_> Om die af te vangen, doe je ipv except except ZeroDivisionError
[18:58] <CasW_> Nu kan je dus doorgaan als dat het geval is
[18:59] <CasW_> Oftewel je kan alle fouten afvangen met except (niet aangeraden) of maar één fout met except ErrorNaam
[18:59] <CasW_> Nu moeten jullie weer python in een terminal opstarten
[18:59] <CasW_> Wat je kan doen, is dat je een lijst hebt
[19:00] <CasW_> En dan kan je een niet bestaand item erin aanroepen (achter het einde)
[19:00] <CasW_> Als je dat doet, dan krijg je een IndexError, alles wat voor die dubbele punt staat, is de naam van de error (die je dus kan afvangen)
[19:01] <CasW_> En dan kan je dus eigen foutmeldingen maken
[19:01] <CasW_> (Of er iets anders mee doen)
[19:02] <CasW_> Vragen?
[19:02] <CasW_> Je kan eigen exceptions maken (dus een ´eigen IndexError´)
[19:03] <CasW_> Bijvoorbeeld als je een eigen object hebt en je doet daar iets mee wat niet mag (niet wat Marten zegt`)
[19:03] <CasW_> Dan kan je je eigen exception gooien
[19:03] <CasW_> Nu gaan we laten zien hoe
[19:03] <CasW_> Bijvoorbeeld±
[19:04] <CasW_> class NotFoundError(exception)
[19:04] <CasW_> Hij erft dus exception
[19:04] <CasW_> En hier hoef je niets te doen, dus dan zet je pass (doet niets)
[19:05] <CasW_> En nu kan je dus deze exceptions opgooien en afvangen
 Exceptions zijn classes?
[19:05] <CasW_> Met het sleutelwoord raise kan je dan die exception opgooien
[19:05] <CasW_> Ja
[19:05] <leoquant> ok
[19:05] <CasW_> Oftewel raise NotFoundError()
 Bestaat er een lijst met foutmeldingen?
[19:06] <CasW_> (je maakt een instantie aan van NotFoundError)
[19:06] <CasW_> Er wordt in de references wel gezegd welke exceptions er gegeven kunnen worden, ja
[19:06] <CasW_> Nu wordt er weergegeven hoe je die dus kan afvangen
[19:07] <CasW_> Vragen?
[19:07] <commandoline_> http://paste.ubuntu.com/594921/
[19:07] <CasW_> Daar staat de net ingetypte code
[19:09] <CasW_> Oftewel er komt altijd ´het derde item kan niet worden opgevraagd´ te staan, ook al roep je het 4e aan
[19:09] <CasW_> Het volgende onderwerp is bestandsbeheer
[19:10] <CasW_> Weer een typewith.me komt eraan
[19:11] <commandoline_> http://typewith.me/ep/pad/view/ro.$Psl3hgDage/latest
[19:12] <CasW_> Wat hij nu wil doen is dat hij ervan uitgaat dat er een bestand is, en dan gaan wij de inhoud weergeven
[19:12] <CasW_> We hebben dus eerst een bestandsnaam nodig (rawinput)
[19:12] <CasW_> Sorry voor de verkeerde naam, vreemde toetsenbordinstelling hier
[19:13] <CasW_> Met de ingebouwde openfunctie kan je een bestand openen, met als argument de bestandsnaam<
[19:13] <CasW_> Alle inhoud van het bestand wordt gegeven met de functie read
[19:13] <CasW_> Nadeel, bij grote bestanden neemt dit veel tijd en geheugen in beslag
[19:14] <CasW_> We willen nu de inhoud ervan weergeven, bijvoorbeeld met print inhoud<
  Is dat te vergelijken met een memoveld in een database?
[19:15] <CasW_> Tweede script doet precies het tegenovergestelde, die schrijft ingevoerde tekst in een bestand
[19:16] <CasW_> Totdat er een bepaalde tekenreeks, eof (end of file) wordt ingevoerd, maken we inhoud steeds groter
[19:17] <CasW_> We vragen nu eerst dus de invoer, en als die gelijk is aan eof, dan wordt de loop gestopt, en in elke ander geval wordt input uitgebreid
[19:17] <CasW_> elk
[19:18] <CasW_> Die backslash n is een nieuwe regel
[19:19] <CasW_> Hij opent nu een nieuw bestand, en daar geeft hij een extra argument aan, ´w´, en dat geeft aan dat je erin wilt kunnen schrijven
[19:19] <CasW_> Met de functie write() kan je het argument inhoud schrijven
[19:19] <CasW_> Vragen?
[19:19] <commandoline_> http://typewith.me/ep/pad/view/ro.$Psl3hgDage/latest
[19:20] <commandoline_> was de link met het lees en schrijf programma
[19:20] <CasW_> Oké, we hebben voor vandaag wel weer genoeg behandeld
[19:20] <CasW_> Het huiswerk is
[19:21] <CasW_> Hij heeft daar een bestand dat gebruikt wordt door de friese vertalers
[19:21] <commandoline_> abort = ôfbrekke
[19:21] <CasW_> Het hele bestand staat vol met dat soort regels
[19:21] <CasW_> De opdracht is het bestand inlezen en dat in een dictionary zeggen
[19:22] <CasW_> En dan zo een soort woordenboekding schrijven
[19:22] <CasW_> Tips
[19:22] <CasW_> ipv de functie read heb je ook de functie readlines
[19:22] <CasW_> Die functie geeft een lijst terug met strings, elke regel in het bestand is een deel in de lijst
[19:23] <CasW_> Dus 1 is abort, en 2 is het volgende woord
[19:23] <CasW_> Nu wil je die twee woorden in een string uit elkaar halen
[19:23] <CasW_> Daarvoor kan je de functie split gebruiken
[19:24] <CasW_> Als argument geef je een string mee wat de twee delen deelt zegmaar, en dan geeft die functie een lijst terug
[19:24] <CasW_> Met op 1 het eerste deel, en op 2 het eerste deel achter die string
[19:25] <CasW_> En die lijst kun je dus als key value maken in een dictionary
[19:25] <CasW_> Mogelijke uitbreiding
[19:25] <CasW_> Als je een woord invoerd wat niet bestaat, krijg je een KeyError
[19:25] <CasW_> Die kan je nu afvangen en er iets leuks mee doen
[19:25] <CasW_> Vragen?
[19:26] <CasW_> Ik wel
 Spreek je Python echt uit als "Pieton"?
[19:26] <CasW_> Zie 20 25
[19:26] <leoquant> kanaal is open FOAD
[19:27] <FOAD> Complimenten voor iedereen behalve mijzelf.
[19:27] <leoquant> volgende week?
[19:27] <FOAD> Aw. :(
[19:27] <leoquant> ok!
[19:28] <commandoline_> woordenlijst.txt moeten jullie trouwens nog wel hebben:
[19:28] <FOAD> Och, ik verzin wel wat pseudo-Fries.
[19:28] <leoquant> heel erg bedankt CasW_ en commandoline_ en StefandeVries !!!!!
[19:28] <FOAD> Het kan alleen een verbetering zijn.
[19:29] <commandoline_> http://paste.ubuntu.com/594926/
[20:22] <fbruin_> hoi