
Drussydinhia

Fonction de division
def fonction2(x,y): On définit la fonction2 en incluant x et y
if x==0 or y==0 On compare x et y en vérifiant si ils sont égales à 0
return None On renvoie à None
else: Sinon
return 1/(x*y) On renvoie à 1/(x*y)
print(fonction2(5,3)) Afficher la fonction2 incluant 5 et 3
Fonction d'addition de nombres binaires
n=[1,0,1,0,1,0,1,0,1,0]
p=[1,0,1,0,1,0,1,0,1,0]
r=[0,0,0,0,0,0,0,0,0,0,0]
c=0
for i in range(9,-1,-1):
a = n[i]
b = p[i]
print(i)
r[i+1] =(a and not b and not b ) or (not a and b and not c) or (not a and not b and c) or (a and b and c)
c=(a and b)or(b and c)or(a and c)
r[0]=c
print(r)
a="1010101010"
b="1010101010"
sum=bin(int(a,2)+int(b,2))
print(sum)
fonction minimum
On définit la liste n par [1,0,1,0,1,0,1,0,1,0]
On définit la liste p par [1,0,1,0,1,0,1,0,1,0]
On définit la liste r par [0,0,0,0,0,0,0,0,0,0,]
On affecte à la variable c la valeur 0
On affecte à la variable a l'élément i de la liste n
On affecte à la variable b l'élément i de la liste p
On affiche la valeur de i dans la console
On affecte à l'élément i+1 de la liste r la valeur de
(a et non b et non c ) ou (non a et b et non c) ou (non a et non b et c) ou (a et b et c)
On affecte à c la valeur de (a et b) ou (b et c) ou (a et c)
On affecte à l'élément 0 de la liste r la valeur de c
On affiche la valeur de r dans la console
On affecte à la variable a la chaîne de caractères"1010101010"
On affecte à la variable b la chaîne de caractères "1010101010"
On affecte à la variable sum la valeur de la somme binaire des
valeurs de a et b ,qui sont en base 2, en base 10
On affiche sum dans la console
score[14,17,20,9,12,12,30,16,28,14,7,17,27]
def minimum(liste):
minimum_liste=liste[0]
for i in liste:
if i<minimum_liste:
minimum_liste=i
return(minimum_liste)
b=minimum(score)
def moyenne(liste):
somme=0
compteur=0
for i in liste:
print(i)
somme=i+somme
compteur=compteur+1
print(somme/compteur)
return(somme/compteur)
a=moyenne(score)
On définit la liste score
on définit la fonction moyenne prenant liste comme argument
On affecte à la variable minimum_liste l'élément O de la liste
i prend succesivement toutes les valeurs de la liste.
Si i est plus petit que minimum_liste, alors minimum_liste prend la valeur de i, on renvoi à minimum_liste et on affecte à la variable b la valeur de minimum(score)
On définit la fonction moyenne prenant liste comme argument
On affecte la valeur 0 à la variable somme.
On affecte la valeur 0 à la variable compteur.
I prend successivement toutes les valeurs de la liste.
On affiche i dans la console
On ajoute i à la variable somme
On ajoute i à la variable compteur
On affiche le résultat du quotient de la variable somme et compteur
On renvoi le quotient de somme et compteur dans la console
On affecte la valeur de moyenne(score) à la variable a
Projet pix
import matplotlib.pyplot as plt
moyenne_classe=int(input("Quelle moyenne de classe voulez_vous?"))
fichier=open("4_octobre_2023_NSI1.csv",encoding="utf8")
ligne=fichier.readline()
noms_colonnes=ligne.strip().split(";")
liste_x=[]
liste_y[]
for ligne in fichier:
elements=ligne.strip().split(";")
liste_x.append(elements[4])
liste_y.append(int(elements[9]))
fichier.close()
def score_moyenne(liste):
somme=0
compteur=0
for i in liste:
somme=i+somme
compteur=compteur+1
return(somme/compteur)
moyenne_score=score_moyenne(liste_y)
def minimum(liste):
minimum_liste=liste[0]
for i in liste:
if i<minimum_liste:
minimum_liste=i
return(minimum_liste)
minimum_score=minimum(liste_y)
def maximum(liste):
maximum_liste=liste[0]
for i in liste:
if i>maximum_liste:
maximum_liste=i
return(maximum_liste)
maximum_score=maximum(liste_y)
a=((20-moyenne_classe)/(maximum_score-moyenne_score)
b=((20-moyenne_classe)/(maximum_score-moyenne_score)*maximum_score)
Notes=[]
for score in liste_y:
Notes.append(round(a*score+b,1)
def tracer_figure(liste1,liste2):
plt.figure(figsize=(14,10))
plt.plot(liste1,liste2, label='Notes PIX élèves')
plt.xlabel('Nom des élèves')
plt.xticks(rotation=50)
plt.ylabel('Notes')
plt.title("Notes PIX classe de première de NSI")
plt.legend()
plt.show()
if__name__="__main__":
tracer_figure(liste_x,Notes)
Titre 6
On affecte à la variable moyenne_classe la réponse de l'utilisateur en base 10
On affecte à la variable fichier l'ouverture du fichier 4_octobre_2023_NSI1.csv",encoding="utf8
On affecte à la variable ligne la lecture des lignes du fichier
On affecte à la variable noms_colonnes la sélection et la séparation par un point virgule des éléments des lignes du fichier
On définit liste_x par une chaîne de caractères vides
On définit la liste liste_y par une chaîne de caractères vides
i prend successivement la valeur de tous les éléments du fichier
On affecte à la variable elements la sélection et la séparation par un point virgule des éléments des lignes du fichier
On ajoute à liste_x les éléments de la 5e colonne
On ajoute à liste_y les éléments de la 10e colonne en les convertissant en base 10
On ferme le fichier
On définit la fonction score_moyenne prenant liste comme argument
On affecte la valeur 0 à la variable somme.
On affecte la valeur 0 à la variable compteur.
I prend successivement toutes les valeurs de la liste.
On ajoute i à la variable somme
On ajoute i à la variable compteur
On renvoi le quotient de somme et compteur dans la console
On affecte à la variable moyenne_score la valeur de score_moyenne prenant liste_y comme argument
on définit la fonction minimum prenant liste comme argument
On affecte à la variable minimum_liste l'élément O de la liste
i prend succesivement toutes les valeurs de la liste.
Si i est plus petit que minimum_liste, alors minimum_liste prend la valeur de i, on renvoi à minimum_liste et on affecte à la variable minimum_score la valeur de minimum(liste_y)
on définit la fonction maximum prenant liste comme argument
On affecte à la variable maximum_liste l'élément O de la liste
i prend succesivement toutes les valeurs de la liste.
Si i est plus grand que maximum_liste, alors maximum_liste prend la valeur de i, on renvoi à maximum_liste et on affecte à la variable maximum_score la valeur de maximum(liste_y)
On affecte à a le quotient de 20-moyenne_classe et maximum_score-moyenne_score
On affecte à b le quotient de 20-moyenne_classe et maximum_score-moyenne_score fois maximum_score
On définit la liste Notes par une chaîne de caractères vides
score prend successivement toutes les valeurs de liste_y
On ajoute à Notes chaque valeurs de score multiplié par a, puis additioné par b arrondi à la 1er décimal
On définit on fonction de traçage de graphique prenant comme argument liste1 et liste2, on définit la taille du graphique.
On nomme l'axe des abscisses 'Nom élèves'
On nomme l'axe des ordonnées 'Notes'
On nomme le graphique 'Notes PIX classe de première de NSI'
Tri et vitesse de tri
import random
from time import *
import matplotlib.pyplot as plt
n=[100,1000,5000,8000]
duree_insertion=[]
duree_selection=[]
duree_sort=[]
duree_sorted=[]
duree_bulle=[]
duree_fusion=[]
duree_rapide=[]
def creation_liste_aleatoire(n):
liste = []
for k in range(n):
liste.append(random.randint(0,100))
return liste
def duree_tri_sort(liste):
t1=time()
liste.sort()
t2=time()
duree=t2-t1
#print("Tri sort, durée = " ,duree)
duree_sort.append(duree)
random.shuffle(liste)
def duree_tri_sorted(liste):
t1=time()
liste2=sorted(liste)
t2=time()
duree=t2-t1
#print("Tri sorted, durée = " ,duree)
duree_sorted.append(duree)
random.shuffle(liste)
def duree_tri_insertion(A):
t1=time()
for j in range (1,len(A)):
key=A[j]
i=j-1
while i>=0 and A[i]>key:
A[i+1]=A[i]
i=i-1
A[i+1]=key
t2=time()
duree=t2-t1
#print("Tri par insertion, durée = " ,duree)
duree_insertion.append(duree)
random.shuffle(liste)
def duree_tri_selection(A):
t1=time()
for i in range (len(A)):
min = i
for j in range(i+1, len(A)):
if A[min]>A[j]:
min=j
tmp=A[i]
A[i]=A[min]
A[min]=tmp
t2=time()
duree=t2-t1
#print("Tri par sélection, durée = " ,duree)
duree_selection.append(duree)
random.shuffle(liste)
def duree_tri_bulle(A):
t1=time()
permutation = 1
passage = 0
while permutation == 1:
permutation = 0
passage = passage + 1
for i in range(0, len(A) - passage):
if A[i] > A[i + 1]:
permutation = 1
# On echange les deux elements
A[i], A[i + 1] = \
A[i + 1],A[i]
t2=time()
duree=t2-t1
#print("Tri à bulle, durée = " ,duree)
duree_bulle.append(duree)
random.shuffle(liste)
def duree_tri_fusion(A):
t1=time()
def fusion(B,C):
if len(A) == 1:
return A
else:
return fusion( triFusion(A[len(A)//2]) , triFusion(A[len(A)//2]) )
if len(B) == 0:
return C
elif len(C) == 0:
return B
elif B[0] <= C[0]:
return [B[0]] + fusion( B[1] , C )
else:
return [C[0]] + fusion( B , C[1] )
t2=time()
duree=t2-t1
#print("Tri par fusion, durée = " ,duree)
duree_fusion.append(duree)
random.shuffle(liste)
def tri_rapide(A):
if not A:
return []
else:
pivot = A[-1]
plus_petit = [x for x in A if x < pivot]
plus_grand = [x for x in A[:-1] if x >= pivot]
return tri_rapide(plus_petit) + [pivot] + tri_rapide(plus_grand)
def duree_tri_rapide(A):
t1=time()
tri_rapide(A)
t2=time()
duree=t2-t1
#print("Tri rapide, durée = " ,duree)
duree_rapide.append(duree)
random.shuffle(liste)
for element in n:
liste= creation_liste_aleatoire(element)
print(element)
duree_tri_insertion(liste)
duree_tri_selection(liste)
duree_tri_sort(liste)
duree_tri_sorted(liste)
duree_tri_bulle(liste)
duree_tri_fusion(liste)
duree_tri_rapide(liste)
def tracer_figure(duree_sort,duree_sorted,duree_insertion, duree_selection,duree_bulle,duree_fusion,duree_rapide,n):
plt.figure(figsize = (16, 10))
plt.plot(n,duree_sort,"o", color='green', label = 'sort', marker="+")
plt.plot(n,duree_sorted,"o", color='blue', label= 'sorted', marker="x")
plt.plot(n,duree_insertion,"o", color='red', label= 'insertion', marker="1")
plt.plot(n,duree_selection,"o", color='grey', label= 'selection', marker="2")
plt.plot(n,duree_bulle,"o", color='orange', label= 'bulle', marker="3")
plt.plot(n,duree_fusion,"o", color='magenta', label= 'fusion', marker="4")
plt.plot(n,duree_rapide,"o", color='cyan', label= 'rapide', marker="8")
plt.xlabel('n')
plt.ylabel('Durée')
plt.title("Durée versus nombre d'éléments à trier ")
plt.legend()
plt.grid(True)
plt.show()
tracer_figure (duree_sort,duree_sorted,duree_insertion, duree_selection,duree_bulle,duree_fusion,duree_rapide,n)
Cette fonction va nous permettre de comparer la durée d'éxécution des différents algorithmes de tri à l'aide d'un graphique.
Pour cela,on va créer la liste n qui va contenir le nombre d'élément présent dans
les autres listes.
On crée des listes à chaînes de caractères vides dans lesquelles on placera les
temps d'éxécution des algorithmes.
On crée une fonction qui va créer des listes avec des nombres aléatoire allant de
0 à 100 et avec autant d'élément que le nombre de chaque élément de n.
On définit la fonction du tri sort en ajoutant un calcul de la durée d'éxécution de l'algorithme
On ajoute la durée d'éxécution dans la liste duree_sort
On définit la fonction du tri sorted en ajoutant un calcul de la durée d'éxécution
de l'algorithme
On ajoute la durée d'éxécution dans la liste duree_sorted
On définit la fonction du tri par insertion en ajoutant un calcul de la durée
d'éxécution de l'algorithme.
On ajoute la durée d'éxécution dans la liste duree_insertion
On définit la fonction du tri par sélection en ajoutant un calcul de la durée
d'éxécution de l'algorithme.
On ajoute la durée d'éxécution dans la liste duree_selection
On définit la fonction du tri à bulle en ajoutant un calcul de la durée
d'éxécution de l'algorithme.
On ajoute la durée d'éxécution dans la liste duree_bulle
On définit la fonction du tri par fusion en ajoutant un calcul de la durée
d'éxécution de l'algorithme.
On ajoute la durée d'éxécution dans la liste duree_fusion
On définit la fonction du tri rapide en ajoutant un calcul de la durée
d'éxécution de l'algorithme.
On ajoute la durée d'éxécution dans la liste duree_rapide
Toutes les fonctions prennent liste comme argument
On définit une fonction de traçage de graphique
prenant toutes les durées d'éxécution en argument.
On affecte à chaque tri une couleur et un symbole
les représentant dans le graphique.
Algorithme glouton
from math import *
x=[0, 54, -15, -23, 47, 12, 28, 30, 14, -88, 2, 92, -6, 13,-27]
y=[0, 41, 99, -40, -20, 0, -99, -5, 14, -98, 16, 97, 55, 43, 3]
distances=[]
maisons=[]
def distance_entre_deux_points (xa,xb,ya,yb):
return sqrt((xb-xa)**2+(ya-yb)**2)
dist_inter=[]
for i in range(1,len(x)):
dist_inter.append(distance_entre_deux_points(0,x[i],0,y[i]))
distances.append(min(dist_inter))
maisons.append(dist_inter.index(min(dist_inter)))
Ce programme va nous aidé à trouver la distance entre la
mairie d'un village et la maison la plus proche