Bonsoir,
J'aimerai que cette fonction me retourne 1 pour racine(2) par exemple, alors que avec ma fonction retourne 2Code:
1
2
3
4
5
6
7
8
9
10 def racine(x): som=0 n=0 i=1 while som < x: if i%2==1: som=som+i n=n+1 i=i+1 return n
Version imprimable
Bonsoir,
J'aimerai que cette fonction me retourne 1 pour racine(2) par exemple, alors que avec ma fonction retourne 2Code:
1
2
3
4
5
6
7
8
9
10 def racine(x): som=0 n=0 i=1 while som < x: if i%2==1: som=som+i n=n+1 i=i+1 return n
Si l'on remplace le "<" par un "<=" et que l'on renvoie "n-1", ton algorithme fonctionne comme tu le veux :
Est-ce volontairement que tu n'utilises pas le package math ?Code:
1
2
3
4
5
6
7
8
9
10 def racine(x): som=0 n=0 i=1 while som <= x: if i%2==1: som = som+i n = n+1 i = i+1 return n-1
Code:
1
2
3 import math def racine(x) return math.floor(math.sqrt(x))
On peut simplifier le code:
Pour ta seconde question, il suffit de multiplier n par 100^t, de calculer la racine entière, et de diviser par 10^t ensuite.Code:
1
2
3
4
5
6
7 def racine(x): som=0 i=1 while som <= x: som = som+i i = i+2 return i/2-1
On écrit 10**t en Python, pas 10^t
^ c'est un ou exclusif (xor).
Bonjour,
Non, ça marche!
print racine(30*100**2)/10**2 renvoie bien 5.47
Pour afficher 5.47 au lieu de 5,469999999999999, il faut utiliser print, ou utiliser une conversion en chaine comme "%s" % (5.47).
L'affichage de 5,469999999999999 vient de la manière dont les nombres à virgule flottante sont stockés en mémoire.
Tyrtamos