Aller au contenu

Devoir sur les bases de Python A

L'usage de la calculatrice n'est pas autorisé

Durée: 55 min

Exercice 1 : Cochez la ou les réponses correctes

  1. Qu'affiche le code suivant ?

    x = 6
    y = 2
    print(x ** y)
    print(x // y)
    
    \(\square\) \(\square\) \(\square\) \(\square\)
    66 36 66 36
    0 0 3 3
  2. Qu'affiche le code suivant ?

    var1 = 1
    var2 = 2
    var3 = "3"
    print(var1 + var2 + var3)
    
    \(\square\) \(\square\) \(\square\) \(\square\)
    6 33 123 Error
  3. Qu'affiche le code suivant ?

    valueOne = 5 ** 2
    valueTwo = 5 ** 3
    
    print(valueOne)
    print(valueTwo)
    
    \(\square\) \(\square\) \(\square\)
    10 25 Error: invalid syntax
    15 125
  4. Quelle est la valeur de x après l'exécution du code :

    x = 0
    while (x < 100):
        x+=2
    print(x)
    
    \(\square\) \(\square\) \(\square\) \(\square\)
    101 99 100 Boucle infinie
  5. Qu'affiche le code suivant ?

    numbers = [10, 20]
    items = ['Chair', 'Table']
    
    for x in numbers:
        for y in items:
            print(x, y)
    
    \(\square\) \(\square\)
    10 'Chair' 10 'Chair'
    10 'Table' 10 'Table'
    20 'Chair'
    20 'Table'
  6. Qu'affiche le code suivant ?

    for num in range(-2,-5,-1):
        print(num)
    
    \(\square\) \(\square\) \(\square\) \(\square\)
    -2, -1, -3, -4 -2, -1, 0, 1, 2, 3 -2, -1, 0 -2, -3, -4
  7. Qu'affiche le code suivant ?

    x = 0
    a = 5
    b = 5
    if a > 0:
        if b < 0: 
            x = x + 5 
        elif a > 5:
            x = x + 4
        else:
            x = x + 3
    else:
        x = x + 2
    print(x)
    
    \(\square\) \(\square\) \(\square\) \(\square\)
    0 4 2 3
  8. Qu'affiche le code suivant ?

    res=''
    for car in 'Jhon':
        if car != 'o':
            res=res+car
    print(res)
    
    \(\square\) \(\square\) \(\square\)
    'Jhn' 'Jhon' 'J'
    'Jh'
    'Jhn'
  9. Qu'affiche le code suivant ?

    for num in range(10, 14):
        for i in range(2, num):
            if num%i == 1:
                print(num)
                break
    
    \(\square\) \(\square\) \(\square\)
    10 10 11
    11 13
    12
    13
  10. Qu'affiche le code suivant ?

    x = 75
    def myfunc():
        x = x + 1
        print(x)
    myfunc()
    print(x)
    
    \(\square\) \(\square\) \(\square\) \(\square\)
    Error 76 1 None

Exercice 2

Voici la réduction pour le prix d'un billet de train en fonction de l'âge du voyageur :

  • rĂ©duction de 50% pour les moins de 10 ans ;

  • rĂ©duction de 30% pour les 10 Ă  18 ans ;

  • rĂ©duction de 20% pour les 60 ans et plus.

Écrire une fonction reduction(age) en Python qui retourne le pourcentage (valeur entière) de réduction en fonction de la variable age.

Corrigé
def reduction(age):
    if age<10:
        return 50
    elif age<18:
        return 30
    elif age<60:
        return 0
    else:
        return 20

Exercice 3

Écrire une fonction sommeinverse(nombre) en Python qui retourne la somme des inverses de 1 jusqu'à nombre. La variable nombre est un nombre entier.

Exemples

sommeinverse(1) retourne 1

sommeinverse(2) retourne 1.5car \(1+\dfrac{1}{2}=1.5\)

sommeinverse(3) retourne 1.833333333333333car \(1+\dfrac{1}{2}+\dfrac{1}{3} \approx 1.833333333333333\)

Corrigé
def sommeinverse(nombre):
    S=0
    for i in range(1,nombre+1):
        S=S+1/i
    return S

Exercice 4

On dispose de la liste suivante:

scrabble = ['A',1,'B',3,'C',3,'D',2,'E',1,'F',4,'G',2,'H',4,
            'I',1,'J',8,'K',10,'L',1,'M',2,'N',1, 'O',1,
            'P',3,'Q',8,'R',1,'S',1,'T',1,'U',1,'V',4,'W',10,
            'X',10,'Y',10,'Z',10]

Chaque lettre de l'alphabet est suivie du nombre de points qui lui est attribué au scrabble.

Écrire une fonction `points' en Python spécifiée comme suit:

def points(mot):
    """retourne le nombre de points obtenus au scrabble pour la variable 'mot'"""

Aide

On pourra commencer par Ă©crire une fonction qui retourne le nombre de points d'une lettre.

Corrigé
def points(lettre):
    for i in range(len(scrabble)):
        if scrabble[i]==lettre:
            return scrabble[i+1]
def pointsmot(mot):
    P=0
    for lettre in mot:
        P=P+points(lettre)
    return P

Exercice 5 (from codex)

Écrire une fonction nb_max_consecutifs(motif,phrase) qui prend en arguments un caractère motif (une chaine de caractères de longueur 1), et une chaine de caractères phrase à analyser. La fonction retourne le nombre maximal d'occurrences consécutives de motif dans phrase.

Exemple

>>> phrase = "Dans une phrase !!! Ă©crite !!! certains utilisateurs abusent des points d'exclamations !!"
>>> nb_max_consecutifs("!", phrase)
3
Corrigé
def nb_max_consecutifs(motif, phrase):
    compteur = 0
    maxi = 0 
    for lettre in phrase :
        if lettre==motif :
            compteur = compteur + 1
        else :
            if compteur > maxi :
                maxi = compteur
            compteur = 0
    return maxi