<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Math&#233;matiques</title>
	<link>https://mathematiques.ac-normandie.fr/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://mathematiques.ac-normandie.fr/spip.php?id_auteur=4&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>Programmer en Python</title>
		<link>https://mathematiques.ac-normandie.fr/Programmer-en-Python</link>
		<guid isPermaLink="true">https://mathematiques.ac-normandie.fr/Programmer-en-Python</guid>
		<dc:date>2021-03-16T11:02:27Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Jean-Nicolas Peigney</dc:creator>


		<dc:subject>Seconde</dc:subject>
		<dc:subject>Cycle Terminal</dc:subject>

		<description>&lt;p&gt;Pr&#233;sentation des documents de formation Python&lt;/p&gt;

-
&lt;a href="https://mathematiques.ac-normandie.fr/Numerique-27" rel="directory"&gt;Num&#233;rique&lt;/a&gt;

/ 
&lt;a href="https://mathematiques.ac-normandie.fr/Seconde" rel="tag"&gt;Seconde&lt;/a&gt;, 
&lt;a href="https://mathematiques.ac-normandie.fr/Lycee" rel="tag"&gt;Cycle Terminal&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='https://mathematiques.ac-normandie.fr/sites/mathematiques.ac-normandie.fr/local/cache-vignettes/L150xH149/arton2-32ee4.png?1740666810' class='spip_logo spip_logo_right' width='150' height='149' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;La programmation Python, introduite par le programme de Seconde 2017, a fait l'objet de formations disciplinaires r&#233;parties sur une journ&#233;e en ce qui concerne les math&#233;matiques dans l'Acad&#233;mie de Rouen. Cet article pr&#233;sente les documents de formation.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&#034;spip&#034;&gt;La programmation Python au lyc&#233;e&lt;/h3&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;div class='spip_document_1 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;28&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href=&#034;https://mathematiques.ac-normandie.fr/docrestreint.api/1/26db8582f0c254632718f15ee6c8e4b2232cc2cdd8f2fca802130c9b99ba7547/pdf/livret_python_ac-rouen-nov2017.pdf&#034; class=&#034; spip_doc_lien&#034; title='PDF - 975.4 kio' type=&#034;application/pdf&#034;&gt;&lt;img src='https://mathematiques.ac-normandie.fr/sites/mathematiques.ac-normandie.fr/local/cache-vignettes/L64xH64/pdf-b8aed.svg?1773046372' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-1 '&gt;&lt;strong&gt;Livret de formation Python
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class='spip_document_2 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;16&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href=&#034;https://mathematiques.ac-normandie.fr/docrestreint.api/2/2be4f552345e10e8369a806613b866c4fe950c7e79722dc82f2485bde3949871/pdf/memento_python.pdf&#034; class=&#034; spip_doc_lien&#034; title='PDF - 119.6 kio' type=&#034;application/pdf&#034;&gt;&lt;img src='https://mathematiques.ac-normandie.fr/sites/mathematiques.ac-normandie.fr/local/cache-vignettes/L64xH64/pdf-b8aed.svg?1773046372' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-2 '&gt;&lt;strong&gt;Memento Python
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;h3 class=&#034;spip&#034;&gt;Proposition de correction de certaines activit&#233;s du livret de formation&lt;/h3&gt;&lt;h4 class=&#034;spip&#034;&gt; I - Python : prise en main &lt;/h4&gt;&lt;h5 class=&#034;spip&#034;&gt;A) EduPython : un &#233;diteur parmi d'autres&lt;/h5&gt;&lt;h5 class=&#034;spip&#034;&gt;B) L'interface d'EduPython&lt;/h5&gt;&lt;h5 class=&#034;spip&#034;&gt;C) Premiers programmes&lt;/h5&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;1. Notion de fonction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def discr(a, b, c) : return b**2 - 4*a*c def x_sommet(a, b, c) : return -b / (2 * a)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;discr(5, 3, 1) x_sommet(5, 3, 1)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt; &lt;strong class=&#034;caractencadre-spip spip&#034;&gt;2. Appeler une fonction ; instruction conditionnelle&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def nombre_racines_trinome(a, b, c) : if discr(a, b, c) &lt; 0 : message = &#034;Pas de solution&#034; if discr(a, b, c) = 0 : message = &#034;Une solution unique&#034; if discr(a, b, c) &gt; 0 : message = &#034;Deux solutions&#034; return message&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;discr(5, 3, 1)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;3. Utiliser des biblioth&#232;ques&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;4. Boucles Pour et Tant_que&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script Application 1&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def fibo(k): # Initialisation de la liste L = [1, 1] for compteur in range (2 , k) : n = L[compteur - 2] + L[compteur - 1] L.append(n) return L&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;fibo(10)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def fibo(k, u0, u1): # Initialisation de la liste L = [u0, u1] for compteur in range (2, k) : n = L[compteur - 2] + L[compteur - 1] L.append(n) return L&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;fibo(10,0,1)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;script Application 2&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from math import sqrt def liste_des_termes() : liste = [7] u = 7 while (abs(u - sqrt(5)) &gt; 10**-6) : u = 1 / 2 * (u + 5 / u) liste.append(u) return(liste)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;liste_des_termes()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 class=&#034;spip&#034;&gt; D) Suite de Syracuse et repr&#233;sentations graphiques&lt;/h5&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;1. Suite de Syracuse : calcul des termes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def syracuse(u) : liste = [u] while u != 1 : if u % 2 == 0 : u = u // 2 else : u = u * 3 + 1 liste.append(u) return liste&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;syracuse(17)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;2. Repr&#233;sentation graphique d'une suite de Syracuse&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;import matplotlib.pyplot as plt def syracuse(u) : liste = [u] while u != 1 : if u % 2 == 0 : u = u // 2 else : u = u * 3 + 1 liste.append(u) return liste def graph_syracuse(u) : Y_liste = syracuse(u) X_liste = range(len(Y_liste)) plt.plot(X_liste , Y_liste , &#034;b.&#034;) plt.show() def graph_double_syracuse(u,v) : Yu_liste = syracuse(u) Xu_liste = range(len(Yu_liste)) Yv_liste = syracuse(v) Xv_liste = range(len(Yv_liste)) plt.plot(Xu_liste , Yu_liste , &#034;b.&#034;) plt.plot(Xv_liste , Yv_liste , &#034;r*&#034;) plt.show()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;graph_syracuse(17) graph_double_syracuse(17, 13)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 class=&#034;spip&#034;&gt;II - Premi&#232;res applications de Python&lt;/h4&gt;&lt;h5 class=&#034;spip&#034;&gt;A) Python d&#232;s la seconde&lt;/h5&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;1. Applications rapides en g&#233;om&#233;trie rep&#233;r&#233;e&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def milieu(xA, yA, xB, yB) : return [(xA + xB) / 2 , (yA + yB) / 2] def parall&#233;logramme(A, B, C, D) : # A,B,C,D sont des listes if milieu(A[0], A[1], C[0], C[1]) == milieu(B[0], B[1], D[0], D[1]) : return &#034;ABCD est un parall&#233;logramme&#034; else : return &#034;ABCD n'est pas un parall&#233;logramme&#034;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;milieu(1, 1, 3, 5) parall&#233;logramme([1, 1], [2, 4], [3, 5], [4, 6])&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;2. D&#233;terminer l'&#233;quation d'une droite passant par deux points&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def coeff(x1, y1, x2, y2): a = (y1 - y2) / (x1 - x2) return a def ord_origine(x1, y1, a) : b = y1 - a*x1 return b def equation(x1, y1, x2, y2) : a = coeff(x1, y1, x2, y2) b = ord_origine(x1, y1, a) if b &gt; 0 : msg = &#034;L'&#233;quation de votre droite est : y=&#034; + str(a) + &#034;x+&#034; + str(b) elif b &lt; 0 : msg = &#034;L'&#233;quation de votre droite est : y=&#034; + str(a) + &#034;x&#034; + str(b) else : msg = &#034;L'&#233;quation de votre droite est : y=&#034; + str(a) + &#034;x&#034; return(msg)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;equation(1, 1, 3, 5)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;3. Petit jeu &#171; Devine le nombre auquel je pense &#187;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from random import * def jeu(n) : nb = randint(1, n) ch = nb + 1 # ch est &#224; coup s&#251;r diff&#233;rent de nb au d&#233;part compteur = 1 print(&#034;Je pense &#224; un nombre entier entre 1 et 100, &#224; vous de deviner lequel...&#034;) while nb != ch : ch = int(input(&#034;Votre proposition ?&#034;)) if ch &lt; nb : print(&#034;Trop petit&#034;) if ch &gt; nb : print(&#034;Trop grand&#034;) compteur = compteur + 1 return &#034;Bravo, le nombre &#233;tait &#034; + str(ch) + &#034; , vous avez gagn&#233; au bout de &#034; + str(compteur) + &#034; essais&#034;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;jeu(100)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;4. Statistiques&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from random import * import matplotlib.pyplot as plt # (partie graphique) # Cr&#233;ation d'une s&#233;rie de 20 valeurs al&#233;atoires entre 1 et 100 serie = [randint(1, 100) for i in range(20)] # Statistiques - indicateurs position et dispersion def moyenne(L) : somme = 0 for compteur in range(len(L)) : somme = somme + L[compteur] return somme / len(L) def quartiles(L) : L.sort() # Tri de la liste L if len(L)%2 == 0 : mediane = (L[len(L) // 2 - 1] + L[len(L) // 2]) / 2 else : mediane = L[len(L) // 2] if len(L)%4 == 0 : Q1 = L[len(L) // 4 - 1] else : Q1 = L[len(L) // 4] if (3*len(L))%4 == 0 : Q3 = L[(3 * len(L)) // 4 - 1] else: Q3 = L[(3 * len(L)) // 4] return [Q1, mediane, Q3] # Statistiques - Echantillonnage univers=[1, 2, 2, 4, 5, 6] # Choisir au hasard un nombre dans la liste univers choice(univers) def echantillon(L,n) : echant = [] for compteur in range(n) : echant.append(choice(L)) return echant def frequence(L,issue) : effectif = 0 for compteur in range(len(L)) : if L[compteur] == issue : effectif = effectif + 1 return effectif / len(L) def frequencegraph(L,issue) : # necessite matplotlib.pyplot effectif = 0 X_liste = [] Y_liste = [] for compteur in range(len(L)) : if L[compteur] == issue: effectif = effectif + 1 X_liste.append(compteur) Y_liste.append(effectif/(compteur + 1)) plt.plot(X_liste,Y_liste, &#034;b.&#034;) plt.show()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;serie = [randint(1, 100) for i in range(20)] serie moyenne(serie) quartiles(serie) univers=[1, 2, 2, 4, 5, 6] ech = echantillon(univers, 10) ech frequence(ech, 4) frequencegraph(ech, 4)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;5. Instruction conditionnelle&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;#Calcul du pgcd avec l'algorithme des diff&#233;rences def pgcd(a,b) : while a != b : # a diff&#233;rent de b if a &gt; b : a = a - b else : b = b - a return a def irreductible(num,denum) : d = pgcd(num, denum) # Appel &#224; la fonction pgcd if d == 1 : # d &#233;gal &#224; 1 retour = &#034;la fraction est irr&#233;ductible&#034; else : num2 = num // d # Division enti&#232;re denum2 = denum // d msg = &#034;la fraction &#034; + str(num) + &#034;/&#034; + str(denum) + &#034; se simplifie en &#034; + str(num2) + &#034;/&#034; + str(denum2) return(msg) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;irreductible(25,15)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;6. Arithm&#233;tique en seconde : pgcd et th&#233;or&#232;me de C&#233;saro&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from random import * def pgcd(a,b) : while b &gt; 0 : r = a % b a = b b = r return a # question 1 : def simulation_cesaro(n): f = 0 for i in range(n) : a = randint(1, 100) b = randint(1, 100) if pgcd(a,b) == 1 : f = f + 1 f = f / n return f # question 2 : def proba_cesaro() : num = 0 for a in range(1, 101) : for b in range(1, 101) : if pgcd(a,b) == 1 : num = num + 1 p = num / (100**2) return p&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;simulation_cesaro(100) proba_cesaro()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 class=&#034;spip&#034;&gt;B) Python en prolongement de Scratch et de la calculatrice&lt;/h5&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;1. La Tortue Python en prolongement de Scratch&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; ATTENTION &lt;/strong&gt; : &#233;trangement, une fois sur deux, la console r&#233;pondra par un message d'erreur finissant sur :&lt;/p&gt;
&lt;center&gt;&lt;font color = red&gt;&lt;strong&gt;turtle.Terminator&lt;/strong&gt;&lt;/font color&gt;&lt;/center&gt;
&lt;p&gt;Il suffit de relancer la commande dans la console ...&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from turtle import * # Triangle &#233;quilateral def triangle_equi(longueur) : pensize(2) up() clear() setheading(0) goto(-100, -100) down() for i in range(3) : forward(longueur) # La tortue avance de longueur left(120) # La tortue tourne &#224; gauche de 120&#176; up() mainloop() # 1. Polygone r&#233;gulier &#224; n c&#244;t&#233;s def poly_reg(n, longueur) : for i in range(n) : forward(longueur) # La tortue avance de longueur left(360 / n) # La tortue tourne &#224; gauche de 360&#176;/n # Programme d'application du polygone r&#233;gulier def trace_poly_reg(n,longueur) : pensize(2) up() clear() setheading(0) goto(-100, -100) down() poly_reg(n, longueur) up() mainloop()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;triangle_equi(200) trace_poly_reg(20, 50)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;script &lt;strong&gt;&#224; rajouter &#224; la suite du script pr&#233;c&#233;dent&lt;/strong&gt; &lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# 2. Rosace def rosace() : up() clear() for compteur in range(6) : setheading(60 * compteur) goto(0, 0) down() poly_reg(6, 100) up() mainloop()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;rosace()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;script &lt;strong&gt;&#224; rajouter &#224; la suite du script pr&#233;c&#233;dent&lt;/strong&gt; &lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# 3. Pour aller plus loin from math import sqrt def prochain_point(u, v) : return [u[0] + (v[0] - u[0]) / 4, u[1] + (v[1] - u[1]) / 4] def carre(n) : # n : nb &#233;tapes avec carr&#233; de c&#244;t&#233; 300 speed(0) color(&#034;black&#034;) up() clear() goto(-200, -200) down() for compteur in range(n) : setheading(18.43494882 * compteur) poly_reg(4, 300 * (sqrt(10)/4)**compteur) forward((300 * (sqrt(10) / 4)**compteur) / 4) up() def trace_figure(n) : carre(n) mainloop() def fourmi(n) : # n : nb &#233;tapes avec carr&#233; de c&#244;t&#233; 300 carre(n) longueur = 0 u = [-200, -200] v = [-125, -200] goto(-200, -200) down() color(&#034;red&#034;) for compteur in range(n) : setheading(18.43494882 * compteur) forward((300 * (sqrt(10) / 4)**compteur) / 4) longueur +=(300 * (sqrt(10) / 4)**compteur) / 4 u, v = v, prochain_point(u, v) write(longueur) up() mainloop()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;trace_figure(10) fourmi(10)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;2. Autour des courbes de fonctions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from math import * import matplotlib.pyplot as plt # Exploration des fonctions de variable r&#233;elle avec Python def f(x) : return x**2 - exp(x / 2) def courbe(f,a,b) : X = [] Y = [] for k in range(a, b + 1) : X.append(k) Y.append(f(k)) plt.plot(X,Y,&#034;b-&#034;) plt.show() def courbe_pas(f, a, b, pas) : X = [] Y = [] while a &lt; b : X.append(a) Y.append(f(a)) a = a + pas plt.plot(X,Y,&#034;b-&#034;) plt.show()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# Mise en oeuvre : courbe de la fonction f definie au debut, pas de 0.1 courbe_pas(f,-2, 10, 0.1) # Mise en oeuvre : courbe de la fonction f definie au debut, pas de 0.1 courbe_pas(f,-2, 10, 0.1)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from math import * import matplotlib.pyplot as plt # Application &#224; la parabole def abscisse_minmax(a, b, c) : return -b/(2 * a) def image(a, b, c, x) : return a* x**2 + b*x + c def tracer_courbe(a, b, c, pas) : # Calcul des coordonne&#233;es du min/max # pour d&#233;finir un intervalle l'incluant x_minmax = abscisse_minmax(a, b, c) y_minmax = image(a, b, c, x_minmax) debut = x_minmax - 5 fin = x_minmax + 5 X_liste = [] Y_liste = [] curseur = debut while curseur &lt; fin : X_liste.append(curseur) Y_liste.append(image(a, b, c, curseur)) curseur = curseur + pas plt.plot(X_liste , Y_liste , &#034;r-&#034;) # Un point bleu pour le sommet plt.plot(x_minmax , y_minmax , &#034;b.&#034;) plt.grid() # Affichage de la grille plt.show()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;tracer_courbe(1, 2, 3, 0.1)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;3. M&#233;thode de Monte-Carlo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from random import * from math import * import matplotlib.pyplot as plt def montecarlo(n) : # n &#233;tant le nombre de tirages de points al&#233;atoires &#224; effectuer nb_points_endessous = 0 for compteur in range(n) : x = random() # x prend une valeur al&#233;atoire entre 0 et 1 selon la loi uniforme sur [0;1] y = random() if y &lt; sqrt(1 - x**2) : nb_points_endessous = nb_points_endessous + 1 # Gare &#224; la double indentation ! f = nb_points_endessous / n return f def montecarlo2(n) : # n &#233;tant le nombre de tirages de points al&#233;atoires &#224; effectuer plt.axis(&#034;equal&#034;) # rep&#232;re orthonorm&#233; plt.grid() ## initialisation des variables nb_points_endessous = 0 X_liste_rouge = [] Y_liste_rouge = [] X_liste_bleu = [] Y_liste_bleu = [] for compteur in range(n) : x = random() # x prend une valeur al&#233;atoire entre 0 et 1 selon la loi uniforme sur [0;1] y = random() if y &lt; sqrt(1-x**2) : nb_points_endessous = nb_points_endessous + 1 X_liste_rouge.append(x) # le point est en-dessous, il est rouge Y_liste_rouge.append(y) # On stocke ses coordonn&#233;es dans les listes &#034;rouges&#034; else : X_liste_bleu.append(x) # le point est en-dessous, il est rouge Y_liste_bleu.append(y) # On stocke ses coordonn&#233;es dans les listes &#034;bleues&#034; f = nb_points_endessous / n # Trac&#233; du graphique : les 2 tableaux de valeurs # Premier tableau : les points rouges plt.plot(X_liste_rouge , Y_liste_rouge , &#034;r.&#034;) # Second tableau : les points bleus plt.plot(X_liste_bleu , Y_liste_bleu , &#034;b.&#034;) # Affichage du graphique plt.show() # renvoi de la fr&#233;quence return f&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;montecarlo(1000) montecarlo2(1000)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 class=&#034;spip&#034;&gt;III - Python : pour aller plus loin&lt;/h4&gt;&lt;h5 class=&#034;spip&#034;&gt;A) Manipulations plus expertes&lt;/h5&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;1. Fonction exponentielle et courbe d'Euler&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def methode_euler(x,y,h,n) : X_liste=[x] Y_liste=[y] for i in range(n) : x = x+h y = y+y*h X_liste.append(x) Y_liste.append(y) return X_liste,Y_liste import matplotlib.pyplot as plt # Configuration des axes ax=plt.gca() ax.spines[&#034;bottom&#034;].set_position(&#034;zero&#034;) # axe positionn&#233; &#224; 0 ax.spines[&#034;left&#034;].set_position(&#034;zero&#034;) # axe positionn&#233; &#224; 0 ax.spines[&#034;right&#034;].set_color(&#034;none&#034;) # pas de couleur &#224; droite ax.spines[&#034;top&#034;].set_color(&#034;none&#034;) # pas de couleur en haut ax.xaxis.set_ticks_position(&#034;bottom&#034;) # Position des abscisses en dessous ax.yaxis.set_ticks_position(&#034;left&#034;) # Position des ordonn&#233;es &#224; gauche plt.grid() # grille activ&#233;e # Partie de la courbe pour x &gt; 0 X_liste1, Y_liste1 = methode_euler(0, 1, 0.1, 20) # Partie de la courbe pour x &lt; 0 X_liste2, Y_liste2 = methode_euler(0, 1, -0.1, 20) # Concat&#233;nation des listes X_liste = X_liste1 + X_liste2 Y_liste = Y_liste1 + Y_liste2 # Trac&#233; du graphique plt.plot(X_liste,Y_liste,&#034;b.&#034;) # Affichage du graphique plt.show()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;2. Algorithme de Kaprekar&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script de la version 1&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;def grand(n) : chiffre_unite = n % 10 chiffre_dizaine = (n % 100) // 10 chiffre_centaine = n // 100 maxi = max(chiffre_centaine,chiffre_dizaine,chiffre_unite) mini = min(chiffre_centaine,chiffre_dizaine,chiffre_unite) moyen = (chiffre_centaine+chiffre_dizaine+chiffre_unite)-(maxi+mini) s = maxi*100 + moyen*10 + mini return s def petit(n) : chiffre_unite = n % 10 chiffre_dizaine = (n % 100) // 10 chiffre_centaine = n // 100 maxi = max(chiffre_centaine,chiffre_dizaine,chiffre_unite) mini = min(chiffre_centaine,chiffre_dizaine,chiffre_unite) moyen = (chiffre_centaine+chiffre_dizaine+chiffre_unite)-(maxi+mini) s = mini*100 + moyen*10 + maxi return s def kaprekar(n) : u = n liste_valeurs = [u] while u != 495 : u = grand(u) - petit(u) liste_valeurs.append(u) return liste_valeurs&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;kaprekar(217)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;script de la version 2&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# Dans toutes ces fonctions : la premi&#232;re ligne (&#034;assert&#034;) est optionnelle. # Elle sert &#224; v&#233;rifier que le &#034;n&#034; entr&#233; est de type entier. def petit_chaine(n) : assert type(n) == int , &#034;n n'est pas entier&#034; chaine = str(n) # Conversion de n en chaine liste_triee = sorted(chaine) # Tri de la chaine ; le r&#233;sultat est une liste chaine = &#034;&#034;.join(liste_triee) # Concat&#233;nation de la liste en une chaine return int(chaine) # On retourne la chaine convertie en entier def inversion(n) : assert type(n) == int , &#034;n n'est pas entier&#034; chaine = str(n) # Conversion de n en chaine longueur = len(chaine) # Longueur de la chaine r = &#034;&#034; # Initialisation de la variable de retour (chaine) for k in range(longueur): # Reconstruction de la chaine r = r + chaine[longueur-1-k] # en partant du dernier caract&#232;re return int(r) # Variante pour seulement 3 chiffres &#224; inverser def inversion_trois_chiffres(n): # n entier &#224; 3 chiffres assert type(n) == int , &#034;n n'est pas entier&#034; N = str(n) L = [N[2],N[1],N[0]] return int(&#034;&#034;.join(L)) def kaprekar(n) : assert type(n) == int, &#034;n n'est pas entier&#034; u = n liste_valeurs = [u] while u != 495 : u = petit_chaine(u) u = inversion(u)-u liste_valeurs.append(u) return liste_valeurs&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;kaprekar(436)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;script de la version 3&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# Dans toutes ces fonctions : la premi&#232;re ligne (&#034;assert&#034;) est optionnelle. # Elle sert &#224; v&#233;rifier que le &#034;n&#034; entr&#233; est de type entier. def petit_par_minimum(n) : assert type(n) == int , &#034;n n'est pas entier&#034; liste = list(str(n)) # Conversion de n en chaine, puis en liste k = len(liste) # Longueur de la liste r = &#034;&#034; # Initialisation de la variable de retour (chaine) while k &gt; 0 : # Tant que la liste n'est pas vide mini = min(liste) # Trouver le plus petit &#233;l&#233;ment de la liste liste.remove(mini) # L'enlever r = r + mini # Le placer dans la chaine r&#233;sultat k = k - 1 # La taille de la liste d&#233;croit return int(r) # On retourne la chaine convertie en entier # Variante sans calcul de la longueur de la liste def petit_par_minimum_variante(n) : # n entier &#224; 3 chiffres assert type(n) == int, &#034;n n'est pas entier&#034; N1 = str(n) L1 = [N1[0], N1[1], N1[2]] L2 = [] while L1 != [] : element = min(L1) L1.remove(element) L2.append(element) return int(&#034;&#034;.join(L2)) def inversion(n) : assert type(n) == int , &#034;n n'est pas entier&#034; chaine = str(n) # Conversion de n en chaine longueur = len(chaine) # Longueur de la chaine r = &#034;&#034; # Initialisation de la variable de retour (chaine) for k in range(longueur) : # Reconstruction de la chaine r = r + chaine[longueur - 1 - k] # en partant du dernier caract&#232;re return int(r) # Variante pour seulement 3 chiffres &#224; inverser def inversion_trois_chiffres(n) : # n entier &#224; 3 chiffres N = str(n) L = [N[2], N[1], N[0]] return int(&#034;&#034;.join(L)) def kaprekar(n) : assert type(n) == int , &#034;n n'est pas entier&#034; u = n liste_valeurs = [u] while u != 495 : u = petit_par_minimum(u) u = inversion(u) - u liste_valeurs.append(u) return liste_valeurs&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;kaprekar(517)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;3. La travers&#233;e du pont&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;import matplotlib.pyplot as plt from random import * def traversee_une_fois() : # R&#233;glages d'appoint de la fen&#234;tre graphique ax = plt.gca() ax.spines[&#034;bottom&#034;].set_position(&#034;zero&#034;) plt.grid(True) plt.plot([0, 10], [-2, -2], &#034;-b&#034;) # Trace des plt.plot([0, 10], [2,2], &#034;-b&#034;) # bords du pont plt.axis([0, 10, -3, 3]) # Initialisation des listes # des abscisses et ordonn&#233;es du marcheur X = [0] Y = [0] while X[-1] &lt; 10 and abs(Y[-1]) &lt;= 2 : de = randint(0,2) X.append(X[-1] + 1) Y.append(Y[-1] + de - 1) plt.plot(X, Y, &#034;-or&#034;) plt.show() if abs(Y[-1]) &lt;= 2 and X[-1] == 10 : s = 1 else : s = 0 return s def traversee_une_fois_sans_graphe() : X = [0] Y = [0] while X[-1] &lt; 10 and abs(Y[-1]) &lt;= 2 : de = randint(0, 2) X.append(X[-1] + 1) Y.append(Y[-1] + de - 1) if abs(Y[-1]) &lt;= 2 and X[-1] == 10 : s = 1 else : s = 0 return s def traversee_multiple(n): # n travers&#233;es effectif = 0 for compteur in range(n) : if traversee_une_fois_sans_graphe() == 1 : effectif = effectif + 1 return effectif / n def explore_chemin(n, y) : r = 0 if n == 0 : if abs(y) &lt;= 2 : r = 1 else : r = 0 else : if abs(y) &lt;= 2 : for p in [-1, 0, 1] : r = r + explore_chemin(n - 1, y + p) return r&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;traversee_une_fois() traversee_multiple(10) explore_chemin(3, 0)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 class=&#034;spip&#034;&gt;B) Albums de vignettes et raret&#233; ressentie : le probl&#232;me du collectionneur&lt;/h5&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;1. &#201;criture d'un algorithme en Python mod&#233;lisant le probl&#232;me&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;from random import * from math import * import matplotlib.pyplot as plt ###################################### # Ecriture d'un algorithme en Python mod&#233;lisant le probl&#232;me ###################################### def collection() : ALBUM = [] FREQ = [] for compteur in range(480) : ALBUM.append(0) while min(ALBUM) == 0 : ALBUM[randint(0, 479)] += 1 for compteur in range(480) : FREQ.append(ALBUM[compteur] / sum(ALBUM)) p = 1 / 480 freq_mini = p - 1.96 * sqrt(p * (1 - p) / sum(ALBUM)) freq_maxi = p + 1.96 * sqrt(p * (1 - p) / sum(ALBUM)) return max(ALBUM), sum(ALBUM), freq_mini, freq_maxi, FREQ&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;collection()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;2. Taille de la collection variable&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script &lt;strong&gt;&#224; rajouter &#224; la suite du script pr&#233;c&#233;dent&lt;/strong&gt; &lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;###################################### # Taille de la collection variable ###################################### def album(n) : # n taille de la collection ALBUM = [] for compteur in range(n) : ALBUM.append(0) while min(ALBUM) == 0 : ALBUM[randint(0, n - 1)] += 1 return sum(ALBUM) def achats_moyen(n,e) : # n taille collection, e nombre d'essais nb_achats = 0 for compteur in range(e) : nb_achats = nb_achats + album(n) return nb_achats / e def album_graph() : X_liste = [] Y_liste = [] for compteur in range(1, 480+1) : X_liste.append(compteur) Y_liste.append(achats_moyen(compteur, 10)) plt.plot(X_liste, Y_liste,&#034;b.&#034;) plt.show()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;album_graph()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong class=&#034;caractencadre-spip spip&#034;&gt;3. Nombre de collectionneurs variable&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;script &lt;strong&gt;&#224; rajouter &#224; la suite du script pr&#233;c&#233;dent&lt;/strong&gt; &lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='python spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;###################################### # Nombre de collectionneurs variables ###################################### def album_echange(n,p) : # n taille collection, p collectionneurs ALBUM = [] for compteur in range(n) : ALBUM.append(0) while min(ALBUM) &lt; p : ALBUM[randint(0,n-1)] += 1 return sum(ALBUM) def achats_moyen2(n, p, e) : # n taille collection, p collectionneurs, e nombre d'essais nb_achats = 0 for compteur in range(e) : nb_achats = nb_achats + album_echange(n, p) return (nb_achats / e) / p def album_graph2(n, p, e) : # n taille collection, p collectionneurs, e nombre d'essais X_liste = [] Y_liste = [] for compteur in range(1, p + 1) : X_liste.append(compteur) Y_liste.append(achats_moyen2(n,compteur,e)) plt.plot(X_liste, Y_liste,&#034;b.&#034;) plt.show()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;console&lt;/i&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;album_graph2(200, 20, 100) album_graph2(480, 2, 10) # Si votre ordinateur le permet ...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 class=&#034;spip&#034;&gt;Annexe 1 - Python : ressources acad&#233;miques compl&#233;mentaires&lt;/h3&gt;&lt;h3 class=&#034;spip&#034;&gt;Annexe 2 - Ressources en ligne sur la programmation Python&lt;/h3&gt;&lt;h3 class=&#034;spip&#034;&gt;Annexe 3 - Installation de Python sous diverses plates-formes (Windows, GNU/Linux...)&lt;/h3&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
