Page 2 sur 3
Scripts à tester
Etape 1 - Affectation des variables et boucle bornée
Saisir les quelques lignes du programme suivant puis lancez le!
Etape 1 - Script
valeur=1
print("Valeur =" ,valeur)
liste=[]
print("Ceci est une liste vide", liste)
liste=[1,2,"3emeterme"]
print("Voici les termes de la liste",liste)
liste.append("ajout dans liste")
liste.append(5)
print("Voici les termes de la liste",liste)
for c in range(3):
print (c)
#commentaire: le print du dessus est dans la boucle for
# celui du dessous ne l'est pas !
print("Dernière valeur de c=",c)
Etape 1 - Exécution et analyse
>>> %Run test.py
Valeur = 1
Ceci est une liste vide []
Voici les termes de la liste [1, 2, '3emeterme']
Voici les termes de la liste [1, 2, '3emeterme', 'ajout dans liste', 5]
0
1
2
Dernière valeur de c= 2
- 1 est affecté à la variable valeur
- liste=[] déclare une liste de nom liste ne contenant aucune valeur
- le print qui suit affiche cette liste vide donc je ne vois rien entre les [ ]
- la ligne suivante affecte 3 valeurs à la liste vide
- la méthode .append appliquée à la variable liste ajoute une 4ème puis une 5ème valeur à cette liste
- la boucle bornée for c in range (3) affecte dans la variable c les entiers allant de 0 à 3-1 ;)
Je pense avoir tout compris ;) donc je continue...
Etape 2 - Comptons le nombre de grains par case
Etape 2 - Script à copier puis exécuter.
Vous noterez que la première valeur de la liste est gérée avant la boucle. Donc le for boucle de 0 à 63-1 soit 63 valeurs de 0 à 62. Si on ajoute la valeur avant la boucle nous avons bien un jeu d'échec à 64 cases!
#nbre de grains par case
ngrain=1
liste=[ngrain]
for c in range(63):
ngrain=ngrain*2
liste.append(ngrain)
print(liste)
print(liste[0])
print(liste[1])
print("...")
print(liste[63])
Etape 2 - Exécution et analyse
>>> %Run test1.py
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648, 4294967296, 8589934592, 17179869184, 34359738368, 68719476736, 137438953472, 274877906944, 549755813888, 1099511627776, 2199023255552, 4398046511104, 8796093022208, 17592186044416, 35184372088832, 70368744177664, 140737488355328, 281474976710656, 562949953421312, 1125899906842624, 2251799813685248, 4503599627370496, 9007199254740992, 18014398509481984, 36028797018963968, 72057594037927936, 144115188075855872, 288230376151711744, 576460752303423488, 1152921504606846976, 2305843009213693952, 4611686018427387904, 9223372036854775808]
1
2
...
9223372036854775808
- le print(liste) affiche entre [ ] tous les termes de liste
- les print(liste[?]) affiche les valeurs individuelles de la liste. La première des valeurs de la liste est liste[0] le dernier est bien liste[63]
- vous noterez la capacité qu'à python de gérer les entiers
- vous noterez aussi les premières valeurs: 8, 16, 32, 64... comme sur vos clefs usb ;) - Voir la loi de Moore.
Etape 3 - Améliorations pour le script définitif
J'aimerai visualiser un affichage du type
case n° 1 - 1 grains
case n° 2 - 2 grains
etc...
et aussi visualiser la somme de tous les grains
(Pour la somme, challenge : Ne pas utiliser la fonction sum(liste) - mais cela fonctionne très bien)