bonjour,
je fais un petit exe pour retrouver la cle du n° de secu
que rajouter pour que, si le résultat est inférieur à 10, s'affiche non pas 2 mais 02Code:
1
2
3
4
5
6 nd = 1721099131271 a = nd/97 b= nd%97 c=97-b print c
merci:ccool::ccool:
Version imprimable
bonjour,
je fais un petit exe pour retrouver la cle du n° de secu
que rajouter pour que, si le résultat est inférieur à 10, s'affiche non pas 2 mais 02Code:
1
2
3
4
5
6 nd = 1721099131271 a = nd/97 b= nd%97 c=97-b print c
merci:ccool::ccool:
merci pour le ;)?Code:
1
2
3 if c<10: print ? + c
Salut,
ou mieux, avec le formatage de chaine:Code:
1
2
3
4
5
6
7
8
9 nd = 1721099131271 a = nd/97 b= nd%97 c=97-b if c<10: c = "0" + str(c) print c
Code:
1
2
3
4
5
6 nd = 1721099131271 a = nd/97 b= nd%97 c=97-b print "%02i"%c
Il vaut mieux utiliser le formatage des chaînes, c'est plus court, et plus propre.
bonjour
Code:
1
2 nd = 1421099131271 print str(97-nd%97).zfill(2)
j'oublie tjrs de transformer un int en str
focement un int+str ca peut pas fonctionner
merci :oops:
okCitation:
Il vaut mieux utiliser le formatage des chaînes, c'est plus court, et plus propre.
?????Code:zfill(2)
c'est dans 3.0?
je connais pas...
oupsssss....Citation:
str.zfill(width)
Return the numeric string left filled with zeros in a string of length width. A sign prefix is handled correctly. The original string is returned if width is less than len(s).
New in version 2.2.2.
je connaissais pas.:oops:
ouiCitation:
c'est dans 3.0?
http://docs.python.org/3.1/genindex-Z.html
Personnellement, je ne sais pas ce qu'on entend par propreté d'un code.Citation:
Il vaut mieux utiliser le formatage des chaînes, c'est plus court, et plus propre.
Pour moi, "%02i"%c est moins immédiatement lisible et compréhensible. Je trouve que "%02i"%c symbolise tandis que str(97-nd%97).zfill(2) parle.
Par contre, le formatage de chaîne est effectivement plus rapide, comme le dit rambc. Mais c'est encore mieux de le justifier. À l'occasion, j'ai comparé diverses méhodes:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 from time import clock nd = 1421099131271 a,b,c,d,e,f,g = [],[],[],[],[],[],[] dico = dict(zip(range(97),[str(u).zfill(2) for u in xrange(97)])) didir = dict(zip(range(97),[str(97-u).zfill(2) for u in xrange(97)])) n = 400 print 'sur',n,'iteratiuons de 10000 tours' for fois in xrange(n): te = clock() for i in xrange(10000): y = 97-nd%97 x = ('0'+str(y),str(y))[y>9] tf = clock() a.append(tf-te) te = clock() for i in xrange(10000): x = str(97-nd%97).zfill(2) tf = clock() b.append(tf-te) te = clock() for i in xrange(10000): y = 97-nd%97 x = str(y) if y<10: x = '0' + x tf = clock() c.append(tf-te) te = clock() for i in xrange(10000): x = "%02i"%(97-nd%97) tf = clock() d.append(tf-te) te = clock() for i in xrange(10000): x = str(197-nd%97)[1:] tf = clock() e.append(tf-te) te = clock() for i in xrange(10000): x = dico[97-nd%97] tf = clock() f.append(tf-te) te = clock() for i in xrange(10000): x = didir[nd%97] tf = clock() g.append(tf-te) print min(a),' x = str(97-nd%97).zfill(2)' print min(b)," x = (str(x),'0'+str(x))[x>9]" print min(c)," x = str(y) if y<10: x = '0' + x" print min(d),' x = "%02i"%(97-nd%97)' print min(e)," x = str(197-nd%97)[1:]" print min(f),' x = dico[97-nd%97]' print min(g),' x = didir[nd%97]'
Code:
1
2
3
4
5
6
7
8 sur 400 iteratiuons de 10000 tours 0.142065262484 x = str(97-nd%97).zfill(2) 0.12316369818 x = (str(x),'0'+str(x))[x>9] 0.107345486647 x = str(y) if y<10: x = '0' + x 0.0812661944465 x = "%02i"%(97-nd%97) 0.0810742706126 x = str(197-nd%97)[1:] 0.0497462666345 x = dico[97-nd%97] 0.0365543665466 x = didir[nd%97]
str(97-nd%97).zfill(2) est 65 % plus longue que "%02i"%(97-nd%97)
Une astuce avec 197 au lieu de 97 tourne aussi vite que "%02i"%(97-nd%97)
Évidemment si on sort la fonction zfill() de la boucle chronométrée, le temps est moindre: -37 % par rapport au formatage de chaîne et str(197-nd%97)[1:]Cette fonction se retrouve utilisée dans la création d'un dictionnaire.
Mais ce peut être une méthode intéressante si le code est celui d'un programme de gestion de dossiers qui doit tourner sur de gandes quantités de dossiers et donc de numéros.
D'ailleurs, tant qu'à créer un dictionnaire, autant le créer pour qu'il donne directement la chaîne résultat à partir du reste modulo nd%97.
On diminue cette fois le temps d'exécution de 55 % au lieu de 37 %.