Python

Si... Alors...
Exercices pour débuter

Conseils

Même si ce site permet de tester de petits programmes en Python, il est fortement conseillé de sauvegarder ces programmes à l'aide d'un environnement de programmation en Python (Pyzo, Geany, etc...). Pour cela, il faut donner à chaque programme un nom explicite puis les «organiser» dans les répertoires adéquats.

On pourra commencer par créer un dossier [Si_Alors]. Ce dossier contiendra tous les programmes (scripts) rédigés à partir de cette page.

Ensuite, il faut prendre l'habitude d'insérer des commentaires (pertinents) dans son programme. En Python, ces commentaires sont précédés d'un dièse «#». Ils ne sont pas interprétés lors de l'exécution des instructions.

Remarque importante

Les programmes en Python rédigés avec ce site ne doivent pas comporter d'accents ! A cause d'un seul caractère accentué, le programme est susceptible de ne pas être exécuté correctement.
Ce problème d'encodage des caractères sera étudié plus tard au cours de l'année.

L'utilisateur entre deux valeurs affectées aux variables a et b. Dans l'exemple d'affichage ci-dessous, l'utilisateur a entré 12 pour la valeur de a et 9 pour la valeur de b.

Entrez un nombre : 12
Entrez un autre nombre : 9
12 est plus grand que 9

Écrire un programme qui compare ces deux valeurs fournies par l'utilisateur puis qui indique laquelle est plus grande que l'autre.


					
					
  • Une piste ?
  • Une autre piste ?
  • Encore une piste ?
  • Une solution ?

Les symboles de comparaison pour les tests entre nombres en Python sont :

  • x == y : (x est-il égal à y ?) ;
  • x != y : (x est-il différent de y ?) ;
  • x > y : (x est-il supérieur à y ?) ;
  • x < y : (x est-il inférieur à y ?) ;
  • x >= y : (x est-il supérieur ou égal à y ?) ;
  • x <= y : (x est-il inférieur ou égal à y ?).
Plutôt un conseil : attention à input() qui renvoie une valeur de type str...
Deux nombres sont stockés dans deux variables. Si le 1er nombre est supérieur au 2nd alors...

a = int(input('Entrer un nombre : '))
b = int(input('Entrer un autre nombre : '))
if a > b :
    print('{0} est plus grand que {1}'.format(a, b))
elif a < b :
    print('{0} est plus grand que {1}'.format(b, a))
else:
    print('{0} et {1} sont egaux.'.format(a, b))
						

En reprenant astucieusement l'exercice précédent, écrire un programme qui classe dans l'ordre croissant la valeur de trois nombres fournis par l'utilisateur.

Ci-dessous, l'utilisateur a entré les valeurs 12, 9 et 17 dans cet ordre.

Entrez un nombre : 12
Entrez un deuxieme nombre : 9
Entrez un troisieme nombre : 17
On a 9 < 12 < 17
  • Une piste ?
  • Une autre piste ?
  • Une solution ?
  • Une variante bien trop longue !
Utiliser les affectations parallèles pour échanger les valeurs des variables.
On appelle a, b et c les trois saisis par l'utilisateur. A la fin, a devra stocker la plus petite des trois valeurs et c contiendra la plus grande.

a = int(input("Entrez un nombre : "))
b = int(input("Entrez un deuxieme nombre : "))
c = int(input("Entrez un troisieme nombre : "))
if a > b :
    a, b = b, a                 # a est forcément plus petit que b
if b > c :
    b, c = c, b                 # c est forcément plus grand que b
if a > b :
    a, b = b, a                 # a est forcément plus petit que (le nouveau) b
print('On a {0} < {1} < {2}'.format(a, b, c))
						

Une autre solution, mais largement moins efficace et agréable à écrire :


a = int(input("Entrez un nombre : "))
b = int(input("Entrez un deuxieme nombre : "))
c = int(input("Entrez un troisieme nombre : "))
if a < b :
    if b < c :
		print('On a {0} < {1} < {2}'.format(a, b, c))
    elif a < c:
		print('On a {0} < {1} < {2}'.format(a, c, b))
    else:
		print('On a {0} < {1} < {2}'.format(c, a, b))
else:
    if a < c :
		print('On a {0} < {1} < {2}'.format(b, a, c))
    elif b < c:
		print('On a {0} < {1} < {2}'.format(b, c, a))
    else:
		print('On a {0} < {1} < {2}'.format(c, b, a))
						

Écrire un programme Python qui demande une note (un nombre entre 0 et 20) à l'utilisateur en entrée. Si la note n'est pas entre 0 et 20, le progamme affiche un message d'erreur. Sinon, il affiche une classification basée sur cette note.

Voici les classifications :

  • Si la note est supérieure ou égale à 16, afficher "Très bien".
  • Sinon, si la note est supérieure ou égale à 14, afficher "Bien".
  • Sinon, si la note est supérieure ou égale à 12, afficher "Assez bien".
  • Sinon, si la note est supérieure ou égale à 10, afficher "Passable".
  • Sinon, afficher "Insuffisant".

  • Une piste ?
  • Une autre piste ?
  • Une solution ?
Commencer par demander à l’utilisateur d’entrer une note. On peut utiliser la fonction input() pour cela. Ne pas oublier de convertir la note en un nombre entier ou réel.
Il faut utiliser une série de déclarations if et elif pour vérifier la note et afficher la classification appropriée. On peut commencer par vérifier si la note est supérieure ou égale à 16, puis passer aux autres conditions.

# Demande à l'utilisateur d'entrer une note
note = float(input("Entrez une note : "))

# Vérifie si la note est supérieure ou égale à 16
if note >= 16:
	print("Très bien")
# Si la note n'est pas supérieure ou égale à 16, vérifie si elle est supérieure ou égale à 14
elif note >= 14:
	print("Bien")
# Si la note n'est pas supérieure ou égale à 14, vérifie si elle est supérieure ou égale à 12
elif note >= 12:
	print("Assez bien")
# Si la note n'est pas supérieure ou égale à 12, vérifie si elle est supérieure ou égale à 10
elif note >= 10:
	print("Passable")
# Si la note est inférieure à 10, affiche "Insuffisant"
else:
	print("Insuffisant")
						

On rappelle que les années bissextiles sont les années divisibles par 4, à l'exception de celles qui sont divisibles par 100 sans l'être par 400. Par exemple :

  • 2000 est une année bissextile (2000 est divisible par 4. 2000 est divisible par 100 mais aussi par 400 : il ne fait donc pas partie des exceptions).
  • 2012 est divisible par 4 mais pas par 100 : 2012 est bissextile.
  • 1900 est divisible par 4, par 100 mais pas par 400 : 1900 n'est pas bissextile.

Écrire un programme qui demande à l'utilisateur un entier naturel non nul puis qui affiche «annee bissextile» ou «non bissextile» suivant les cas.

  • Une piste ?
  • Une autre piste ?
  • Une solution ?
  • Explication bissextile
Un entier n est divisible par un entier d si le reste de la division de n par d est nul. En langage Python, cela signifie que n%d doit être égal à 0...

Il faut apprendre à tracer ce type de schéma avant de se lancer dans l'écriture d'un programme !


n = int(input("Entrez un entier positif : "))
if n%4 != 0 :                                       # Pas divisible par 4
    print("L'annee {} n'est pas bissextile".format(n))
elif (n%100 == 0) and (n%400 != 0):                 # divisible par 100 et pas par 400
    print("L'annee {} n'est pas bissextile".format(n))
else :
    print("L'annee {} est bissextile".format(n))
						

La Terre faisant le tour du Soleil en un peu plus que 365 jours, on s'est dit qu'on allait rajouter un jour tous les 4 ans, mais c'était trop, alors on a enlevé un jour tous les 100 ans, mais c'était plus assez, alors on a rajouté un jour tous les 400 ans, ce qui donne une approximation convenable.

Jeu du FizzBuzz

Pour ce jeu, il s'agit de compter à partir de 1 en remplaçant certains nombres par Fizz, Buzz ou Fizzbuzz :

  • si le nombre est divisible par 3, on ne le dit pas et on le remplace par Fizz.
  • si le nombre est divisible par 5, on ne le dit pas et on le remplace par Buzz.
  • si le nombre est divisible par 3 et par 5, on ne le dit pas et on le remplace par FizzBuzz.

Écrire un code qui joue au FizzBuzz jusqu'à 50.

Exemple d'utilisation du programme :

1
2
fizz
4
buzz
fizz
7
8
...
  • Une piste ?
  • Une autre piste ?
  • Une solution ?
Pour savoir si un nombre est divisible par un autre nombre, rappelez-vous la division euclidienne...

Le module ou le signe Python % sera possiblement fort utile... mais ce n'est pas tout !

Si on veut valider 2 conditions, on peut utiliser l'opérateur logique AND. Le test sera vrai si et seulement si les 2 conditions sont vraies.

Nous développerons ces différents opérateurs prochainement...


for k in range(1, 51):
    if k % 3 == 0 and k % 5 == 0: #
        print('fizzbuzz')
    elif k % 3 == 0:
        print('fizz')
    elif k % 5 == 0:
        print('buzz')
    else:
        print(k)