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)