#!/usr/bin/env python3 ################ ## ## ## Exercice 4 ## ## ## ################ def remplace(x,y,L): for i in range(len(L)): if L[i] == x: L[i] = y ################ ## ## ## Exercice 5 ## ## ## ################ def unique(x,L): déjà_trouvé = False for e in L: if e==x and déjà_trouvé: return False elif e==x: déjà_trouvé = True return déjà_trouvé def est_permutation(L): n=len(L) for e in L: if not( 0<=e and e k est premier # Si L[k] = False -> k n'est pas premier return [ k for k in L if k != False] ################ ## ## ## Exercice 7 ## ## ## ################ ## Question 7.1 from random import shuffle def liste_vers_chaîne(L): s="" for e in L: s = s+e return s def mélange(mot): n=len(mot) if n<=2: # si le mot est très court, rien à faire ! return mot else: centre=list(mot[1:n-1]) # On aurait pu créer la liste avec une boucle shuffle(centre) # on mélange return mot[0] + liste_vers_chaîne(centre) + mot[n-1] ## Question 7.2 def liste_des_mots(m): ponctuation= " :,.;!?'" liste_mots = [] mot_en_cours = '' for c in m: if c in ponctuation: # Si deux ponctuations se suivent on n'ajoute pas de mot vide. if mot_en_cours != '': liste_mots.append(mot_en_cours) # Dans tous les cas liste_mots.append(c) mot_en_cours = '' else: mot_en_cours = mot_en_cours + c # On est arrivé à la fin. # On ajoute le dernier mot à la liste if mot_en_cours != '': liste_mots.append(mot_en_cours) return liste_mots ## Question 7.3 def mélange_mots(m): mots_normaux = liste_des_mots(m) mots_mélangés = [] for mot in mots_normaux: mots_mélangés.append(mélange(mot)) return liste_vers_chaîne(mots_mélangés) ## Question 7.4 texte = 'Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité.' print(mélange_mots(texte)) # Et voici l'article deux si vous voulez voir sur un texte un peu plus long. texte1 = '1. Chacun peut se prévaloir de tous les droits et de toutes les libertés proclamés dans la présente Déclaration, sans distinction aucune, notamment de race, de couleur, de sexe, de langue, de religion, d\'opinion politique ou de toute autre opinion, d\'origine nationale ou sociale, de fortune, de naissance ou de toute autre situation.' texte2 = '2. De plus, il ne sera fait aucune distinction fondée sur le statut politique, juridique ou international du pays ou du territoire dont une personne est ressortissante, que ce pays ou territoire soit indépendant, sous tutelle, non autonome ou soumis à une limitation quelconque de souveraineté.' print(mélange_mots(texte1 + '\n' + texte2)) ################ ## ## ## Exercice 8 ## ## ## ################ ## Question 8.1 def effectifs(L): Xmin=min(L) Xmax=max(L) E = [ (i,0) for i in range(Xmin,Xmax+1) ] for e in L: (ee,xx) = E[e-Xmin] # ee=e E[e-Xmin] = (ee,xx+1) return E L = [10,5,5,10,7,10,10,5] ## Question 8.3 # À mettre au début du fichier from random import randint def hasard(): i=0 for j in range(100): i+=randint(0,1) return i ## Question 8.4 L = [ hasard() for i in range(10000) ] import tkinter as tk from math import * ## Question 8.2 Titre = "Afficheur statistique" Hauteur = 500 Largeur = Hauteur marge=Hauteur/10 root = tk.Tk() root.title(Titre) Dessin = tk.Canvas(root,height=Hauteur,width=Largeur,bg="white") Dessin.pack() # Quelques variables globales eff=effectifs(L) Xmin=eff[0][0] Xmax=eff[-1][0] Ymax=max([y for (x,y) in eff]) Δx = (Largeur-2*marge)/(Xmax-Xmin+1) Δy = (Hauteur-2*marge)/Ymax def convertir_coordonnée(x,y): X = marge+x*Δx Y = Hauteur - (marge+y*Δy) return (X,Y) def afficher_rectangle(i,j): p=convertir_coordonnée(i,0) q=convertir_coordonnée(i+1,j) Dessin.create_rectangle(p,q,fill="#9999FF") for x in range(Xmin,Xmax+1): (i,j)=eff[x-Xmin] afficher_rectangle(i-Xmin,j) root.mainloop()