Introduction à Python Lycée Georges Imbert 2015/2016
Introduction à la programmation avec Python
https://www.python.org/doc/
https://docs.python.org/3.5/library/index.html
http://fsincere.free.fr/isn/python/cours_python.php
http://python.swaroopch.com/
1 Pour débuter en python
Quelques exemples d’opérations
1print(" H e l l o worl d " )
2a= 1
3b= 2
4print(" a = " ,a)
5print(" b = " ,b)
6# un premier commentaire
7# a d d i t i o n :
8c=a+b
9print(" c = " ,c)
10 a=a+ 1
11 print(" a = " ,a)
12 a+= 1 # permet a u s s i d i n c r é menter a de 1
13 print(" a = " ,a)
14
15 # on p eut f a i r e de même av ec l e s a u t r e s op é
rations :
16 a= 1
17
18 a= 2 # co r re s p on d à
19 a=a2
20
21 a/= 2 # co r re s p on d à
22 a=a/ 2
23
24 # pour é l e v e r un nombre à une p u i s s a n c e :
25 a∗ ∗ 3
Attention la puissance ne s’écrit pas comme sur la cal-
culatrice aˆ2 mais a**2. L’opération aˆ2 a un autre sens
en python (lié à l’écriture en base deux des nombres).
Un peu d’arithmétique :
1a= 20
2b= 7
3q=a// b# d i v i s i o n e n t i è r e
4r=a%b# r e s t e de l a d i v i s i o n
euclidienne
5print(a,"=",b,"",q,"+" ,r)
Condition : si ... alors ...
En python, le symbole =est utilisé pour l’affectation, il
faut donc un autre code pour tester une égalité : "==".
Rappelons qu’une assertion peut être soit vraie (True)
ou fausse (False). Tester successivement les différentes
lignes suivantes dans le module python directement :
11 + 1 == 3
21 + 1 == 2
31 + 1 == 2 and 23 == 6
41 + 1 == 1 or 23 == 5
5not ( 1 + 1 == 2 )
La condition si se dit « if » en anglais :
1a= 1
2i f (a== 1) :
3print(" h e l l o ! " )
4e l s e :
5print(" Good bye " )
On notera qu’on n’écrit pas « then » (alors) pour effec-
tuer un test en python. Il faudra aussi veiller à bien écrire
les deux-points.
Compléter le programme suivant :
1a= 1
2b=4
3i f _________ :
4print(" a e t b so nt de s i g n e s oppos é s " )
Tester le précédent programme avec d’autres valeurs
pour aet b.
Vous avez du remarquer qu’il est pénible de devoir re-
lancer le programme pour tester avec d’autres valeurs.
La solution se trouve dans l’utilisation de la commande
input :
1a=input(" Entrer un nombre pour a : " )
2b=input(" Entrer un nombre pour b : " )
3# à d é fa u t , l a commande i np u t r e t o u r n e une
cha î ne de c a r a c t è r e s
4# i l f au t l a c o n v e r t i r so us forme d ’ un
entier :
5a=i n t (a)
6b=i n t (b)
7i f ab< 0 :
8print(" a e t b so nt de s i g n e s oppos é s " )
9e l s e :
10 print(" a e t b s on t de même s i g n e " )
L’ajout de la commande int() permet de convertir la
chaîne de caractère entrée par l’utilisateur en nombre.
Les listes
Une liste de nombres en python s’écrit entre crochets
comme suit :
1l= [3 , 5 ,4 , 7 , 1 2 , 1 , 5]
1
Introduction à Python Lycée Georges Imbert 2015/2016
Par convention, le premier terme est de rang 0:
1print(l[ 0 ] )
On accède au ième terme ainsi
1i= 3
2print(l[i] )
Quelques opérations avec les listes :
1l= [ 1 , 2 ]
2print(l)
3l= [ 1 , 5 ] + [ 2 , 4 ] # concatenation de deux
listes
4print("concatenation : " ,l)
5
6l.reverse ( ) # m o d i f i e l o r d r e d es e l e me n t s
de l a l i s t e en l e s pla ç ant dans l ’ o r d r e
i n v e r s e
7print(l)
8
9l.sort ( ) # t r i e l e s e l e men t s dans l or d re
croissant
10 print(l)
Boucle : pour
La particularité du langage python est de définir la
boucle pour à l’aide des listes. Voici un exemple :
1l= [ 1 , 2 , 3 , 4 ]
2for xi n l:
3# x va p r e nd r e s u c c e s s i v e m e n t t o u t e s l e s
4# v a l e u r s de l a l i s t e l
5print(x)
A priori pour afficher les 10 premiers entiers naturels, il
faudrait définir la liste correspondante. La commande
range(n) permet de le faire. Elle génère la liste des
nombres entiers naturels de 0àn1. Ainsi, pour afficher
les 10 premiers entiers naturels, le code est le suivant :
1for ii n r an ge (11) :
2print(i)
Exercice 1. 1. Modifier le programme précédent
pour afficher les 20 premiers entiers.
2. Compléter le code suivant qui permet d’afficher le
maximum des éléments de la liste l:
1l= [ 1 , 3 , 4 ,5,10 ,4 ,2.3]
2M=_____
3for ______________ :
4
5print(M)
Boucle : tant que La boucle tant que s’écrit à l’aide
du mot clé while :
1while condition :
2# instructions ...
Exercice 2. Considérons la suite (un)définie par récur-
rence comme suit :
(u0= 100
un+1 = 1.01 un+ 10 pour tout entier n
Voici un programme en relation avec cette suite :
1u= 100
2while u< 10 0 0 :
3u= 1.01 u+ 10
4print(u)
1. Que permet de faire ce programme ?
2. Le modifier pour qu’il affiche l’indice net non pas
un.
Chaînes de caractères
1s=" c e c i e s t une cha î ne de c a r a c t è r e s "
2print(s)
3t=" et en v o i c i une a ut re "
4print(s+t)
Il est possible de convertir un nombre codé dans une
variable en chaîne de caractères :
1a= 2
2print(str(a) )
3# application :
4b= 3
5s=" dans l a v a r i a b l e a se t ro uv e l e nombre
"+s t r (a) + " e t dans l a v a r i a b l e b s e
tro u v e l e nombre " +str(b)
6print(s)
Pour écrire une chaîne de caractère sur plusieurs lignes :
1s= premi è re l i g n e
2seconde l i g n e
3print(s)
4# ou bi e n
5s=" premi è r e l i g n e \n se c o n d e l i g n e "
6print(s)
Le code \n correspond à un retour à la ligne et \t cor-
respond à une tabulation.
Nombres aléatoires
Pour générer un nombre aléatoire compris dans l’inter-
valle [0; 1[, il faut charger le module random :
1from random import
2
3X=random ( )
4print(X)
Pour générer un nombre entier aléatoire compris entre a
et b, on peut utiliser la commande randint(a,b) :
1X=randint ( 1 , 6 )
2print (X)
2
Introduction à Python Lycée Georges Imbert 2015/2016
2 Sommes des puissances entières d’entiers
Exercice 3 (Olympiades Amériques-Antilles-Guyane 2016).
Partie 1 : sommes, sommes de carrés, sommes de cubes
Les ensembles A={1,9,11}et B={3,5,13}possèdent des propriétés qui attisent la curiosité. On remarque en effet
que 1 + 9 + 11 = 3 + 5 + 13 et que 12 + 92 + 112 = 32 + 52 + 132.
Dans la suite, on dira que la paire d’ensembles d’entiers {A, B}possède la propriété :
S1si les deux ensembles ont le même nombre d’éléments et si la somme des éléments de Aest égale à la somme
des éléments de B.
S2si elle possède la propriété S1et si de plus la somme des carrés des éléments de Aest égale à la somme des
carrés des éléments de B.
S3si elle possède la propriété S2et si de plus la somme des cubes des éléments de Aest égale à la somme des
cubes des éléments de B.
Étant donné un entier impair n, on se demande s’il est possible de partager l’ensemble {0,1,2, . . . , n 1, n}en deux
parties Aet Btelles que {A, B}possède une des propriétés évoquées ci-dessous. Par convention, Asera la partie qui
contient 0.
1. Dans le cas n= 3, peut-on trouver {A, B}possédant la propriété S1?
2. Même question dans le cas n= 5.
3. a) Si l’ensemble {0,1,2,3,4,5,6,7}peut être partagé en deux parties Aet Btelles que les propriétés S1et S2
soient satisfaites, quelle est la somme des éléments de A ?
b) Quelle est la somme des carrés des éléments de A?
c) Déterminer les parties Aet Bsolutions du problème.
d) Écrire un programme en python pour tester si la partition {A, B}vérifie la propriété S3.
4. Lorsque l’ensemble {0,1,2, . . . , n 1, n}peut être partagé de sorte à satisfaire une ou plusieurs des propriétés
Si, on adopte le système de représentation suivant : Chaque case de la seconde ligne des tableaux ci-dessous
contient 1 si le nombre appartient à A, 0 si le nombre appartient à B.
a) Compléter les deux tableaux :
n= 3 0123
1
n= 7 01234567
1
b) Pour afficher le tableau n= 3 en python, on peut utiliser le programme suivant :
1ligne1 =" "
2ligne2 =" "
3l= [ 1 , 0 , 0 , 1 ] # l i g n e du t a b l e a u cod é e s o us for me de l i s t e
4# s i i a p p a r t i e n t à A a l o r s l [ i ] = 1
5for ii n r an ge ( 4 ) :
6ligne1 += s t r (i) + " \ t "
7ligne2 += s t r (l[i] ) + " \ t "
8print(ligne1 )
9print(ligne2 )
Modifier le programme pour afficher le tableau correspondant à n= 7.
c) L’observation de ces deux tableaux fait naître l’idée qu’en dédoublant chaque 0en 01 et chaque 1en 10, on
transforme une séquence intéressante en une autre, dont la taille est doublée.
i. Écrire un programme qui permet de passer de la liste lpour n= 7 à la liste, notée Lpour n= 15.
ii. Compléter le programme pour afficher le résultat.
iii. Écrire une programme qui vérifie que la partition {A, B}obtenue pour n= 15 vérifie la propriété S3.
Partie 2 : naissance d’une suite
Inspirés par les questions précédentes, on étudie la suite
définie par t0= 1 et la relation de récurrence :
(t2n=tn
t2n+1 = 1 tn
pour tout entier n(suite de Prouhet-Thue-Morse).
1. Calculer t2 016.
2. Écrire un programme qui demande l’entier net re-
tourne la valeur de tn.
3. La suite (tn)possède-t-elle trois termes consécutifs
indentiques ?
4. Cette suite est-elle périodique ?
3
Introduction à Python Lycée Georges Imbert 2015/2016
3 Un peu de cryptographie
Les lettres et les différents caractères sont codés à l’aide de nombres dans l’ordinateur (codage ASCII) :
1print(ord("a") )
2print(ord(" b " ) )
Quelle est l’entier associé à la lettre D?
Réciproquement à partir d’un nombre, on peut retrouver le caractère associé :
1print(ch r ( 9 7 ) )
Exercice 4 (Chiffrement de César).
1. Écrire un programme qui demande une lettre de l’alphabet en minuscule notée Let retourne la lettre cinq rang
plus loin dans l’alphabet.
2. Tester le programme avec la lettre x. Que se passe-t-il ? Modifier si besoin le programme.
3. Nous allons utiliser une division euclidienne :
1def chiffrement_Cesar(L) :
2r=ord(L)ord("a")# rang de l a l e t t r e L dans l al p ha b e t
3r_image = ( r+ 5 ) % 26
4resultat =chr (ord ("a") + r_image )
5return resultat
6
7# t e s t :
8print(" a > " ,chiffrement_Cesar ("a") )
9print(" x > " ,chiffrement_Cesar(" x " ) )
a) Modifier le programme précédent pour chiffrer avec un décalage de 31 au lieu de cinq.
b) Tester le programme. Les résultats sont ils différents d’avant ? Justifier.
c) Avec le chiffrement de César combien y a-t-il de manières différentes de chiffrer un message ?
d) Compléter le programme suivant pour chiffrer un message entier :
1message =" en python l e c h i f f r e m e n t de c e s a r e s t s im pl e "
2cryptogramme =" "
3for Li n message :
4i f ord (L) < ord ("a")or ord (" z " ) < ord(L) : # s i l e c a r a c t è re L n e s t pas une
l e t t r e minuscule on ne l a c r y p t e pas
5cryptogramme += L
6e l s e :
7. . .
8print(cryptogramme)
e)* Modifier la fonction chiffrement_Cesar afin de pouvoir crypter un message arbitraire (contenant des
majuscules, des accents, ...).
f) Écrire un programme pour décrypter le cryptogramme.
4 Multiples de 3 et 5
Exercice 5. Si on dresse la liste des entiers naturels multiples de 3 ou 5 et inférieurs strictement à 10, on a 3,5,6et
9. Alors la somme de ces multiples est 23.
Trouver la somme des multiples de 3 ou 5 inférieurs strictement à 1000.
4
Introduction à Python Lycée Georges Imbert 2015/2016
5 Matrice : liste de listes
Comme on peut créer des listes de nombres, on peut aussi créer des listes de listes :
1M= [ [ 1 , 2 ] , [ 3 , 4 ] ]
2# pour a f f i c h e r l e seco nd terme de l a premi è r e l i s t e , on f a i t :
3print(M[0][1])
Pour afficher tous les termes, on peut procéder comme suit :
1def affiche(M) :
2s=" "
3for ligne i n M:
4for xi n ligne :
5s+= s t r (x) + " \ t "
6s+= " \n "
7print(s)
8
9affiche(M)
On se rend compte que l’élément sur la ième ligne et la jème colonne est M[i1][j1].
Exercice 6. Une liste de trois listes dont chacune des listes est constituée de trois nombres est appelée une matrice
carrée de taille 3. Dans cet exercice, nous allons considérer de telles matrices où les valeurs sont uniquement des 0 et
des 1. Un exemple :
1M= [[1 ,0 ,0] ,[0 ,1 ,0] ,[0 ,0 ,1]]
2affiche(M)#I l f au t é ve n tu e ll em en t r e c o p i e r l a dé f i n i t i o n de l a f o n c t i o n a f f i c h e ( ) pour qu
e l l e f o n c t i o n n e à nouveau .
1. Tester le programme suivant :
1i f M[ 0 ] [ 0 ] == M[ 0 ] [ 1 ] == M[ 0 ] [ 2 ] == 1 :
2test =True
3e l s e :
4test =False
5
6print(test )
avec la matrice Mprécédente et avec la matrice M = [[1,1,1],[0,1,0],[0,0,0]]. Que permet-il de faire ?
2. Écrire un programme qui teste si la seconde colonne de la matrice Mest constituée de 1 uniquement.
3. Écrire un programme qui teste si une ligne ou une colonne est constituée de 1 uniquement.
4. Écrire un programme qui teste si une des diagonales est constituée de 1 uniquement.
5. Compléter le programme suivant qui permet de tester des trois 1 sont alignés sur une ligne, colonne ou diagonale :
1def teste (M) :
2test =False
3i f M[ 0 ] [ 0 ] == M[ 0 ] [ 1 ] == M[ 0 ] [ 2 ] == 1 : test =True
4i f ...
5. . .
6return test
6. Le tester avec différentes matrices carrées Mde taille 3 constituées de 1 et de 0 uniquement.
5
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !