FAQ PythonConsultez toutes les FAQ

Nombre d'auteurs : 16, nombre de questions : 313, dernière mise à jour : 10 juillet 2017  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions posées sur le forum Python complétées par d'autres questions qui pouvaient nous sembler intéressantes de traiter. Toutefois il se peut que les réponses apportées contiennent des erreurs, imprécisions ... Vous pouvez dans ce cas contacter un des membres de la rédaction pour lui faire part de vos remarques.

L'équipe Python de Developpez.


SommaireExercices CorrigésUtilisation des listesListes - Corrigés des exercices (5)
précédent sommaire suivant
 

  • À l’aide d’une boucle :

Code python : Sélectionner tout
1
2
3
4
5
def suite1(n): 
    result = [] 
    for i in range(n): 
        result.append(12*i+1) 
    return result

  • Par compréhension de liste :

Code python : Sélectionner tout
1
2
def suite2(n): 
    return [12*i+1 for i in range(n)]

La deuxième méthode est deux fois plus rapide.
Code python : Sélectionner tout
1
2
3
4
>>> duree(suite1) 
0.21786700000000003 
>>> duree(suite2,1000000) 
0.10685600000000006

Lorsque n varie ce rapport demeure identique, leur temps d’exécution est du même ordre de grandeur.

Mis à jour le 15 août 2014 f-leb

  • Calcul de la moyenne:

Code python : Sélectionner tout
1
2
def moyenne(liste): 
    if (liste!= []): return float(sum(liste)) / len(liste)
Code python : Sélectionner tout
1
2
3
4
>>> from random import random 
>>> L=[random() for i in range(100)] 
>>> moyenne(L) 
0.49407951863783545

  • Calcul de la variance : à l’aide de la définition \[V(X)=E((X-E(X))^2)\]

Code python : Sélectionner tout
1
2
3
4
5
def variance(liste): 
    if (liste!= []): 
        Esp = moyenne(liste) 
        liste2 = [(x-Esp)**2 for x in liste] 
        return moyenne(liste2)
À l’aide de la formule de König-Huygens \[V(X)=E(X^2)-E(X)^2)\]
Code Python : Sélectionner tout
1
2
def variance(liste): 
    return moyenne([x**2 for x in liste]) - moyenne(x)**2

Mis à jour le 15 août 2014 f-leb

  • Réponse : liste des ln(n) pour n entier compris entre 1 et 20 :

Code python : Sélectionner tout
1
2
3
4
>>> from math import log # import de log du module math 
>>> liste1 = [log(n) for n in range(1,21)] 
>>> print l 
[0.0, 0.6931471805599453, 1.0986122886681098, 1.3862943611198906, 1.6094379124341003, 1.791759469228055, 1.9459101490553132, 2.0794415416798357, 2.1972245773362196, 2.302585092994046, 2.3978952727983707, 2.4849066497880004, 2.5649493574615367, 2.6390573296152584, 2.70805020110221, 2.772588722239781, 2.833213344056216, 2.8903717578961645, 2.9444389791664403, 2.995732273553991]
Remarquer que ça croît très lentement.

  • Réponse : liste des entiers pairs et non multiples de 3 entre 0 et 100.

Code python : Sélectionner tout
1
2
3
>>> liste2 = [n for n in range(0,101) if (n % 2 == 0) and (n % 3!= 0)] 
>>> print liste2 
[2, 4, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 86, 88, 92, 94, 98, 100]

Une alternative, plus rapide :
Code python : Sélectionner tout
1
2
3
>>> liste2 = [n for n in range(0,101,2) if (n % 3!= 0)] 
>>> print liste2 
[2, 4, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 86, 88, 92, 94, 98, 100]


  • Réponse :

Code python : Sélectionner tout
1
2
>>> ['@' + '-' * n + '@' for n in range(1,6)] 
['@-@', '@--@', '@---@', '@----@', '@-----@']

  • Réponse :

Code python : Sélectionner tout
1
2
>>> [(i, j) for i in range(11) for j in range(11) if (i+j) % 5 == 0] 
[(0, 0), (0, 5), (0, 10), (1, 4), (1, 9), (2, 3), (2, 8), (3, 2), (3, 7), (4, 1), (4, 6), (5, 0), (5, 5), (5, 10), (6, 4), (6, 9), (7, 3), (7, 8), (8, 2), (8, 7), (9, 1), (9, 6), (10, 0), (10, 5), (10, 10)]

  • Réponse :

Code python : Sélectionner tout
1
2
def IdMat(n): 
    return [[0 for j in range(k)]+[1]+[0 for j in range(n-1-k)] for k in range(n)]
Code python : Sélectionner tout
1
2
3
4
5
6
>>> IdMat(2) 
[[1, 0], [0, 1]] 
>>> IdMat(3) 
[[1, 0, 0], [0, 1, 0], [0, 0, 1]] 
>>> IdMat(4) 
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]

Mis à jour le 15 août 2014 f-leb

  • Solution :

Code python : Sélectionner tout
1
2
3
4
5
6
>>> c='' 
>>> for i in range(33,127): 
...     c = c + str(i) + ':' + chr(i) + ' ' 
...     if (i-32) % 16 == 0: c = c + '\n' 
... 
>>> print c
Code : Sélectionner tout
33:! 34:¨ 35:# 36:$ 37:% 38:& 39:’ 40:( 41:) 42:* 43:+ 44:, 45:- 46:. 47:/ 48:0 49:1 50:2 51:3 52:4 53:5 54:6 55:7 56:8 57:9 58:: 59:; 60:< 61:= 62:> 63:? 64:@ 65:A 66:B 67:C 68:D 69:E 70:F 71:G 72:H 73:I 74:J 75:K 76:L 77:M 78:N 79:O 80:P 81:Q 82:R 83:S 84:T 85:U 86:V 87:W 88:X 89:Y 90:Z 91:[ 92:\93:] 94:^ 95: 96:‘ 97:a 98:b 99:c 100:d 101:e 102:f 103:g 104:h 105:i 106:j 107:k 108:l 109:m 110:n 111:o 112:p 113:q 114:r 115:s 116:t 117:u 118:v 119:w 120:x 121:y 122:z 123:{ 124:| 125:} 126:~
  • Solution :

Code python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
>>> def maj(chaine): 
...     result = '' 
...     for i in range(len(chaine)): 
...         code = ord(chaine[i]) 
...         if (code >= ord('a')) and (code <= ord('z')): 
...             result = result + chr(code + ord('A') - ord('a')) 
...         else :  
...             result = result + chr(code) 
...     return result 
... 
>>> print maj('bonjour') 
BONJOUR

Mis à jour le 15 août 2014 f-leb

  • Solution : Fonction de cryptage

Code python : Sélectionner tout
1
2
3
4
5
6
7
8
>>> def CesarCrypt(ch,n): 
...     result = '' 
...     for i in range(len(ch)): 
...         result = result + chr((ord(ch[i]) + n-ord('A')) % 26 + ord('A')) 
...     return result 
... 
>>> print CesarCrypt('BONJOUR',1) 
CPOKPVS
  • Solution : Fonction de décryptage

Code python : Sélectionner tout
1
2
3
4
5
>>> def CesarDecrypt(ch,n): 
...     return CesarCrypt(ch, -n) 
... 
>>> CesarDecrypt('CPOKPVS',1) 
'BONJOUR'

Mis à jour le 15 août 2014 f-leb

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2018 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique Python