5EWI/5LWI/5WWI Examenopdracht Kerst
1. Examenopdracht
1.1. Instructies
Hier vind u de code voor uw examenopdracht: ../code/5elwwi_examenopdracht_20231113.py
Indien de download niet lukt staat de inhoud ook beneden of in het vak op smartschool.
De vragen erin zijn op te lossen tem. zondag, 10/12/2023 (maar begin best op tijd).
- Sla het ineens op als nieuwe bestand met uw eigen naam, bv. “
5IWI_examenopdracht_LeeRLing.py
”! - Bewerk de opdrachten binnen het python-bestand, upload dan dit werkbestand.
- U mag in groepen werken en elkaar helpen, maar onder twee voorwarden:
- Vermeld uw groep!
- Iedereen moet zijn eigen bestand uploaden.
- U mag online-hulp, websites, AI, of boeken gebruiken, maar zet uw bron er als commentaar bij (anders is het een plagiaat, wordt beschouwd als fraude).
- Op vrijdag, 24/11 gaan we tijdens de les tijd nemen voor vragen en hulp.
1.2. Evaluatie
Er zijn in totaal 16 punten te behalen, telkens één of twee per deelvraag, plus punten voor “code werkt” en “goede documentatie”. Sommige extravragen of bijzonder elegante oplossingen leveren een bonus op; voor het te laat indienen ga ik tot twee punten aftrekken. De opdrachten zijn onafhankelijk: probeer er verder te blijven werken, ook als een opdracht een “error” oplevert (gebruik comments of de “try/except”-omgeving, voorbeeld staat benenden en hulp online).
1.3. Upload
Upload uw resultaat (werkbestand) via de uploadzone in smartschool, vak “<uw klas> Informaticawetenschappen”!
Als er iets niet duidelijk is, aarzel niet om me (op tijd) via smartschool te contakteren.
Succes!
1.4. Code
#!/usr/bin/env python3 #________________________________________________________________________________ # (0) Informatie #________________________________________________________________________________ """ Vul hier de info over u zelf aan. """ __author__ = "<uw naam>" __klas__ = "<uw klas>" __groep__ = "<Vermeld hier als u met iemand samen gewerkt hebt.>" __hulpmiddelen__ = """<Schrijf hier, indien van toepassing, welke andere hulpmiddelen u gebruikt hebt.> """ # Noot: indien u hulp(middelen) gebruikt, probeer dan toch om # de code te begrijpen en te verbeteren! #________________________________________________________________________________ # (1) Lijsten en Datatypes #________________________________________________________________________________ """ Tijdens de les hebben we al eventjes lijsten gezien. Hier is een nuttige uitbreidingsvideo van de UHasselt: - https://www.youtube.com/watch?v=sRNx7Tu5ynw 1a) Bekijk dit video! We gaan het hieronder toepassen. Vraag: welke twee woorden noemt de instructor als voorbeeld ervoor dat een "string" een geordende collectie is? """ # (uw antwoord hieronder) # woord 1: # woord 2: #________________________________________________________________________________ # (1b) lijstlengte klaslijst = [ \ "Lisa Merritt", "Ronda Sutton", "Lindsay Lowry", "Connie Blank", "Mary Garcia", "Natalie Lesh", "Raymond Gonzalez", "Rosemary Vandy", "William Bush", "Linda Dukes", "Debora Hofmann", "Kerry Hensley", "Arron Alger", "Julio Leavell", "Richard Fanno", "Ricardo Tomopoulos", "Rachel Shaw", "Pete Davis", "Dorothy Hines", "Catrina Macklin" ] """ We werken met de bovenstaande klaslijst met (toevallig gegenereerde) namen van leerlingen. Hoeveel leerlingen zijn in die klas? (Uw antwoord zou best een python-functie gebruiken, indien de lijstlengte veranderd.) """ # <<< uw code hier! #________________________________________________________________________________ # (1c) aan een lijst toevoegen """ Er komen nieuwe leerlingen bij: ze heten "Scott Perry" en "Rickey Palmquist". Voeg ze aan de lijst boven toe! Tip: gebruik bijvoorbeeld de functie `<lijst>.append(...)`! """ # <<< uw code hier! #________________________________________________________________________________ # (1d) voornamen """ Wij willen alleen maar de voornamen van de leerlingen hebben. Maak er een tweede lijst aan, bv. `klaslijst_voornaam`. Tip: u kan de functie `<str>.split(" ")` gebruiken. Tip: met "list comprehension" gaat het nog sneller! zie hier: https://towardsdatascience.com/11-examples-to-master-python-list-comprehensions-33c681b56212 """ # <<< uw code hier! #________________________________________________________________________________ # (1e) index """ De hoeveelde leerling in de lijst is "Rachel Shaw"? """ # <<< uw code hier! #________________________________________________________________________________ # (1f) klasnummers """ Gebruik de functie "enumerate(<lijst>)" om elke leerling met zijn klasnummer af te printen. Voorbeeld-uitkomst: >> 1. Arron Alger >> 2. Connie Blank ... Bonuspunt: Sorteer de lijst alfabetisch na hun achternaam! """ # <<< uw code hier! #________________________________________________________________________________ # (2) Bibliotheken: Matplotlib #________________________________________________________________________________ """ De bibliotheek "matplotlib" is een nuttige versameling van functies en methoden rond het visualiseren ("plotten") van data. U vind informatie hier: https://matplotlib.org In de wiskunde leerde u iets over veeltermfuncties, polynomen. Het zou nuttig zijn om die soort functies snel te kunnen plotten. """ #________________________________________________________________________________ # (2a) bibliotheek-installatie """ Wij hebben "numpy" nodig om numerieke functies aan te maken, en matplotlib om ze af te beelden. Eigenlijk is dit al bekend: u moet de bibliotheken installeren om ze te kunnen importeren. """ import numpy as np import matplotlib.pyplot as plt #________________________________________________________________________________ # (2b) plotten # gegeven: een waardebereik en een polynoom-functie in python x = np.linspace(-1., +3., 401, endpoint = True) f = lambda x: 0.2*x**3 - 0.5* x**2 + 0.6* x - 0.2 """ Bekijk de documentatie van `plt.plot()`: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html Vervolledig de functie beneden zoals gevraagd in de commentaren. Noot: u moet hiervoor zeker hulp online zoeken (bv. https://www.startpage.com/search?q=matplotlib+how+to+set+the+title+of+a+plot ) """ def PlotPolynoom(x, y, label = None, titel = None): # Eerst moeten we een figuur aanmaken, dit is de "canvas" waarop we de # functie gaan tekenen. fig = plt.figure() # hier was eerder een FOUT: "plt.Figure()" -> plt.figure() # Het diagramma waarop we gaan plotten noemen we "axis". ax = fig.add_subplot(1,1,1, aspect = 'equal') # Daarmee moeten we de functie plotten. # [!] Ga zeker dat u een kleur (bv. zwart) en lijnstijl (bv. '-') kiest! ax.plot(...)# <<< uw code hier! # U moet verder nog een legende aanmaken en optioneel een titel toevoegen, # als de gebruiker een titel kiest die niet "None" is. # <<< uw code hier! # Zet er ook assen-labels (gewoon "x" en "y"). # <<< uw code hier! # Als laatste stap moeten we de afbeelding tonen. plt.show() # En hier gaan we de functie uiteindelijk toepassen! try: PlotPolynoom(x, y = f(x), label = r'$0.2x^3-0.5x^2+0.6x-0.2$', titel = 'een polynoom') except TypeError as te: # TypeError komt er als u nog niet met deze oefening aan de slag bent. pass #________________________________________________________________________________ # (3) Functies #________________________________________________________________________________ # (3a) String-omkering """ Pas de volgende functie aan zo dat ze een string als argument krijgt en het omgekeerde string terug geeft. voorbeelduitkomst: # print(StringOmkering("Informaticawetenschappen")) >> neppahcsnetewacitamrofnI """ def StringOmkering(invoertekst): pass # <<< uw code hier! return omgekeerde_tekst # print(StringOmkering("Informaticawetenschappen")) #________________________________________________________________________________ # (3b) Palindroomcontrole """ Maak er een eigen functie aan die controleerd of een tekst een palindrome is. Een palindroom is een keerwoord of spiegelwoord: https://nl.wikipedia.org/wiki/Palindroom Tip 1: U kan de functie van (1a) gebruiken! Tip 2: De functie moet hoofdletterongevoelig zijn! Voorbeelduitkomst: # print(MijnPalindroomControleFunctie("Informaticawetenschappen")) >> False # print(MijnPalindroomControleFunctie("Koortsmeetsysteemstrook")) >> True Als u helemaal alles over functies vergeten bent, is hier misschien een kleine herhaling: https://www.programiz.com/python-programming/function """ # <<< uw code hier! #________________________________________________________________________________ # (3c) een tekst scannen """ Vind er alle palindroom-woorden in de volgende palindroom_tekst en print ze af! Noot: een palindroom moet ten minste drie letters lang zijn. """ # bron: https://www.britannica.com/art/palindrome palindroom_tekst = """ Palindrome, word, number, sentence, or verse that reads the same backward or forward. The term derives from the Greek palin dromo ("running back again"). Examples of word palindromes include "civic", "madam", "radar", and "deified". Numerical palindromes include sequences that read the same in reverse order (e.g., 1991), as well as those that can be read upside down and backward (e.g., 1961). Examples of sentences include "Able was I ere I saw Elba" and "Lewd did I live & evil I did dwel." Examples of verse include (in Latin) "Roma tibi subito motibus ibit amor" and "Signa te, signa temere me tangis et angis." Some persons have refined upon the palindrome and composed verses each word of which is the same read backward as forward—for instance, that of William Camden: Palindrome that shows and then reverses the text Odo tenet mulum, madidam mappam tenet Anna. This Latin palindromic square, which was found on a Roman wall in Cirencester, Eng., and in Pompeii, Italy, may be translated: "Arepo the sower holds the wheels with care." As late as the 19th century it was graven on amulets and charms and laid upon pregnant women to ensure safe delivery. Like the sign of the fish (an acrostic: Greek ichthys, "fish," happens to have the first letters of the Greek words for Jesus Christ, God’s son, Saviour), the square may have been used to identify fellow Christians in the days of persecution, for its letters form a cross with the word tenet and can be arranged in the cross: [The word paternoster written twice and arranged as a cross centered around the letter N.] with four letters remaining: A, O, A, and O. These, placed at the extremities, can represent alpha and omega. Though some, because of the early date of the eruption that destroyed Pompeii (ad 79), suggest a Jewish origin, the threefold Christian symbols, cross, prayer, and quotation, seem to confute them; moreover, the letters of the square can be rearranged to spell Oro Te, Pater; oro Te, Pater; sanas: "I pray to thee, Father. Thou healest." Thus the palindrome, now merely a game, had a serious beginning """ # nog eventjes de tekst opruimen: import re # regular expressions, om de symbolen te verwijderen # https://www.geeksforgeeks.org/python-extract-only-characters-from-given-string/ palindroom_tekst = "".join(re.split("[^a-zA-Z\s]*", palindroom_tekst)) # Vind er alle palindroom-woorden! (ongeveer 15) # <<< uw code hier!