Index de l'article

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)