# Evaluation - Bases de Python

#### QCM (5pts)

1. (1pt) Qu'affiche le code suivant ? 
    ```python
    mon_age = 16
    if mon_age >= 18:
        print("Je suis majeur")
    else:
        print("Je suis mineur")
    ```
    - [ ] Rien
    - [ ] Je suis mineur
    - [ ] Je suis majeur
    - [ ] 16

2. (1pt) Si j'écris `ma_variable = []`, `ma_variable` est :
   - [ ] Un dictionnaire vide
   - [ ] Un tuple vide
   - [ ] Une liste vide
   - [ ] Une fonction

3. (1pt) Si j'écris la fonction suivante, quel nom serait le plus pertinent (à la place de `ma_fonction`) ?
    ```python
    def ma_fonction(valeur):
        for i in range(11):
            print(f"{i} x {valeur} = {i*valeur}")
    ```
    - [ ] `mult`
    - [ ] `afficher_table_de_multiplication`
    - [ ] `aff_tbl_mult`
    - [ ] `table`
    - [ ] `multiplication`

4. (1pt) Quelle est la valeur de `prix_ttc` à la fin du programme suivant ?
    ```python
    tva = 20 / 100
    prix_ht = 100
    prix_ttc = prix_ht * (1 + tva)
    ```
    - [ ] 100
    - [ ] 2100
    - [ ] 120
    - [ ] 47

5. (1pt) Que retourne le code suivant ?
    ```python
    ma_liste = []
    for lettre in 'abcdefghijklmnopqrstuvwxyz':
        ma_liste.append(lettre)
        return ma_liste
   ```
   - [ ] Une liste contenant uniquement la lettre a
   - [ ] Une liste contenant toutes les lettres de l'alphabet
   - [ ] Une liste vide
   - [ ] Une chaîne de caractères contenant toutes les lettres de l'alphabet
   - [ ] Une chaîne de caractères contenant uniquement la lettre a

6. (1pt) Quel opérateur utiliser pour dire "différent de"
   - `not` 
   - `==`
   - `<>`
   - `!=`

#### Questions (8pts)

1. (2 pts) Quel est le type des valeurs suivantes ? (types possibles : int, float, bool, str)
   - 2
   - 2.4
   - "Bonjour !"
   - True
   - "17"

2. (1pt) Donner les deux types de boucles possibles en Python.

3. (1pt) Quel type de boucle préfère-t-on si on a un nombre d'itérations connu d'avance ?

4. (3pts) Lire le code ci-dessous et répondre aux questions :
   1. Qu'est-ce que `calculer_age` ? 
   2. Où se trouvent les paramètres ? la valeur de retour ?
   3. Que vaut `mon_age` ?
    ```python
    def calculer_age(annee_de_naissance):
        annee_en_cours = 2025
        age = annee_en_cours - annee_de_naissance
        return age

    mon_age = calculer_age(2000)
    ```

5. (1pt) Lorsqu'on ouvre un fichier dans un programme, que ne faut-il jamais oublier de faire une fois que l'on a terminé de l'utiliser ?

#### Exercices (7pts)

1. (3pts) Écrire un programme qui demande le prénom de l'utilisateur et le salue : si l'utilisateur s'appelle Jean, le programme devra afficher `Bonjour, Jean !` 

2. (4pts) Écrire une **fonction** `maximum` qui retourne le plus grand nombre d'une liste de nombres.
   - Par exemple, `maximum([3, 7, 12, 1 , 6])` devra retourner la valeur `12`
   - Attention, "retourner" ne signifie pas "afficher"
   - Toute trace de recherche sera valorisée