Aller au contenu

ds bases 24 25A

# **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