Des exercices de Python pour se tester

Vous trouverez ci-dessous quelques exercices basiques, qui vous permettront de vérifier si vous avez le niveau attendu en Python pour cette UE. En genéral, essayez de répondre d’abord sans tester sur machine, puis vérifiez. Si vous avez un doute, vous pouvez utiliser Python Tutor pour visualiser le fonctionnement de votre programme.

Si quelque chose coince, criez ! On reviendra dessus. Le but est qu’à la fin de la séance, plus rien ne coince.

Certains termineront vite, et pourront alors se perfectionner avec un TP de cryptographie, tester la bibliothèque de calcul scientifique pylab (si elle est disponible), ou faire joujou avec le génome de Bacillus subtilis subsp. subtilis str. 168.

Affectations et types

Après chacun des blocs d’instructions suivants, quel est la valeur de a ? Quel est le type de cette valeur ?

   1 a = 2
   2 a = a+1

   1 a = 2
   2 a = a*a
   3 a = a*a
   4 a = a*a

   1 a = 2
   2 a = a//2
   3 a = a//2

   1 a2
   2 aa/2
   3 aa/2

   1 a = 1
   2 a = 0 <= a

   1 a = False
   2 a = a == a
   3 b = True
   4 a = a and b

   1 def f(x):
   2     x = x+1
   3 a = f(1)

   1 def f(x):
   2     return x+1
   3 a = f(1)

   1 a = 0,1 + 0,1

   1 a = 0,1
   2 a = a+a
   3 a = a[3]

   1 a = [0,1]
   2 a = [a]
   3 a = a+a

   1 a = [0]
   2 a = [a]+a
   3 a = [a]+a

   1 a = [1,2,3]
   2 a = a[0] == a[len(a)-1]

Boucles

Que calcule chacune des fonctions suivantes en supposant qu’on donne toujours un argument de type int ?

   1 def f(n):
   2         x = 0
   3         for i in range(n):
   4                 x = i
   5                 return x

   1 def f(n):
   2         x = 0
   3         for i in range(n):
   4                 x = i
   5         return x

   1 def f(n):
   2         l = []
   3         for i in range(1,n):
   4                 l = l + [n-i]
   5         return l

   1 def f(n):
   2         x = 0
   3         s = 0
   4         while x < n:
   5                 s = s + x
   6                 x = x + 1
   7         return s

   1 def g(n):
   2         x = 0
   3         s = 0
   4         while x < n:
   5                 x = x + 1
   6                 s = s + x
   7         return s

Erreurs

Chacun des blocs suivants provoque une erreur: pourquoi?

   1 x = 12
   2 print('le résultat est '+x)

   1 résultat = 0
   2 for i in range(10):
   3         résultat = résultat + 1/i

   1 l = [1,2,3]
   2 somme = 0
   3 for i in range(1,len(l)+1):
   4         somme = somme + l[i]

   1 def double (x):
   2         x+x
   3 a=1
   4 a=double(a)
   5 a=double(a)

Celui-là ne provoque pas d’erreur mais il est problématique : pourquoi ?

   1 valeurs = [1,2,3,4]
   2 somme = 0
   3 i = 0
   4 while i<len(valeurs):
   5         somme = somme + valeurs[i]

De l’algorithmique et de l’arithmétique

On définit la fonction suivante:

   1 def f(a,b):
   2     c = ''
   3     while a>0:
   4         c = str(a % b) + c
   5         a = a // b
   6     return c

Notez que vous pouvez afficher les solutions aux exercices en cliquant sur le bouton Commentaires dans la barre de menu.

EnsInfo: AutoTest (dernière édition le 2021-03-19 10:50:50 par LionelVaux)