top of page
Ballons 3D aux couleurs de la fierté

Drussydinhia

Bourse

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

bottom of page