Devoir sur les bases de Python B
L'usage de la calculatrice n'est pas autorisé
Durée: 55 min
Exercice 1 : Cochez la ou les réponses correctes
-
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 -
Qu'affiche le code suivant ?
var1,var2,var3 = 1,2,"3" print(var1 + var2 + var3)
\(\square\) \(\square\) \(\square\) \(\square\) 6 33 123 Error -
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 -
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 -
Si j'exécute le code suivant, combien de fois est affiché "Learn_Computer_Science" ?
var1,var2=1,10 while var1<var2: print("Learn_Computer_Science") var1=var1+2
\(\square\) \(\square\) \(\square\) \(\square\) 3 4 5 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 -
Qu'affiche le code suivant ?
x,a,b = 0,5,5 if a > 0: if b > 0: x = x + 5 elif (b+a)>3: x = x + 3 print(x)
\(\square\) \(\square\) \(\square\) \(\square\) 0 2 3 5 -
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','Jh','Jhn' -
Qu'affiche le code suivant ?
for num in range(10, 14): for i in range(2, num): if i%num == 1: print(num) break
\(\square\) \(\square\) \(\square\) Rien 10 11 11 13 -
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
En tant qu'expert informatique, vous êtes amené à vérifier la sécurité des mots de passe d'une société.
Pour cela, vous devez écrire une fonction verification(motDePasse)
qui vérifie que le mot de passe motDePasse
donné est correct, et retourne True
ou False
en conséquence.
Pour être correct, un mot de passe doit :
-
Contenir le caractère
@
-
Contenir entre 8 et 20 caractères
Pour connaître la longueur d'une chaîne de caractères, on utilisera la fonction len
.
Corrigé
def verification(motDePasse):
return 8<=len(motDePasse)<=20 and '@' in motDePasse
Exercice 3
La somme des carrés des entiers impairs de 1 à 10 est \(1^2+3^2+5^2+7^2+9^2=165\).
Écrire une fonction sommecarr(n)
qui affiche la somme des carrés des entiers impairs de 1 à n
.
Corrigé
def sommecarr(n):
S=0
for n in range(1,n+1,2):
S=S+n**2
print(S)
Exercice 4
Écrire une fonction commencePar(debut, chaine)
qui retourne True
si chaine
commence par debut
, et False
sinon.
>>> commencePar("bon", "bonjour")
True
>>> commencePar("na", "banane")
False
Corrigé
def commencePar(debut, chaine)
for i in range(len(debut)):
if debut[i]!=chaine[i]:
return False
return True
Exercice 5 (from codex)
On considère un entier naturel \(n\) et on calcule la somme \(s\) des carrés des chiffres de \(n\).
Par exemple si \(n=32\) alors \(s=3^2+2^2=13\).
On recommence avec \(s=13\) et on obtient \(s=10\). On recommence avec \(s=10\) et on obtient \(1\). Si on recommence on obtient toujours \(1\).
On peut démontrer (c'est un peu difficile, - et ça n'est pas attendu ici -) qu'en appliquant ce processus, trois situations peuvent se produire :
-
soit on reste à \(0\) (si \(n=0\));
-
soit on arrive à \(1\) et on y reste;
-
soit on arrive à \(4\) et on va reproduire la boucle \(4,16,37,58,89,145,42,20,4\).
En appliquant le processus décrit ci-dessus à un nombre \(n\), si on arrive à \(1\), on dit que le nombre \(n\) est heureux.
Écrire la fonction heureux(n)
qui prend en paramètre un entier \(n\) positif et renvoie True
si le nombre est heureux et False
sinon.
Indice
On pourra utiliser les fonctions str
et int
pour obtenir les chiffres à partir de l'écriture d'un nombre. Par exemple int(str(387)[1])
est le nombre 8. Une autre possibilité est d'utiliser les opérateurs %
et //
.
Exemples
>>> heureux(32)
True
>>> heureux(58)
False
>>> heureux(0)
False
Corrigé
# On commence par écrire une fonction qui permet de déterminer la somme des chiffres d'un nombre n
def next(n):
S=0
for elt in str(n):
S=S+(int(elt))**2
return S
# On écrit ensuite une fonction qui détecte si un des nombres successif vaut 0, 1 ou est dans la liste [4,16,37,58,89,145,42,20]
def heureux(n):
L=[4,16,37,58,89,145,42,20]
while n>1 and n not in L:
n=next(n)
return n==1