SVG 05 - Modules =========================== Modules ------- Tot nu toe hebben we o.a. de volgende functies gezien: :func:`print()`, :func:`input()`, :func:`int()`, :func:`str()`, :func:`type()`, :func:`open()`. Dit noemt men “built-in” (ingebouwde) functies: Dit zijn functies die je altijd onmiddellijk ter beschikking hebt in Python. In het totaal zijn er zo ongeveer 70 functies standaard beschikbaar in Python. Hier vind je de lijst met ingebouwde functies: https://docs.python.org/3.8/library/functions.html Buiten deze ingebouwde functies bevat Python ook veel extra functionaliteit in wat men de “standard library” noemt. Deze “standard library” bestaat uit vele modules met hierin o.a. vele functies die je kan gebruiken. Om vanuit je programma die functies te kunnen gebruiken dien je de gewenste module eerste te importeren met het import statement:: import getpass gebruikersnaam = getpass.getuser() print(gebruikersnaam) Hoe werkt dit? -------------- Regel 1 De module met naam :mod:`getpass` wordt bruikbaar gemaakt vanuit je programma. Regel 2 De functie :func:`getuser()` in de module :mod:`getpass` wordt opgeroepen. Deze functie geeft de huidige gebruikersnaam terug. Deze wordt nadien opgeslagen via het assignment statement in de variabele met naam “gebruikersnaam”. Regel 3 De variabele met naam “gebruikersnaam” wordt op het scherm getoond. Opgave 21 --------- In opgave 20 vragen de gebruiker om zijn/haar paswoord in te geven, via de :func:`input()` functie. Maar dit werkt niet handig omdat :func:`input()` de invoer toont terwijl je typt. In de module :mod:`getpass` zit ook een functie :func:`getpass()` die hier een oplossing voor biedt. Pas je programma aan zodanig dat je paswoord niet meer zichtbaar is, gebruik makend van deze :func:`getpass()` functie. Opgave 22 --------- Een andere nuttige module in de standard library is de :mod:`random` module. In de random module zit o.a. de functie :func:`randint()`. Deze functie geeft je een willekeurig getal terug tussen twee opgegeven getallen. Dus, bij een oproep van ``randint(0, 1)``, krijg je ofwel 0 ofwel 1 terug. Als je ``randint(0, 100)`` gebruikt, krijg 1 getal in het interval [0, 100]. Dus, je getal kan 0, 1, ..., 99 of 100 zijn. Schrijf een programma dat een willekeurige PIN-code voor je GSM maakt. Opgave 23 --------- Pas je programma uit opgave 19 aan, zodanig dat de straal van je cirkels willekeurig gekozen wordt, gebruik makend van de functie :func:`randint()` uit de module :mod:`random`. Pas vervolgens je programma aan zodanig dat de uitvoer niet meer op het scherm getoond wordt, maar naar een bestand geschreven wordt met behulp van de :func:`open()` functie (alsook :func:`write()` en :func:`close()` zoals in het voorbeeld). Opgave 24 --------- In de module :mod:`random` zit verder ook een functie :func:`choice()` die een willekeurige keuze maakt uit een gegeven verzameling. Bijvoorbeeld:: a = random.choice([10, 20, 30, 40]) print(a) Uitvoer:: 30 Maar dit werkt ook voor strings:: a = random.choice("abcdefghij") print(a) Uitvoer:: j Maak een programma dat de gebruiker vraagt om een bestandsnaam, dit bestand opent, en er vervolgens een paswoord in schrijft bestaande uit 8 willekeurige letters. Opgave 25 --------- Pas je programma uit opgave 23 aan, zodanig dat de kleur van je cirkels willekeurig gekozen wordt, gebruik makend van de functie :func:`choice()` uit de module :mod:`random`. Tip:: kleur = random.choice(["red", "green", "blue", "purple", "black"]) print(kleur) Uitvoer:: green