Exercice 1, une chanson.

L'objectif de ce programme est de demander un nombre à l'utilisateur de d'afficher les lignes suivantes :

  • ...
  • Et dans 8 ans, je m'en irai, j'entends le loup et le renard chanter.
  • Et dans 7 ans, je m'en irai, j'entends le loup et le renard chanter.
  • Et dans 6 ans, je m'en irai, j'entends le loup et le renard chanter.
  • ...
  • Et dans 2 ans, je m'en irai, j'entends le loup et le renard chanter.
  • Et dans 1 an, je m'en irai, j'entends le loup et le renard chanter.
Comme dans l'image ci-dessous.

Vous ferez bien attention à la dernière ligne pour laquelle le mot an est au sigulier contrairement au autres lignes.

Pour avoir des apostrophes dans l'affichage d'un texte sous python, il suffit de mettre ce dernier entre triple guillemet comme dans l'exemple suivant.


print("""je m'en irai, j'entends le loup et le renard chanter.""")

def chanson(n) :
	for i in range(n-1) :
		print("Et dans",n-i,"""ans ,je m'en irai, j'entends le loup et le renard chanter.""")
	print("""Et dans 1 an ,je m'en irai, j'entends le loup et le renard chanter.""")

Exercice 2, Triangle rectangle.

L'objectif de cet exercice est de déssiner un triangle rectangle comme dans l'image ci-dessous et dont le nombre de ligne est demandé à l'utilisateur.

Pour cela, on peut utiliser la concaténation des chaînes de caractère comme vu dans le chapitre sur les variables. Vous trouverez ci-dessous l'exemple utilisé pour comprendre la concaténation.


texte1 = "Papa "
texte2 = "maman "
texte = texte1 + texte2
print(texte)
texte = texte1 * 3
print(texte)
texte = 2 * texte1 + 5 * texte2
print(texte)

def triangleRectangle(n) :
	for i in range(n) : #la boucle sera répétée n fois
		print('*' * int(i+1))	#On écrit i+1 étoiles

Exercice 3, Autre triangle rectangle.

L'objectif de cet exercice est de déssiner un triangle rectangle comme dans l'image ci-dessous et dont le nombre de ligne est demandé à l'utilisateur.


def triangleRectangle(n) :
	for i in range(n) : #la boucle sera répétée n fois
		print(' ' * int(n-i) + '*'*int(i+1))	#On écrit n-i espace suivi de i+1 étoiles

Exercice 4, triangle isocèle.

L'objectif de cet exercice est de déssiner un triangle dont le nombre de ligne est demandé à l'utilisateur.


def triangle(n) :
	for i in range(n) : #la boucle sera répétée n fois
		print(' ' * int(n-i) + '*'*int(2*i+1))	#On écrit n-i espace suivi de 2i+1 étoiles

Exercice 5, Sapin de noêl.

L'objectif de cet exercice est de déssiner un sapin de nöel dont la hauteur est demandé à l'utilisateur comme dans l'image ci-dessous. Vous ferez bien attention d'avoir la boule de noël en haut du sapin.


def sapin(n,p) :
	print(' ' * int(n) + 'O')	#C'est la boule de noël
	for i in range(1,n) : #la boucle sera répétée n-1 fois
		print(' ' * int(n-i) + '*'*int(2*i+1))	#On écrit n-i espace suivi de 2i+1 étoiles
	for i in range(p) : #la boucle sera répétée p fois
		print(' ' * int(n-1) + '*'*3)

Exercice 6, suites

On considère la suite "u" définie sur l'ensemble des entiers naturels par non nul :

  • u(1) = -7
  • u(n+1) = u(n) + n

Écrire une fonction à l'aide d'une boucle 'for' permettant de calculer la valeur du terme de la suite demandée par l'utilisateur. Vous pourrez vérifier votre programme à l'aide des résultats suivants :

  • u(27) = 344
  • u(123) = 7496
  • u(999) = 498494

Pour tout entier naturel "n" non nul, u(n+1) = u(n) + n


def u(n) :
	u = -7
	for i in range(1,n) : #Les instructions seront répétées pour i égale à 1, puis 2, 3, ... , n-1 car n est exclus
		u = u + i
		# On peut rajouter la ligne suivante pour vérifier que les calculs sont correct : print(' u(',i+1,') =',u)
	return u

Exercice 7, Probabilités, shéma de Bernouilli. Simulation

Créez une fonction qui simule n répétitions d'une expérience aléatoire ou p est la probabilité d'un succès, et qui détermine la fréquence de succès obtenus. Par exemple, on pourra simuler 100 lancers d'un dé à 6 faces et déterminer la fréquence de 6 obtenus lors de cette simulation en entrant 1000 pour n et 0.166667 pour p.

La fréquence de 6 obtenu est le nombre de 6 diviser par le nombre de lancer

pour cet exercice, vous aurez besoin de générer des nombres aléatoires. L'exemple ci-dessous permet de créer un nombre entier aléatoire entre 0 et 1, 1 étant exclu, puis d'afficher la valeur de cette variable.


import random 	#Importation de la bibliothèque random qui permet de créer des nombres aléatoires
x = random.random()	#Affectation à x d'un nombre réel aléatoire entre 0 et 1 exclu.
print("le nombre aléatoire x est : x =",x)	#Affichage de x

import random
def bernouilli(n,p) :
	compteur = 0
	for i in range(n) :	#La boucle sera executer n fois
		x = random.random()	#Génération d'un nombre aléatoire entre 0 et 1 pour simuler une expérience aléatoire
		if x <= p :
			compteur = compteur + 1  #On a obtenu un succès supplémentaire
	return "La fréquence de succès pour cette simulation est "+ str(compteur/n) + "."

Exercice 8, Simulation, Statistiques

On souhaite simuler 10000 fois la répétition de 1000 lancers d'une pièce et déterminer le pourcentage des simulations dont la fréquence de pile est comprise entre 0.5-1/√ 100 = 0.4 et 0.5+1/√ 100 = 0.6.

Créez une fonction qui simule k fois la répétitions de n expériences aléatoires ou p est la probabilité d'un succès d'une des expériences, et qui détermine le pourcentage des simulations dont la fréquence des succès est comprise entre p-1/ √ n et p+1/ √ n


import random
import math
def simulation(k,n,p) :
	# k est le nombre de simulations
	# n est le nombre d'essais par simulation
	# p est la probabilité d'un succès lors d'un essai
	nbSimulationsBonnes = 0
	for m in range(k) :
		compteur = 0
		for i in range(n) :	#La boucle sera executer n fois
			x = random.random()	#Génération d'un nombre aléatoire entre 0 et 1 pour simuler une expérience aléatoire
			if x <= p :
				compteur = compteur + 1  #On a obtenu un succès supplémentaire
		if p-1/math.sqrt(n) < compteur/n and compteur/n < p+1/math.sqrt(n) :
			nbSimulationsBonnes = nbSimulationsBonnes + 1
	return "Le pourcentage des simulations comprisent dans l'intervalle de fluctuation est " + str(nbSimulationsBonnes*100/k) + "%."

Exercice 9, Suite de fibonacci

La suite de Fibonacci est une suite commençant par les deux nombres 0 et 1 et dont chaque terme est la somme des deux termes qui le précèdent.

Créer une fonction qui calcule le n ième terme en fonction de n de cette suite de nombre.

Dans cette correction, on va utiliser une liste qui contiendra les deux derniers termes calculés de la suite. Le cours sur les variables donne les méthodes que l'on peut utiliser avec les listes.


def Fibonacci(n):
	liste = [0,1]
	if n>1:
		for i in range(n-1):
			liste.append(liste[0] + liste[1]) 	#liste.append rajoute un élément en fin de liste 
			del liste[0]				# supprime le premier élément de la liste
	if n==0:
		resultat = liste[0]
	else:
		resultat = liste[1]

	return resultat

Exercice 10, Tri par sélection

On souhaite trier un tableau de valeur en utilisant un tri par sélection. Le principe est le suivant :

  • rechercher le plus petit élément du tableau, et l'échanger avec l'élément d'indice 0 ;
  • rechercher le second plus petit élément du tableau, et l'échanger avec l'élément d'indice 1 ;
  • rechercher le troisième plus petit élément du tableau, et l'échanger avec l'élément d'indice 2 ;
  • ...
  • continuer de cette façon jusqu'à ce que le tableau soit entièrement trié.

Cette méthode de tri n'est pas très rapide. Nous en verrons des plus efficaces dans d'autres exercices.


def triParSelection(liste) :
	for i in range(len(liste)) :
		plusPetitElement = liste[i]
		indicePlusPetitElement = i
		for j in range(i+1,len(liste)) :
			if liste[j] < plusPetitElement :
				plusPetitElement = liste[j]
				indicePlusPetitElement = j
		del liste[indicePlusPetitElement]
		liste.insert(i,plusPetitElement)
	return liste

Exercice 11, Tri à bulles

On souhaite trier un tableau de valeur en utilisant un tri à bulles. Le principe est le suivant :

Il consiste à comparer répétitivement les éléments consécutifs d'un tableau, et à les permuter lorsqu'ils sont mal triés. Il doit son nom au fait qu'il déplace rapidement les plus grands éléments en fin de tableau, comme des bulles d'air qui remonteraient rapidement à la surface d'un liquide.

  • tri_à_bulles(Tableau T)
  • ...pour i allant de (taille de T)-1 à 1
  • ......pour j allant de 0 à i-1
  • .........si T[j+1] < T[j]
  • ............échanger(T[j+1], T[j])

Cette méthode de tri n'est pas très rapide. Nous en verrons des plus efficaces dans d'autres exercices.


def triABulles(liste) :