ID.nl logo
Zo kun je programmeren in Python - Deel 2
© Reshift Digital
Zekerheid & gemak

Zo kun je programmeren in Python - Deel 2

Na onze eerste kennismaking met Python is het tijd om wat complexere datastructuren te bekijken: lijsten en dictionary’s. We duiken ook in de structuur van strings, zodat je afzonderlijke letters kunt manipuleren. Start je Python-interpreter maar alvast op!

In de vorige les leerde je met drie datatypes in Python werken: int, float en str. Vooral int en float zijn vrij eenvoudige datatypes. Maar in veel programma’s heb je types met meer structuur nodig, we noemen dit ook wel datastructuren. In dit deel leer je met twee belangrijke datastructuren van Python werken.

Lijsten

In veel programma’s werk je niet met één specifiek gegeven, maar met een hele reeks. Een lijst (in Python list) is daarvoor ideaal. Zo maak je bijvoorbeeld een lijst met namen aan:

>>> namen = ['kees', 'jan', 'pieter', 'jan', 'joris', 'rob']>>> len(namen)

6

>>> lege_lijst = []

>>> len(lege_lijst)

0

De functie len, die we uit de vorige les kennen om de lengte van een string terug te geven, werkt ook op een lijst: dan krijg je het aantal elementen in die lijst.

Overigens kan een lijst elementen van verschillende types bevatten, zoals een float, twee strings en een int. Maar vaak heeft een lijst alleen elementen van hetzelfde type.

Functies, parameters en argumenten

Python deelt heel wat functionaliteit op in functies: stukjes code die een specifieke taak uitvoeren, zoals len om de lengte van een lijst of string op te vragen. Een functie kan een parameter hebben: een variabele waarmee de functie werkt en die als waarde het object krijgt dat je aan die functie doorgeeft. Dat object noemen we het argument van de functie. Een functie kan ook meerdere parameters (en dus argumenten) hebben. In deel 6 leer je je eigen functies definiëren en wordt dit allemaal nog veel duidelijker.

Elementen in een lijst

Python kent ook heel wat mogelijkheden om met de elementen in een lijst te werken. Zo vraag je eenvoudig een element uit de lijst op een specifieke positie (ook ‘index’ genoemd) op:

>>> namen[2]'pieter'

Merk op dat de positie in een lijst vanaf 0 begint te tellen: het eerste element is namen[0], het tweede namen[1], het derde namen[2] enzovoort. Je zou dan denken dat je het laatste element moet opvragen met:

>>> namen[len(namen)-1]'rob'

Dat werkt inderdaad, maar Python laat ook een negatieve positie toe, waarmee je vanachter in de lijst begint te tellen. Het laatste element heeft dan positie -1:

>>> namen[-1]'rob'>>> namen[-2]'joris'

Als je goed hebt opgelet, zie je dat de string ‘jan’ twee keer in bovenstaande lijst zit. Dat aantal keren kun je opvragen met de functie count:

>>> namen.count('jan')2>>> namen.count('pieter')1>>> namen.count('koen')0

Je kunt ook de positie van een element in een lijst opvragen:

>>> namen.index('jan')1>>> namen.index('pieter')2>>> namen.index('koen')Traceback (most recent call last):File "<stdin>", line 1, in <module>ValueError: 'koen' is not in list

Zoals je ziet krijg je een foutmelding (ValueError) als het gevraagde element zich niet in de lijst bevindt. Voor een element dat zich meerdere keren in de lijst bevindt, geeft de functie index alleen de eerste positie terug. Maar je kunt ook vragen om vanaf een specifieke positie te zoeken:

>>> namen.index('jan', 2)3

Een lijst veranderen

Als je een lijst hebt aangemaakt, kun je die nog altijd veranderen. In het eenvoudigste geval verander je bijvoorbeeld één element:

>>> namen['kees', 'jan', 'pieter', 'jan', 'joris', 'rob']>>> namen[1] = 'koen'>>> namen['kees', 'koen', 'pieter', 'jan', 'joris', 'rob']

Je kunt een lijst ook omdraaien of sorteren:

>>> namen.reverse()>>> namen['rob', 'joris', 'jan', 'pieter', 'koen', 'kees']>>> namen.sort()>>> namen['jan', 'joris', 'kees', 'koen', 'pieter', 'rob']

Verder kun je ook een element aan het einde van een lijst toevoegen, of op een specifieke positie tussen de andere elementen voegen:

>>> namen['jan', 'joris', 'kees', 'koen', 'pieter', 'rob']>>> namen.append('aniek')>>> namen['jan', 'joris', 'kees', 'koen', 'pieter', 'rob', 'aniek']>>> namen.insert(0, 'lies')>>> namen['lies', 'jan', 'joris', 'kees', 'koen', 'pieter', 'rob', 'aniek']>>> namen.insert(4, 'mireille')>>> namen['lies', 'jan', 'joris', 'kees', 'mireille', 'koen', 'pieter', 'rob', 'aniek']

Je kunt ook bestaande elementen verwijderen. Zo verwijder je met de functie remove(x) het eerste element waarvan de waarde gelijk is aan x:

>>> namen['lies', 'jan', 'joris', 'kees', 'mireille', 'koen', 'pieter', 'rob', 'aniek']>>> namen.remove('pieter')>>> namen['lies', 'jan', 'joris', 'kees', 'mireille', 'koen', 'rob', 'aniek']>>> namen.remove('pieter')Traceback (most recent call last):File "<stdin>", line 1, in <module>ValueError: list.remove(x): x not in list

Zoals je ziet, krijg je een foutmelding als je vraagt om een element te verwijderen dat niet in de lijst zit.

Je kunt ook een element op een gegeven positie verwijderen. Dat doe je met de functie pop:

>>> namen['lies', 'jan', 'joris', 'kees', 'mireille', 'koen', 'rob', 'aniek']>>> namen.pop(2)'joris'>>> namen['lies', 'jan', 'kees', 'mireille', 'koen', 'rob', 'aniek']

Als je goed hebt opgelet, zie je dat de functie pop niet alleen een element verwijdert, maar op de opdrachtregel ook als waarde het verwijderde element teruggeeft ('joris').

Snijden in een lijst

Python heeft een krachtige manier om een lijst in stukken te snijden: ‘slicing’. Herinner je de notatie [n] voor het n-de element? Met [n:] krijg je de elementen terug vanaf index n, met [:n] de elementen tot index n (niet inbegrepen) en met [m:n] de elementen van index m tot n (die laatste niet inbegrepen). Enkele voorbeelden maken dit duidelijk:

>>> namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']>>> namen[1:]['jan', 'kees', 'mireille', 'koen', 'rob']>>> namen[:4]['lies', 'jan', 'kees', 'mireille']>>> namen[1:4]['jan', 'kees', 'mireille']

Omdat Python begint te tellen vanaf 0 en in de beginpositie van een slice het element zelf meerekent maar in de eindpositie niet, is de notatie van slicing nogal verwarrend. Het helpt daarom om deze posities te beschouwen als de posities van de komma’s in de lijst, te tellen vanaf 1. Alles tussen de komma’s op die posities is dan de gevraagde slice. Neem bijvoorbeeld namen[1:4]. Omdat namen gelijk is aan ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob'], nemen we alles tussen de eerste en de vierde komma, dus van vóór 'jan' tot ná 'mireille', oftewel ['jan', 'kees', 'mireille'].

Slicing is ook een krachtige manier om een deel van een lijst te veranderen. Zo vervang je eenvoudig voorgaande slice in de lijst door een andere naam:

>>> namen['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']>>> namen[1:4] = ['bas']>>> namen['lies', 'bas', 'koen', 'rob']

Nog eens strings

In een string krijg je net zoals in een lijst toegang tot het n-de element met de notatie [n]. Zo krijg je met 'aniek'[1] het tweede teken van de string 'aniek', of de letter n. Ook slicing werkt bij een string: 'aniek'[1:4] is gelijk aan nie. Maar let op: in tegenstelling tot een lijst kun je een string niet veranderen. De poging 'aniek'[1:4] = 'r' geeft een foutmelding.

Dictionary’s

In een lijst heeft elk element als index zijn positie, zodat je eenvoudig het element op een specifieke positie kunt opvragen. Een andere datastructuur is de ‘dictionary’, die als index voor zijn elementen een sleutel gebruikt, vaak een string of een getal. Elke sleutel van de dictionary moet uniek zijn, zodat je eenvoudig de waarde die bij een specifieke sleutel hoort kunt opvragen.

Een voorbeeld maakt duidelijk hoe je met een dictionary werkt:

>>> scores = {'lies': 5, 'bas': 2, 'kees': 1, 'aniek': 3}>>> scores['aniek']3>>> scores['bert']Traceback (most recent call last):File "<stdin>", line 1, in <module>KeyError: 'bert'>>> len(scores)4

Op deze manier kun je eenvoudig de score van een persoon opvragen op basis van zijn of haar naam. Je ziet hier ook dat je een foutmelding krijgt als je een element opvraagt met een index die niet in de dictionary bestaat.

Een dictionary kun je net zoals een lijst veranderen. Je kunt de waarde bij een specifieke sleutel veranderen, maar je kunt even eenvoudig een nieuw element toevoegen: ken gewoon een waarde toe aan een nieuwe sleutel. Bijvoorbeeld:

>>> scores{'lies': 5, 'bas': 2, 'kees': 1, 'aniek': 3}>>> scores['lies'] += 1>>> scores{'lies': 6, 'bas': 2, 'kees': 1, 'aniek': 3}>>> scores['bert'] = 1>>> scores{'lies': 6, 'bas': 2, 'kees': 1, 'aniek': 3, 'bert': 1}

Een sleutel en de bijbehorende waarde uit de dictionary verwijderen, doe je met het speciale keyword del:

>>> scores{'lies': 6, 'bas': 2, 'kees': 1, 'aniek': 3, 'bert': 1}>>> del scores['kees']>>> scores{'lies': 6, 'bas': 2, 'aniek': 3, 'bert': 1}

Samenvatting

In dit deel zijn we lang stil blijven staan bij een van de meest gebruikte datastructuren in Python: de lijst. De kennis die je hebt opgedaan over lijsten, kun je voor heel wat andere datatypes in Python hergebruiken. Zo toonden we hoe de notatie voor een index en voor ‘slicing’ hetzelfde is bij een string. Een ander belangrijk datatype dat je in dit deel zag, is de dictionary, waarin je geen positie maar een sleutel als index gebruikt. In het volgende deel verlaten we de interactieve Python-sessies en schrijven we onze eerste programma’s.

Opdracht 1

Je hebt de volgende lijst met namen: >>> namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob', 'aniek'] Splits deze lijst in zijn laatste element en de rest van de lijst.

Uitwerking opdracht 1

*>>> namen ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob', 'aniek']

laatste_persoon = namen.pop() namen ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob'] laatste_persoon 'aniek'* Dit is een veel gebruikte toepassing van de functie pop(), die niet alleen het element op een specifieke index verwijdert, maar ook het verwijderde element teruggeeft. Waarschijnlijk heb je deze opdracht opgelost met: laatste_persoon = namen.pop(-1) Maar de -1 is niet nodig: zonder index geeft de functie pop het laatste element terug.

Opdracht 2

Haal uit een string alle tekens behalve het eerste en het laatste.

Uitwerking opdracht 2

*>>> naam = 'aniek'

naam[1:-1] 'nie'* Slicing werkt bij een string exact zoals bij een lijst. Bovendien kunnen we ook gebruikmaken van een negatieve index in slicing: -1 verwijst dan naar het laatste element. Omdat Python begint te tellen vanaf 0 en in de beginpositie van een slice het teken zelf meerekent maar in de eindpositie niet, verwijst de slice [1:-1] dus naar alle tekens in de string behalve het eerste en het laatste.

Cheatsheet

datastructuur: een datatype dat uit elementen bestaat die met elkaar samenhangen. dictionary: een datastructuur waarin je elementen opvraagt aan de hand van een unieke sleutel. index (in een lijst): positie van een element in een lijst, te beginnen vanaf 0. index (in een dictionary): sleutel van een element waarmee het uit een dictionary op te vragen is. lijst: een datastructuur waarin je elementen opvraagt aan de hand van hun positie. slicing: het in stukken snijden van een lijst of string.

▼ Volgende artikel
3 Windows-instellingen die je direct moet aanpassen voor een snellere en veiligere pc
© ID.nl
Huis

3 Windows-instellingen die je direct moet aanpassen voor een snellere en veiligere pc

Frustraties over een trage pc of ongewenste advertenties? Grote kans dat de standaard Windows-instellingen de boosdoener zijn. Met drie simpele ingrepen optimaliseer je direct de snelheid, privacy en veiligheid van je systeem. Wij zetten de belangrijkste aanpassingen op een rij, zodat je direct weer vlot en zorgeloos aan de slag kunt!

Of je nu net een gloednieuwe laptop uit de doos haalt of al jaren op dezelfde vertrouwde desktop werkt, de standaardinstellingen van Windows zijn zelden optimaal. Microsoft kiest vaak voor opties die hun eigen diensten promoten in plaats van jouw gebruiksgemak centraal te stellen. Gelukkig kun je met een paar gerichte ingrepen direct winst behalen. Pas deze drie essentiële instellingen aan voor meer privacy, snelheid en overzicht.

Schakel onnodige opstart-apps uit

Niets is zo frustrerend als een computer die er minutenlang over doet om startklaar te zijn. De grootste boosdoener hiervoor is vaak een overdaad aan programma's die automatisch opstarten zodra je de pc aanzet. Veel applicaties, van Spotify tot samenwerkingstools als Microsoft Teams, nestelen zich tijdens de installatie ongevraagd in je opstartproces. Dat vreet direct aan je systeemgeheugen en vertraagt de opstarttijd aanzienlijk.

Je lost dit eenvoudig op door naar de instellingen van Windows te navigeren en te zoeken naar de optie Opstart-apps. Hier zie je een duidelijk overzicht van alle software die met Windows mee start, inclusief de impact die elk programma heeft op de prestaties. Loop kritisch door deze lijst heen. Programma's die je niet dagelijks direct na het inloggen nodig hebt, kun je zonder risico uitschakelen door het schuifje om te zetten. Je verwijdert de software hiermee niet; je voorkomt alleen dat ze op de achtergrond draaien zonder dat je erom gevraagd hebt. Je pc zal hierdoor merkbaar vlotter reageren.

Weg met die advertenties en suggesties!

Windows is in de loop der jaren steeds meer veranderd in een platform waarop Microsoft eigen en gesponsorde diensten probeert te verkopen. Dat uit zich in zogenaamde 'suggesties' in je Startmenu, op je vergrendelingsscherm en zelfs in de Verkenner. Voor de meeste gebruikers voelt dat – terecht – als ongewenste reclame binnen een besturingssysteem waarvoor al betaald is. Het zorgt bovendien voor ruis en leidt af van waar je eigenlijk mee bezig bent.

Om deze stroom aan prikkels te stoppen, duik je in het menu Persoonlijke instellingen. Bij de instellingen voor het Startmenu en het Vergrendelingsscherm vind je opties die verwijzen naar het tonen van suggesties, tips of leuke weetjes. Vink deze opties uit om een schonere, rustigere interface te krijgen. Vergeet ook niet bij de privacy-instellingen de optie uit te zetten die Windows toestaat om je Instellingen-app te gebruiken voor het tonen van voorgestelde inhoud. Het resultaat is een professionelere werkomgeving die doet wat hij moet doen, zonder je continu te proberen te verleiden tot extra klikken.

Maak bestandsextensies zichtbaar

Een van de meest riskante standaardinstellingen in Windows is het verbergen van bestandsextensies voor bekende bestandstypen. Standaard zie je alleen de naam van een bestand, bijvoorbeeld 'factuur', maar niet of het een .pdf, .docx of een .exe is. Cybercriminelen maken daar dankbaar gebruik van door virussen te vermommen als onschuldige documenten. Een bestand dat 'foto.jpg.exe' heet, wordt door Windows dan getoond als 'foto.jpg', waardoor je denkt een afbeelding te openen terwijl je in werkelijkheid schadelijke software installeert.

Je kunt dit veiligheidsrisico direct verhelpen via de Bestandsverkenner. Zoek in de menubalk naar de optie Weergeven en navigeer vervolgens naar de instellingen voor weergeven. Hier vind je een optie genaamd Extensies voor bestandsnamen. Zorg dat deze optie aangevinkt staat. Hoewel het in het begin even wennen kan zijn om achter elk bestand een punt en drie of vier letters te zien staan, geeft het je volledige controle en inzicht. Je ziet nu in één oogopslag met wat voor type bestand je écht te maken hebt, en dat verkleint de kans op een succesvolle malware-infectie drastisch.

Populaire merken voor Windows-laptops

Wie op zoek is naar hardware die het meeste uit Windows haalt, komt al snel uit bij een aantal gevestigde namen die de markt domineren. Een van de grootste spelers is Lenovo, dat met name met de ThinkPad-serie een ijzersterke reputatie heeft opgebouwd in de zakelijke markt dankzij robuuste bouwkwaliteit en uitstekende toetsenborden. Voor consumenten die design en innovatie zoeken, is HP (Hewlett-Packard) een veelgekozen merk, mede dankzij de Omnibook- en Envy-lijnen die esthetiek combineren met krachtige prestaties. Ook Acer blijft een vaste waarde, waarbij vooral de Aspire-modellen steevast hoge ogen gooien in reviews vanwege hun interessante prijs-kwaliteitverhouding. Tot slot biedt het Taiwanese ASUS vaak veel rekenkracht voor een scherpe prijs en durven zij met hun ZenBook-serie vaak te experimenteren met nieuwe technologieën zoals dubbele schermen.

▼ Volgende artikel
Dekbed in de wasdroger: helpt een tennisbal echt?
© ID.nl
Huis

Dekbed in de wasdroger: helpt een tennisbal echt?

Wanneer je je dekbed gewassen hebt, wil je dat het natuurlijk weer lekker dik en luchtig aanvoelt. Maar wanneer je hem gewoon in de droger gooit, kan de vulling gaan klonteren, zodat er dunne stukken en dikke stukken ontstaan. Dat slaapt niet echt lekker. Om dat te voorkomen, gooien veel mensen er een paar tennisballen bij. Helpt dat echt?

In dit artikel

Je leest wat tennisballen in de droger doen en bij welke dekbedden dat wel of juist minder goed werkt. We leggen uit hoeveel ballen je nodig hebt, waar je op let bij het type tennisbal en waarom voldoende ruimte in de trommel belangrijk is. Ook staan we stil bij alternatieven zoals speciale drogerballen en geven we praktische tips om je dekbed gelijkmatig te laten drogen en mooi in vorm te houden.

Lees ook: 9 veelgemaakte fouten bij het drogen van je was

Wat tennisballen in de droger doen

Tijdens het drogen raken de tennisballen telkens het dekbed. Dat helpt vooral bij dons en veren. Als die nat zijn, blijven ze aan elkaar plakken en zakt de vulling in. Door de constante beweging vallen die samengepakte delen weer uiteen, waardoor de vulling zich opnieuw verspreidt. Zo kan de warme lucht overal beter bij en droogt het dekbed gelijkmatiger. De droogtijd wordt er niet korter van, maar het dekbed komt wel duidelijk voller uit de droger.

Hoe vaak moet je je dekbed eigenlijk wassen?

Een dekbed hoeft niet vaak in de was. Voor de meeste mensen is één tot twee keer per jaar genoeg. Dat komt omdat het meeste vuil (denk bijvoorbeeld aan zweet of huidschilfers) niet in het dekbed zelf terechtkomt, maar in het dekbedovertrek. Dat overtrek was je regelmatig, meestal eens per één à twee weken. Het dekbed blijft daardoor relatief schoon.

Soms is vaker wassen wel logisch. Bijvoorbeeld als je veel zweet in je slaap, last hebt van een huisstofmijtallergie of het overtrek niet zo vaak verschoont. Ook na ziekte of bij zichtbare vlekken is een extra wasbeurt verstandig.

Hoe vaak je kunt wassen, hangt ook af van de vulling. Niet elk dekbed kan namelijk even goed tegen veel wasbeurten. Dons- en verendekbedden kunnen meestal in de wasmachine, mits je het waslabel volgt en ze daarna goed laat drogen. Synthetische dekbedden zijn in dat opzicht wat vergevingsgezinder en kunnen vaak vaker gewassen worden zonder dat de vulling daaronder lijdt.

Twijfel je of wassen echt nodig is? Dan is luchten een goed alternatief. Hang je dekbed regelmatig buiten of bij een open raam. Daarmee kun je een wasbeurt vaak nog maanden uitstellen.

View post on TikTok

Hoeveel tennisballen zijn genoeg?

Met één tennisbal in de wasdroger merk je vaak weinig, zeker bij een groot dekbed. Die verdwijnt al snel in de stof en heeft dan weinig effect. Met twee tot vier ballen werkt het beter, omdat ze het dekbed op meerdere plekken tegelijk in beweging houden. Zolang de ballen vrij kunnen bewegen en niet vast blijven zitten in de vulling, doen ze hun werk.

Kun je elke tennisbal gebruiken bij het drogen van een dekbed in de droger?

iet elke tennisbal is even geschikt. Vooral nieuwe of felgekleurde ballen kunnen bij hogere temperaturen kleur afgeven en kleine pluisjes verliezen van de vilten buitenlaag. Dat komt niet vaak voor, maar het risico is wel aanwezig. Gebruik je oudere tennisballen, dan is de kans hierop kleiner. Wil je dat verder beperken, dan kun je de ballen in een oude witte sok stoppen en die dichtknopen. Het effect blijft grotendeels hetzelfde, al is het iets minder uitgesproken dan met losse ballen.

Speciale drogerballen

Er bestaan ook speciale drogerballen van wol of kunststof. Die zijn bedoeld voor gebruik in de droger en geven geen kleur af. Ze doen hetzelfde als tennisballen: ze zorgen dat het dekbed tijdens het drogen in beweging blijft. Wolballen maken minder lawaai en zijn milder voor stoffen. Stop je je dekbed regelmatig in de droger? Dan kun je beter deze speciale bollen gebruiken in plaats van tennisballen.  

Geef het dekbed genoeg ruimte in de droger

Tennisballen helpen alleen als het dekbed voldoende ruimte heeft om te bewegen. Is de trommel te vol, dan draait alles als één geheel rond en gebeurt er weinig. Wil je grote tweepersoonsdekbedden drogen, dan heb je een droger met een ruime trommel nodig. Heb je die niet zelf? Kijk dan of er een wasserette bij je in de buurt is. Meer ruimte zorgt voor meer beweging en daarmee voor een beter eindresultaat.

Niet elk dekbed kan in de droger

Tennisballen hebben vooral effect bij dons- en verendekbedden. Bij synthetische vulling is dat verschil kleiner en kan de constante beweging van de ballen de vulling na verloop van tijd zelfs vervormen. Wol, zijde en andere natuurlijke materialen mogen meestal helemaal niet in de droger. Check daarom altijd eerst het waslabel voordat je het dekbed in de trommel legt.

Even tussendoor opschudden helpt

Haal het dekbed halverwege het programma even uit de droger en schud het los, alsof je het bed opmaakt. Leg het daarna omgedraaid terug in de trommel. Zo verdeelt de vulling zich opnieuw en kan het dekbed gelijkmatiger drogen.

Wat kun je van het eindresultaat verwachten?

Tennis- of drogerballen zijn vooral een hulpmiddel, geen vervanging voor de juiste drooginstellingen. Droog het dekbed niet te vaak of te heet: kies een lage of middelhoge temperatuur en selecteer een speciaal dons- of beddengoedprogramma als dat op je droger zit. Zorg ook voor voldoende ruimte in de trommel. Als je dan ook nog eens ballen laat meedraaien, heb je er alles aan gedaan om te zorgen dat je dekbed weer lekker vol uit de droger komt!