Shift+Entré
et l'ordinateur calcule le résultat.
range(20)
désigne l'intervalle des nombres entiers de 0 (inclus) à 20 (exclu). range(1,20)
désigne l'intervalle des nombres entiers de 1 (inclus) à 20 (exclu).
i
prend successivement les valeurs de 0 à 19 et à chaque tour de la boucle l'instruction print(i)
est exécutée. Notez bien l'indentation du code, n'oubliez pas les :
for i in range(20): print(i)
Éventuellement en relisant le TP de la dernière fois, calculez $\sum_{k=1}^{20}\frac{1}{k^2}$
En remplaçant $20$ par $100$ ou plus, pouvez-vous constatez que cette somme converge vers $\frac{\pi^2}{6}$?
Écrire une boucle qui affiche tous les diviseurs de 28.
Recopier et exécuter le programme:
n = 28 somme = 0 for i in range(1,28): if n%i==0: somme = somme + i print(somme) if n==somme: print(n," est parfait.")
Un nombre est parfait s'il est égal à la somme de ses diviseurs stricts (ex: $1+2+3=6$).
Affichez tous les nombres parfaits inférieurs à $1000$.
Rappelons que les mathématicien-nes ne connaissent pas de nombres parfaits impairs et que nous ne savons pas démontrer qu'il n'en existe pas
Vous pouvez manipuler du texte, en le stockant simplement dans une variable:
mot = "bla" print (mot,mot,mot)et même:
mot = "bla" mot = mot+mot+mot print(mot)
La 3e lettre d'un mot est obtenue par indexation:
print(mot[2])
Comptez le nombre de a dans la chaine de caractère:
magie="abracadraba, sesame ouvre-toi, shazam"
On peut créér des chaines de caractères à la volée et faire des boucles sur les lettres d'une chaine. Essayez l'exemple suivant, pouvez-vous l'améliorer pour vous rapprocher de la ritournelle enfantine ?
chanson = "buvons un coup, ma serpette est perdue, mais le manche est revenu" chanson_deformee="" for x in chanson: if x=='a' or x=='u' or x=='e': x='o' chanson_deformee = chanson_deformee + x print(chanson_deformee)
En vous inspirant de l'exemple ci-dessus, écrire un programme qui enlève toutes les voyelles d'une chaine de caractère.
Remarque: Il y a encore de nos jours une difficulté avec les caractères non-ascii, il n'est pas certain que votre programme gère facilement les accents et autres caractères non-anglais.
Écrivez un programme qui affiche le poème des Belles Familles de Jacques Prévert.
Votre programme doit comporter une boucle de 1 à 18 (avec un cas particulier pour le Hutin). Pour l'instant nous n'écrirons pas en chiffres romains.
En effectuant une boucle à l'envers (range(17,-1,-1)
), affichez "bonjour philippine" de droite à gauche.
Vous pouvez obtenir la longueur d'une chaine de caractère par len(abracadabra)
(qui vaut 11) et donc afficher un palindrome:
message = "elu par cette crapule" envers = "" for i in range(len(message)): envers = envers + message[len(message)-i-1] print envers
(bien sûr il y a plus simple, par exemple en utilisant envers = message[i] + envers
)
</p>Les listes fonctionnent comme les chaines de caractère. C'est une suite de données stockées en mémoire. On peut accéder à une donnée précise par son indice. On peut concaténer des listes.</p>
range(10)
est une liste. Affichez-la.
carres=[] for i in range(10): carres.append(i*i) print(carres)Crée et affiche la liste des 10 premiers carrés.
Créez la liste des diviseurs de 2022.
On peut remplir une liste de nombres choisis au hasard:
from random import * hasard = [] for i in range(20): hasard.append(randint(1,3)) print(hasard)
Notez l'importation du module random
. Cette importation n'a bseoin d'être faite qu'une seule fois.
À partir de la liste hasard
construite aléatoirement ci-dessus, afficher le nombre de 1
dans hasard
.
Ce nombre est-il proche d'un tiers ?
À partir des morceaux de code ci-dessus répétez l'opération cent fois:
Que calcule le programme:
max = 0 current = 0 for x in hasard: if x==1: current += 1 else: if current > max: max = current current = 0 print(max)
En incluant le programme ci-dessus dans une boucle qui tire 100 listes de 20 nombres au hasard entre 1 et 3, déterminer le nombre moyen de 1 consécutifs dans ces listes aléatoires.
Modifiez le programme ci-dessus pour qu'il calcule le nombre maximal d'occurences consécutives d'un chiffre dans hasard
. (Ci-dessus nous avons calculé le nombre maximal d'occurences consécutives de 1).
Écrivez sur une feuille de papier une suite de vingt nombres 0
ou 1
choisis au hasard par votre cerveau.
Une fois cela fait lisez la suite (pas avant).
Quelle est l'espérance du nombre maximal d'occurences consécutives d'un chiffre dans une liste de 20 nombres choisis au hasard parmi 0
ou 1
?
Pour répondre à cette question de probabilités, créez des listes au hasard comme ci-dessus et calculez la moyenne de ce maximum d'occurences consécutives.
Votre liste sur votre papier ressemble-t-elle a une liste tirée au hasard ?
C'est avec des tests de ce genre que l'on peut détecter des manipulations humaines dans des séries de nombres qui devraient être aléatoires (nombres de voies dans les bureaux de vote aux élections en Russie, trucage des cours de la bourse, etc.)
On peut aussi citer le paradoxe des anniversaires: dans une classe de 57 élèves il y a 99% de chances que deux élèves aient leur anniversaire le même jour.
Créer une liste aléatoire de 57 nombres pris entre 1 et 365 et l'afficher. Y a-t-il deux anniversaires le même jour ?
Évidemment, il est fastidieux de repérer soi-même, deux fois le même anniversaire dans la liste.
Essayons d'automatiser cette recherche.
En imbriquant deux boucles qui parcourent la liste des dates d'anniversaire, déterminer s'il y a deux fois la même date ou pas.
En répétant le test de nombreuses fois (et en faisant varier le nombre d'élèves), estimez la probabilité qu'il y ait deux anniversaires le même jour dans une classe.