Exercice 1
On donne le script suivant ci-dessous.
Quelle est la valeur finale de x ?
x = 1
n = 5
while n > 1:
x = x * n
k = n - 1
La valeur de n ne change pas.
Elle reste à 5.
La boucle ne s'arrète pas. Elle est infinie.
On ne peut pas avoir de valeur de x.
Exercice 1 bis
On donne le script suivant ci-dessous.
Quelle est la valeur finale de x ?
x = 1
n = 5
while n > 1:
x = x * n
n = n - 1
print(x)
Au debut:
Exercice 2
On donne le script suivant ci-dessous.
Quelle est la valeur finale de x ?
x = 0
for i in range(2):
x = x + i
for j in range(3):
x = x + j
print(x)
Au debut:
Exercice 3
# Une solution possible
def somme(nombre1, nombre2, nombre3):
"""
La fonction calcule la somme de trois nombres données en paramètre
@param nombre1: (float) nombre réel
@param nombre2: (float) nombre réel
@param nombre3: (float) nombre réel
@return: (float) la fonction renvoie la somme des nombres nombre1, nombre2 et nombre3
"""
return nombre1 + nombre2 + nombre3
# Jeu d'essai
print("Pass test1 --> ",somme(1, 5, 7) == 13)
print("Pass test2 --> ",int(somme(1.2, -6, 5)*10) == 2)
Exercice 4
def plus_grand(a, b):
"""
Détermine le plus grand de deux nombres
@param a: (float) nombre réel
@param b: (float) nombre réel
@return: (float) la fonction renvoie le plus grand des deux nombres a et b
"""
if a > b:
return a
else:
return b
plus_grand(-12, 21)
Exercice 5
# Version 1
def plus_grand_bis_1(a, b, c):
"""
Détermine le plus grand de trois nombres
@param a: (float) nombre réel
@param b: (float) nombre réel
@param c: (float) nombre réel
@return: (float) la fonction renvoie le plus grand des trois nombres a, b et c
"""
if a > b:
if a > c:
return a
else:
return c
else:
if b > c:
return b
else:
return c
# Version 2
def plus_grand_bis_2(a, b, c):
"""
Détermine le plus grand de trois nombres
@param a: (float) nombre réel
@param b: (float) nombre réel
@param c: (float) nombre réel
@return: (float) la fonction renvoie le plus grand des trois nombres a, b et c
"""
if a > b and a > c:
return a
elif b >= a and b > c:
return b
else:
return c
plus_grand_bis_1(-12, 21, 3)
plus_grand_bis_2(-12, 21, 3)
Exercice 6
def carre(k):
"""
Calcul la somme des k premiers carrés non nul
@param k: (int) nombre entier strictement positif
@return: (int) la somme des carrés
"""
assert k > 0 and isinstance(k, int),"Vous devez entrer un entier strictement positif"
somme = 0
for i in range(1, k+1): # On commence à 1, premiers carrés non nul
somme = somme + i**2
return somme
a = 3.5
type(a) # permet d'avoir le type d'une variable
type(a)== float
carre(-2)
carre(3.5)
carre(12)
Exercice 7 Diviseurs
QUESTION 1
def somme_diviseurs(n):
"""
Calcul la somme des diviseurs d'un entier naturel
@param n: (int) nombre entier strictement positif
@return: (int) la somme des diviseurs de cet entier
"""
assert n > 0 and isinstance(n, int),"Vous devez entrer un entier strictement positif"
somme = 0
for i in range(1, n+1): # On commence à 1, premiers carrés non nul
if n % i == 0:
somme = somme + i
return somme
somme_diviseurs(6)
QUESTION 2
def parfait(n):
"""
Détermine si un entier naturel est parfait
@param n: (int) nombre entier strictement positif
@return: (bool) retourne True si le nombre est parfait, sinon False
"""
assert n > 0 and isinstance(n, int),"Vous devez entrer un entier naturel non nul"
if somme_diviseurs(n) == 2 * n:
return True
else:
return False
# Une autre version
def parfait_bis(n):
"""
Détermine si un entier naturel est parfait
@param n: (int) nombre entier strictement positif
@return: (bool) retourne True si le nombre est parfait, sinon False
"""
assert n > 0 and isinstance(n, int),"Vous devez entrer un entier naturel non nul"
return somme_diviseurs(n) == 2 * n
parfait(6)
parfait_bis(6)
QUESTION 3
# Nombres parfaits inférieurs à 100
for i in range(1, 100):
if parfait(i):
print(i)
# Nombres parfaits compris entre 100 et 1000
for i in range(100, 1000):
if parfait(i):
print(i)
# Déterminer les nombres parfaits
compt = 4
i = 1
while compt > 0:
if parfait(i):
print(i)
compt = compt-1
i= i + 1
Exercice 8
from random import randint
def jeu(n):
"""
Calcul le pourcentage de 6 obtenue sur n tirages aléatoires
@param n: (int) nombre entier strictement positif
@return: (float) le pourcentage de 6 obtenu
"""
assert n > 0 and isinstance(n, int),"Vous devez entrer un entier strictement positif"
nombre_6 = 0
for i in range(n):
if randint(1, 6) == 6:
nombre_6 = nombre_6 + 1
return 100 * nombre_6 / n
print(jeu(1000))
Exercice 9
Ecrire une fonction double qui prend en argument un mot (type str) et renvoie le mot obtenu en doublant chaque lettre.
Par exemple double("bon")
a pour valeur "bboonn"
def double(mot):
chaine = ""
for lettre in mot:
chaine = chaine + 2*lettre
return chaine
double('bon')
Exercice 10
True
si le mot commence et se termine par la même lettre et False
sinon.True
si les deux mots commencent par la même lettre et se terminent par la même lettre et False
sinon.# Question 1
def identique(mot):
if mot[0] == mot[-1]:
return True
else:
return False
identique('laval')
identique('Maison')
# Question 2
def double_identique(mot1, mot2):
if (mot1[0] == mot2[0]) and (mot1[-1] == mot2[-1]):
return True
else:
return False
double_identique("portez", "profitez")
Exercice 11
QUESTION 1
# version 1
def occurence(c, mot):
for lettre in mot:
if lettre == c:
return True
return False
occurence("a", "cheval")
# version 2
def occurence2(c, mot):
for i in range(len(mot)):
if mot[i] == c:
return True
return False
occurence2("f", "cheval")
# Version 3
def occurence3(c, mot):
if c in mot:
return True
return False
occurence3("v", "cheval")
# Version 4
def occurence4(c, mot):
return c in mot
occurence4("h", "cheval")
QUESTION 2
# Version 1
def occurence(c, mot):
for i in range(len(mot)):
if mot[i] == c:
return i
return -1
occurence("u", "cheval")
# version 2
def occurence2(c, mot):
for lettre in mot:
if lettre == c:
return mot.index(lettre)
return -1
occurence2("e", "cheval")
# version 3
def occurence3(c, mot):
if c in mot:
return mot.index(c)
return -1
occurence3("v", "cheval")
# version 4
def occurence4(c, mot):
for i,lettre in enumerate(mot):
if lettre == c:
return i
return -1
occurence("c", "cheval")
Exercice 12
# version 1
def reverso(mot):
"""
Inverse l'ordre d'une chaîne de caractères
paramètre:
mot : (str) chaîne de caractères
retour:
chaîne de caractères
"""
resultat = ""
for lettre in mot :
resultat = lettre + resultat
return resultat
# Jeu d'essai
print("Pass test1 --> ",reverso("")=="")
print("Pass test2 --> ",reverso("a")=="a")
print("Pass test3 --> ",reverso("bonjour")=="ruojnob")
print("Pass test4 --> ",reverso("aa")=="aa")
print("Pass test5 --> ",reverso("laval")=="laval")
# version 2
def reverso2(mot):
return mot[::-1]
# Jeu d'essai
print("Pass test1 --> ",reverso2("")=="")
print("Pass test2 --> ",reverso2("a")=="a")
print("Pass test3 --> ",reverso2("bonjour")=="ruojnob")
print("Pass test4 --> ",reverso2("aa")=="aa")
print("Pass test5 --> ",reverso2("laval")=="laval")
Exercice 13
palindrome
# Une solution possible
def palindrome(mot):
test = False
if reverso(mot) == mot and mot !="":
test = True
return test
# Jeu d'essai
print("Pass test1 --> ",palindrome("") == False)
print("Pass test2 --> ",palindrome("a") == True)
print("Pass test3 --> ",palindrome("bonjour") == False)
print("Pass test4 --> ",palindrome("aa") == True)
print("Pass test5 --> ",palindrome("laval") == True)
palindrome("bonjour")