# -*- coding: ascii -*-
str
d'un script Python utilisent cet encodage par défaut.texte_en_utf8 = "Bonjour !"
texte_en_ascii = texte_en_utf8.encode("ascii")
print(texte_en_ascii)
b'Bonjour !'
Le préfixe b
signifie qu'il s'agit d'une chaîne binaire.
stdin
(index 0) : entrée texte standard.stdout
(index 1) : sortie texte standard.stderr
(index 2) : sortie d'erreur standard.stdin
stdin
est une redirection vers le périphérique clavier.stdin
signifie donc que l'on va lire ce que l'utilisateur écrit.input
pour lire dans stdin
:nom = input("Votre nom : ")
stdout
stdout
est une redirection vers la console.stdout
va afficher le contenu dans la console.print
pour écrire dans stdout
:nom = input("Votre nom : ")
print(nom)
stderr
stderr
, tout comme stdout
, est une redirection vers la console.stderr
va afficher le contenu dans la console.stderr
par défaut.sys.stderr.write
:import sys
sys.stderr.write("Oh mince ! dit Shipper")
age_en_texte = input("Votre age : ")
age = int(age_en_texte)
print("Vous avez", age, "ans")
"Vous avez 42 ans"
(si age == 42
)
ht = 69.5
tva = 1/5
taxe = round(ht * tva * 100) / 100
ttc = ht + taxe
label_ht = "Prix (HT) : "
label_ttc = "Prix (TTC) : "
print(label_ht, ht, "€\n", label_ttc, ttc, "€")
Prix (HT) : 69.5 €
Prix (TTC) : 83.4 €
ht = 69.5
tva = 1/5
taxe = round(ht * tva * 100) / 100
label_ht = "Prix (HT) :"
label_ttc = "Prix (TTC) :"
print(f"{label_ht:>12} {ht:.2f}€\n{label_ttc:>12} {ht + taxe:.2f}€")
Prix (HT) : 69.50€
Prix (TTC) : 83.40€
nombre = int(input("Entrez un nombre positif : "))
resultat = 0
if nombre == 1:
resultat = 1
elif nombre == 2:
resultat = 1 + 2
elif nombre == 3:
resultat = 1 + 2 + 3
elif nombre == 4:
resultat = 1 + 2 + 3 + 4
# etc.
print(resultat)
On souhaite en fait ici exprimer :
Le commentaire # etc.
dans la diapositive précédente ou l'ellipse ...
dans la formule ci-dessus expriment tous les 2 une répétition.
Une boucle "Tant Que" peut s'exprimer ainsi en pseudo-code :
Tant Que la valeur de l'expression Test est Vraie:
Exécute le Corps de la Boucle
En anglais : tant que
while
nombre = int(input("Entrez un nombre : "))
resultat = 0
i = 0
while i <= nombre:
resultat += i
i += 1
print(resultat)
45
si nombre == 9
Itération | i | resultat | nombre |
---|---|---|---|
0 | 0 | 0 | 9 |
1 | 1 | 1 | 9 |
2 | 2 | 3 | 9 |
3 | 3 | 6 | 9 |
4 | 4 | 10 | 9 |
5 | 5 | 15 | 9 |
6 | 6 | 21 | 9 |
7 | 7 | 28 | 9 |
8 | 8 | 36 | 9 |
9 | 9 | 45 | 9 |
nombre = 9
resultat = 0
i = 0
while i <= nombre:
resultat += i
i -= 1
from math import sin
pi = 3.14159265
epsilon = 1e-6
actuel = -2 * pi
fin = 2 * pi
increment = pi / 6
while actuel < fin:
sin_actuel = sin(actuel)
precedent = actuel
actuel += increment
if abs(sin_actuel) < epsilon: # si sin(actuel) est proche de 0
continue # évite les instructions suivantes
valeur = 1 / sin_actuel
print(f"x = {precedent:>9.6f} ;"
f" sin(x) = {sin_actuel:>9.6f} ;"
f" 1 / sin(x) = {valeur:>9.6f}")
x = -5.759587 ; sin(x) = 0.500000 ; 1 / sin(x) = 2.000000
x = -5.235988 ; sin(x) = 0.866025 ; 1 / sin(x) = 1.154701
x = -4.712389 ; sin(x) = 1.000000 ; 1 / sin(x) = 1.000000
x = -4.188790 ; sin(x) = 0.866025 ; 1 / sin(x) = 1.154701
x = -3.665191 ; sin(x) = 0.500000 ; 1 / sin(x) = 2.000000
x = -2.617994 ; sin(x) = -0.500000 ; 1 / sin(x) = -2.000000
x = -2.094395 ; sin(x) = -0.866025 ; 1 / sin(x) = -1.154701
x = -1.570796 ; sin(x) = -1.000000 ; 1 / sin(x) = -1.000000
x = -1.047198 ; sin(x) = -0.866025 ; 1 / sin(x) = -1.154701
x = -0.523599 ; sin(x) = -0.500000 ; 1 / sin(x) = -2.000000
x = 0.523599 ; sin(x) = 0.500000 ; 1 / sin(x) = 2.000000
x = 1.047198 ; sin(x) = 0.866025 ; 1 / sin(x) = 1.154701
x = 1.570796 ; sin(x) = 1.000000 ; 1 / sin(x) = 1.000000
x = 2.094395 ; sin(x) = 0.866025 ; 1 / sin(x) = 1.154701
x = 2.617994 ; sin(x) = 0.500000 ; 1 / sin(x) = 2.000000
x = 3.665191 ; sin(x) = -0.500000 ; 1 / sin(x) = -2.000000
x = 4.188790 ; sin(x) = -0.866025 ; 1 / sin(x) = -1.154701
x = 4.712389 ; sin(x) = -1.000000 ; 1 / sin(x) = -1.000000
x = 5.235988 ; sin(x) = -0.866025 ; 1 / sin(x) = -1.154701
x = 5.759587 ; sin(x) = -0.500000 ; 1 / sin(x) = -2.000000
x = 1000 * 1000 * 1000
while True:
if (x % 11 == 0) and (x % 27 == 0):
break
x -= 1
print(f"{x} est dans la table des 11 et des 27")
"999999891 est dans la table des 11 et des 27"
i = 1
while i < 4:
line = ""
j = 1
while j < 4:
line += f"{i * j:>3}"
j += 1
print(line)
i += 1
1 2 3
2 4 6
3 6 9
Admettons que nous ayons une liste de noms que nous souhaitons afficher dans la console :
liste = [ "Alan", "Ada", "Donald" ]
taille = len(liste)
i = 0
while i < taille:
nom = liste[i]
print(nom)
i += 1
Alan
Ada
Donald
for nom in [ "Alan", "Ada", "Donald" ]:
print(nom)
Alan
Ada
Donald
Une boucle "Pour" peut s'exprimer ainsi en pseudo-code :
Pour chaque élément du containeur:
Exécute le Corps de la Boucle sur cet élément
En anglais : pour
for
for i in { 1, 2, 3 }:
print(i)
1
2
3
somme = 0
for i in { 1, 2, 3, 4, 5, 6, 7, 8, 9 }:
somme += i
print(somme)
45
taille = int(input("Taille : "))
somme = 0
# for i in { 1, 2, 3, 4, 5, ..., taille }: # ce code est commenté
# somme += i # comment fait-on ?
print(somme)
La fonction range
permet de résoudre ce problème.
En anglais : borne
range
.
taille = int(input("Taille : "))
somme = 0
for i in range(taille + 1):
somme += i
print(somme)
for i in range(3):
print(i)
0
1
2
Autrement dit :
debut = 1
fin = 3
for i in range(debut, fin):
print(i)
1
2
Autrement dit :
debut = 1
fin = 6
pas = 2
for i in range(debut, fin, pas):
print(i)
1
3
5
Comment feriez-vous pour ré-implémenter le TP 01 Anjou Vélo Vintage en Python ?
from math import sin
var1=3.14159265;var2=1e-6;var3=-2*var1;var4=2*var1;var5=var1/6
while var3<var4:
var6=sin(var3);var7=var3;var3+=var5
if abs(var6)<var2:continue
var8=1/var6
print(f"var7={var7};var6={var6};var8={var8}")
Que fait-il ?
from math import sin
pi = 3.14159265
epsilon = 1e-6
actuel = -2 * pi
fin = 2 * pi
increment = pi / 6
while actuel < fin:
sin_actuel = sin(actuel)
precedent = actuel
actuel += increment
if abs(sin_actuel) < epsilon: # si sin(actuel) est proche de 0
continue # évite les instructions suivantes
valeur = 1 / sin_actuel
print(f"x = {precedent:>9.6f} ;"
f" sin(x) = {sin_actuel:>9.6f} ;"
f" 1 / sin(x) = {valeur:>9.6f}")
# Les commentaires commencent par le caractère "#".
# Ils ne sont pas exécutés par l'interpréteur Python.
une_ligne = "peut commencer" # par des instructions
# qui s'exécutent et
# se terminent par des
# commentaires.
Grandes lignes dans les prochaines diapositives
On utilise 4 espaces pour l'indentation.
Maximum 79 caractères par ligne au total.
revenus = (salaire_net
+ interets_comptes_bancaires
- impots_revenus
- remboursements_emprunt)