Affichages à l`écran : retour à la ligne Variables Types simples

publicité
12/11/2008
Affichages à l'écran : retour à la
ligne
Algorithmes et
structures de données
Cours 9
Patrick Reuter
print "bonjour"
print ''martin"
bonjour
martin
print "bonjour",
print ''martin"
bonjour martin
http://www.labri.fr/~preuter/asd2008
Variables
bonjour = 1
print bonjour
print ''bonjour"
bonjour
-------1
1
bonjour
Type simples:
Type booléen
– Vrai/faux (p.ex. TRUE, boolean)
Type entier
– Nombre entier (p.ex. 5, int)
Type flottant
– Nombre à virgule flottant (p.ex. 5.12, float)
Types simples
Type booléen
• Deux valeurs possibles : FAUX (False), VRAI (True)
• Opérateurs de comparaison : ==, !=, >, >=, <, <=
• 2>8
• 2 <= 8
•
•
•
•
# faux
# vrai
Opérateurs logiques : NON (not), OU (or), ET (and)
(3 == 3) or (9 > 24)
# vrai
(9 > 24) and (3 == 3)
# faux
not(2==2)
# faux
Types simples
Type entier
20 + 3
20 - 3
20 * 3
20 ** 3
20 / 3
20 % 3
division entière)
# 23
# 17
# 60
# 8000
# 6 (division entière)
# 2 (modulo (reste de la
1
12/11/2008
Types simples
Type entier long
– Les entiers longs (seulement limités par la
mémoire vive)
– 2 ** 40
– 3 * 72L
# 1099511627776L
# 216L
Types simples
Type flottant
• Les flottants sont not´es avec un « point
d´ecimal » ou en notation exponentielle :
2.718
3e8
6.023e23
2.
3.0
#
# 3 * 108
# 6.023 * 1023
#2
#3
• Ils supportent les mêmes opérations que les
entiers, sauf :
20.0 / 3
20.0 // 3
Variables
• Type
• Motivation :
– Calculer les intérets de 10 % d'une somme de 100
euros
somme = 100.0
somme = somme + somme * 5.0/100.0
# 6.666666666666667
# 6 (division entière forcée)
Excursion
• Typage statique
p.ex. Java
int a;
a = 3;
a = 3.5;
// ERREUR
• Typage dynamique
p.ex. python
a = 3;
a = 3.5;
# OK
Les chaînes de caractères
• Pour connaître le type d'une variable :
a = 3
print
i t type(a)
t
( )
b = 3.5
print type(b)
Notations :
• Les guillemets
c1
1 = "L’
"L’eau d
de l'
l'océan"
é "
n = len(c1)
# 16
c = round(b) # 3
2
12/11/2008
Longueur :
s = "abcde"
print len(s) # 5
Concat´enation :
s1 = "abc"
s2 = "defg"
s3 = s1 + s2
On indique, entre crochets, la position d’un
caractère par un indice qui commence à 0
s = "abcdefg"
print
i t s[0]
[0]
# a
print s[2]
# c
# ’abcdefg’
On peut extraire une sous-chaîne par
découpage :
s = "abcdefg"
s[1:3]
[1 3]
# ’b
’bc’
’
s[3:]
# ’defg’
s[:3]
# ’abc’
TD 6 Correction
nij
4
1
1
2
2
TD 6 Correction
n= 4
i= 1
while i<=n:
j = 1
while j<=i:
print n-i+1-j+1,
j = j + 1
print
i = i + 1
1
2
3
3
1
2
3
4
4
1
2
3
4
5
4
32
210
1 0 -1 -2
5
3
12/11/2008
TD 6 Correction
TD 6 Correction
• Convertisseur
• Convertisseur
secondes = 125
secondes = 1331
min = secondes / 60
sec = secondes % 60
#ou bien
#sec = secondes - (min * 60)
print secondes," equivaut ", min, " minutes et ",sec,
" secondes"
Combien de minutes ? Combien de secondes ils
restent ?
TD 6 Correction
TD 6 Correction
secondes = 1331
min = secondes / 60
sec = secondes % 60
secondes = 18243
#ou bien
#sec = secondes - (min * 60)
heures = secondes
h
d
/ 3600
sec = secondes % 3600
print secondes," equivaut ", min, " minutes et ",sec, " secondes"
min =
sec =
print
print
sec / 60
sec % 60
secondes," equivaut ", heures, " heures et ",min,
" minutes et ",sec, " secondes"
TD 6 Correction
secondes = 448402
jours = secondes / (3600*24)
sec = secondes % (3600*24)
heures = sec / 3600
sec = sec % 3600
min = sec / 60
sec = sec % 60
print secondes," equivaut ",jours, " jours et ",
print heures, " heures et ",min, " minutes et ",sec, " secondes"
4
12/11/2008
TD 6 Correction
TD 6 Correction
• "i" dans Mississippi
nombreCaracteres = len(s)
SI (nombreCaracteres%2==0) ALORS
print "le nombre de caractères est pair"
SINON
print "le nombre de caractères est impair"
TD 6 Correction
TD 6 Correction
• Palindrom
– ANNA
– ROTOR
s = "Mississippi"
longueur = len(s)
compteur = 0
i = 0
while (i < longueur):
if (s[i] == "i"):
compteur = compteur + 1
i = i + 1
print "nombre de 'i' dans ",s," : ",compteur
TD 6 Correction
• Palindrom
ch[0] == ch[7]
TD 6 Correction
• Palindrom
ch[0] == ch[7]
ch[1] == ch[6]
5
12/11/2008
TD 6 Correction
• Palindrom
ch[0] == ch[7]
ch[1] == ch[6]
ch[2] == ch[5]
TD 6 Correction
• Palindrom
ch[0] == ch[7]
ch[1] == ch[6]
ch[2] == ch[5]
ch[3] == ch[4]
n = len(ch) - 1
ch[0] == ch[n]
ch[1] == ch[n-1]
ch[2] == ch[n-2]
cch[3]
[3] == cch[n-3]
[ 3]
TD 6 Correction
• Conditions nécessaires
• Conditions suffisantes
TD 6 Correction
i=0
n = len(s) - 1
resultat = VRAI
TANT QUE i <= n/2 FAIRE
DEBUT
SI s[i] != s[n-i] ALORS
resultat = FAUX
i=i+1
FIN
SI resultat == VRAI ALORS
afficher("C'est un palindrome");
SINON
afficher("Ce n'est pas un palindrome");
TD 6 Correction
s = raw_input()
i =0
n = len(s) - 1
resultat = True
while i <= n/2:
if (s[i] !=
! s[n
s[n-i]):
i]):
resultat = False
i = i + 1
if (resultat == True):
print "C'est un palindrome"
else:
print "Ce n'est pas un palindrome"
6
12/11/2008
Les entrées du clavier
a = input()
• Démo
affecte la variable a avec une variable de
type entier ou flottant.
a = raw_input()
affecte la variable a avec une variable de
type chaîne de caractères.
Messages d'erreurs python
Messages d'erreurs python
z = 1
prinnt z
ERREUR DE SYNTAXE : Il faut écrire print au lieu de prinnt
Messages d'erreurs python
z = 1
if z==1:
print z
print "fini"
Messages d'erreurs python
z = a
Traceback (most recent call last):
File "D:/preuter/stud/asd2008/td/td7machine/erreurs.py", line 1, in <module>
z=a
NameError: name 'a' is not defined
ERREUR D'INDENTATION:
Le print "fini" devrait commencer en tout début
de ligne
ERREUR DE DECLARATION:
La variable "a" n'est pas déclaré.
7
12/11/2008
Messages d'erreurs python
s = "Demo"
print s[4]
Traceback (most recent call last):
File "D:\preuter\stud\asd2008\td\td7machine\erreurs.py", line 2, in <module>
print s[4]
IndexError: string index out of range
ERREUR DE BORNES:
L'index 4 dans la chaîne de caractères s n'existe pas. Une
chaîne de caractère avec longueur connaît uniquement les
indices de 0 à 3.
8
Téléchargement