5EWI/5LWI/5WWI Examenopdracht Kerst


Home 4BSW1 4BSW2 4MTLAT/4LAT 4MWW1 4MWW2 4NWE2 5BWE 5EWI/5LWI/5WWI1 5WWI2 About

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!


Date: 2023-12-10 Sun 00:00

Author: Falk Mielke