TP 1 : Python
Exercice N1 :
Écrire un programme Python qui permet de remplir un tableau T par n entiers, n dans [4..50], puis mettre
dans un deuxième tableau par les entiers premier et l’afficher.
Exercice N2 :
Écrire un programme Python qui permet de remplir un tableau T par n chaines de caractères alphabétiques, n
dans [6..20], puis crypter les chaines par la façon suivant :
Chaque caractère sera remplacer par le caractère qui le suit par selon le rang du mot dans le tableau.
Exercice N3 :
Écrire un programme Python qui permet de remplir un tableau T par n informations, n dans [5..20], les
informations sont :
CIN : chaine numérique est égal à 8
Nom prénom : chaine alphabétique et contient aussi l’espace.
Salaire
Le programme doit afficher le contenu du tableau et calculer la somme total des salaires et l’afficher.
Exercice N4 :
Écrire un programme Python qui permet de créer un fichier « nom.txt » remplie par des noms et prénoms
composées de lettres et peut contenir l’espace, la saisie s’arrête en répondant « non » à la question « voulez
vous continuer ? », le programme doit trier le fichier en ordre alphabétique croissant puis l’afficher.
Exercice N5 :
Un société de navigation cherche a aider le maximum de marin qui demande de l’aide en mer, elle veut
développer un logiciel qui permet de saisir les coordonnées (x,y) un couple d’entiers d’un tableau en détresse
et chercher les bateaux les plus proches.
Écrire un programme qui permet de remplir un fichier « coordonnée.dat » par les n positions et nom des
différents bateaux en mer avec n dans [5..20], puis saisir les coordonnées du bateau en détresse et afficher le
nom du bateau le plus proches.
Sachant que une distance est calculé comme suite : d= √ ( xa−xb )2 + ( ya− yb )2
Exercice N6 :
Une adresse IP valide est représentée sous la forme « W.X.Y.Z », avec w,x,y et z sont quatre entier naturels
appartenant chacun à l’intervalle [0,255] et séparés par le caractère point « . ». Écrire un programme qui
permet de remplir un fichier « source.txt » par des adresse n adresses IP avec n dans [4..15], puis transférer les
adresses IP vers un nouveau fichier d’enregistrement « IP.dat » qui contiendra un enregistrement caractérisé
par 2 champs :
IP : représente l’adresse IP
Classe : qui doit être « A » ou « B » ou « C » ou ou « D » ou « E », c’est la valeur de la classe est
définie selon la figure ci-contre
Finalement afficher le fichier. Classe Valeur de W
A 1-127
B 128-191
C 192 – 223
D 224 – 239
E 240 - 254
Correction
Exercice N1 Exercice N2
def saisir (): def saisir ():
n=int(input("Saisir la taille")) n=int(input("Saisir la taille"))
while n <=4 or n>=50: while n <6 or n>20:
n= int(input("Saisir la taille")) n= int(input("Saisir la taille"))
return(n) return(n)
def remplir(n): def remplir(n):
t=[int()]*n t=[int()]*n
for i in range(n): for i in range(n):
print("Saisir la case",i) print("Saisir le mot ",i)
t[i]=int(input()) t[i]=input()
return(t) return(t)
def remplir2 (n,t): def remplacer (n,t):
t1=[int()]*n for i in range(n):
k=0 t[i]=crypt(t[i],i+1)
for i in range (n): return(t)
if (premier(t[i])):
t1[k]=t[i] def crypt (ch,x):
k=k+1 ch1=""
return(k,t1) for i in range(len(ch)):
ch1=ch1+chr(ord(ch[i])+x)
def premier(x): return(ch1)
k=2
i=0
while (x %k != 0) and (k<= x // 2) : def affiche (k,t):
k=k+1 for i in range(k):
if k > x // 2: print (t[i])
return(True)
else: n=saisir()
return(False) t=remplir(n)
t=remplacer(n,t)
def affiche (k,t): affiche (n,t)
for i in range(k):
print (t[i])
n=saisir()
t=remplir(n)
k,t1=remplir2(n,t)
affiche (k,t1)
Exercice N3 Exercice N4
def saisir (): def remplir():
n=int(input("Saisir la taille")) f= open('nom.txt','w')
while n <2 or n>20: r="O"
n= int(input("Saisir la taille")) n=0
return(n) while (r !="N"):
np=input("Saisir le Nom prénom")
def remplir(n): while not verif(np):
t=[{}]*n np=input("saisir le Nom prénom")
for i in range(n): f.write(np+"\n")
t[i]={} n=n+1
r=input("voulez vous continuez?")
t[i]["CIN"]=input("Saisir le CIN ") while r!="N" and r!="O":
while not t[i]["CIN"].isnumeric(): r=input("voulez vous continuez?")
t[i]["CIN"]=input("saisir le CIN") f.close()
return(n)
t[i]["NP"]=input("Saisir le prenom ") def verif (ch):
while not verif(t[i]["NP"]): i=0
t[i]["NP"]=input("saisir le nom et prenom") while i<len(ch) and ("A"<=ch[i].upper()<="Z" or
ch[i]==" "):
t[i]["sal"]=float(input("Saisir le salaire")) i=i+1
while t[i]["sal"]<=0: return(i==len(ch))
t[i]["sal"]=input("saisir le salaire") def tri_f(n):
t=transfet_t(n)
return(t) t=tri(t,n)
def verif (ch): transfet_f(t,n)
i=0 def transfet_t(n):
while i<len(ch) and ("A"<=ch[i].upper()<="Z" or t=[""]*n
ch[i]==" "): f=open('nom.txt','r')
i=i+1 for i in range(n):
return(i==len(ch)) ch=f.readline()
t[i]=ch[:len(ch)]
def affiche (k,t): return(t)
for i in range(k): def transfet_f(t,n):
print (t[i]) f=open('nom.txt','w')
for i in range(n):
def somme (t,n): f.write(t[i])
s=0 f.close()
for i in range (n): def tri(t,n):
s=s+t[i]["sal"] i=0
return(s) per= False
while per == False and n!=1 :
per=True
n=saisir() for i in range(n-1):
t=remplir(n) if (t[i][0] > t[i+1][0]):
affiche (n,t) t[i],t[i+1]=t[i+1],t[i]
s=somme(t,n) per = False
print( " la somme des salaire est ",s) n=n-1
return(t)
n=remplir()
tri_f(n)
Exercice N5 Exercice N6
from pickle import * from pickle import *
from math import * from math import *
def saisir (): def saisir ():
n=0 n=0
while n <=2 or n>= 20: while n <2 or n>= 10:
n=int (input( "saisir le nombre de bateau en n=int (input( "saisir le nombre d'adresses IP"))
mer")) return(n)
return(n) def saisir1 ():
n=0
while n<1 or n>255:
def remplir(n):
n=int(input("saisir un entier entre [1..255]"))
f= open('coordonnées.dat','wb') return(n)
for i in range(n): def remplir(n):
e={} f= open('source.txt','w')
e["nom"]=input ("sasir le nom du bateau") for i in range(n):
e["abs"]=float(input("sasir l'abssice")) print("saisir l'adresse IP",i)
e["ord"]=float(input("sasir l'ordonné")) w=saisir1()
dump(e,f) x=saisir1()
f.close() y=saisir1()
z=saisir1()
def remplir2(a,b): ch=str(w)+"."+str(x)+"."+str(y)+"."+str(z)
f=open("coordonnées.dat","rb") f.write(ch+ "\n")
t=[float()]*n f.close()
for i in range (n): def classe (n):
e=load(f) f=open("source.txt","r")
t[i]=sqrt((e["abs"]-a)**2 + (e["ord"]-b)**2) f1=open("IP.dat","wb")
pmin=0 for i in range(n):
for i in range (1,n): e={}
if (t[i]<t[pmin]): ch=f.readline()
ch1= ch[:ch.find(".")]
pmin=i
e["IP"]=ch
f.close()
x=int(ch1)
return(pmin) if 1<=x and x<=127:
e["classe"]="A"
def affiche(x): elif x in range(128,192):
f=open("coordonnées.dat","rb") e["classe"]="B"
for i in range(x+1): elif x in range(192,224):
e=load(f) e["classe"]="C"
elif x in range(224,240):
print ("le bateau le plus proche est ", e["nom"]) e["classe"]="D"
f.close() elif x in range(240,255):
e["classe"]="E"
n=saisir() dump(e,f1)
remplir(n) f.close()
a=float(input("l'abscisse du bateau en détresse")) f1.close()
b=float(input("l'ordonné du bateau en détresse")) def affiche(x):
pos=remplir2(a,b) f=open("IP.dat","rb")
affiche(pos) for i in range(x):
e=load(f)
print ("l'adresse", e["IP"],"de classe",e["classe"])
f.close()
n=saisir()
remplir(n)
classe (n) affiche(n)