Académique Documents
Professionnel Documents
Culture Documents
2- Fonction Multiple :
1. def Multiple(L,ind):
2. for i in range(ind+1,len(L)):
3. if i%ind == 0:
4. L[i] = 0
3- Fonction Suivant :
1. def Suivant(L,ind):
2. i = ind + 1
3. while L[i] == 0:
4. i += 1
5. return i
4- Fonction Crible :
1. def Crible(L):
2. i = 2
3. while i<= int(sqrt(100)):
4. multiple(L,i)
5. i = Suivant(L,i)
6. print(L)
7. premier = []
8. for i in range(2,len(L)):
9. if L[i] == 1:
10. premier.append(i)
11. return premier
1. def crible_recursive(L,ind=2):
2. if ind > int(sqrt(100)): #condition d’arrêt
3. return L
4. else:
5. Multiple(L,ind)
6. return crible_recursive(L,suivant(L,ind))
L=[1,1,1,1,1,1,1,1,1,1]
crible_recursive(L,2):
Multiple(L,2)
L
crible_recurcive(L,3)
L=[1,1,1,1,0,1,0,1,0,1]
crible_recursive(L,3):
Multiple(L,3)
crible_recurcive(L,5)
L
L=[1,1,1,1,0,1,0,1,0,0]
crible_recursive(L,5):
return L
7- Programme principal
1. #Avec function non recursive
2. def main():
3. L = Init()
4. print("\n", L)
5. p = Crible(L)
6. print(p)
1- La function Saisie_deg :
1. def Saisie_deg():
2. while True:
3. try:
4. n = int(input("donner le degre du polynome :"))
5. if type(n) == int and n>0:
6. Break #fin de while
7. except ValueError:
8. Continue #suite de while
9. return n
2- Fonction Saisie_poly:
1. def Saisie_poly(deg):
2. LP = []
3. for i in range(deg+1):
4. while True:
5. try:
6. print("donner coefficient a",i)
1. def Saisie():
2. while True:
1. def Ajout_titre(Ltitre,Lnum,Lexp):
2. t = input('Donner un titre :')
3. while True:
4. print("donner le numéro du livre :")
5. n = Saisie()
6. if n not in Lnum: break
7. else: print(n,”: Ce numéro existe”)
8. nexp = Saisie()
9. Ltitre.append(t)
10. Lnum.append(n)
11. Lexp.append(nexp)
3. Fonction Etat_biblio, qui affiche pour chaque livre son titre ainsi que le nombre
d’exemplaires restants :
1. def Etat_biblio(Ltitre,Lexp):
2. print("Titre \t Nbr. Exemplaires")
3. for i in range(len(Ltitre)):
4. print(“{0}\t{1}”.format(Ltitre[i],Lexp[i]))
4. Fonction aut_emprunt qui à partir du CIN d’un étudiant, vérifie s’il est autorisé
d’emprunter un livre :
1. def calcul_date(j,m):
2. jr = j+10
3. mr = m
4. if jr>31 and m in [1,3,5,7,8,10,12]:
5. jr = jr-31
6. mr += 1
7. if mr == 13:
8. mr = 1
9. if jr>30 and m in [4,6,9,11]:
10. jr = jr-30
11. mr += 1
12. if jr>28 and m==2:
13. jr=jr-28
14. mr=3
1. def emprunt(LP,LE,Lexp,Lnum):
2. while True: #Saisie et vérification de CIN
3. try:
4. CIN = input("donner le CIN de l'emprunteur")
5. if len(CIN))== 8:
6. CIN = int(CIN)
7. break
8. except ValueError:
9. continue
10. if aut_emprunt(CIN,LE,LP):
11. while True:
12. print('saisir le numéro du livre'))
13. num = saisie()
14. if num in Lnum:
15. break
16. k = Lnum.index(num)
17. if Lexp[k]>0:
18. je = int(input("saisir la date de l'emprunt"))
19. me = int(input("saisir le mois de l'emprunt"))
20. Lexp[k]-=1
21. jr,mr = calcul_date(je,me)
22. LE.append([CIN,num,je,me,jr,mr,0])
23. else:
24. print(“Livre demandé n’est pas disponible”)
7. Fonction MAJ_penalite qui à partir d’une date donnée met à jour la liste des emprunts
ayant dépassé cette date limite de retour puis fait la mise à jour de la liste des pénalités en y
ajoutant les CIN des emprunteurs pénalisés :
1. def MAJ_penalite(LE,LP,j,m):
2. for L in LE:
3. if m>L[5] or m==L[5] and j>L[4]:
4. L[6]=1
5. if L[0] not in LP:
6. LP.append(L[0])
8. Fonction retour permettant de faire les mises à jour nécessaire en cas de retour d’un livre :
1. def retour(num,j,m,LE,Lexp,LP):
2. MAJ_penalite(LE,LP,j,m)
3. i = 0
4. while LE[i][1]!= num and i<len(LE):
5. i += 1
6. del LE[i]
7. k = Lexp.index(num)
8. Lexp[k]+=1