M = 2**44497 - 1
len(str(M)) # nombre de chiffres de M
13395
La distance entre nous et l'orage vaut :
d = 340.29 * 5 # en mètres
print(d)
1701.45
round(d) # arrondi au mètre près
1701
On aurait aussi pu utiliser :
format(d, ".0f")
'1701'
round(d, -2) # arrondi à la centaine de mètres près
1700.0
On aurait pu également faire le calcul suivant :
round(d / 100) * 100
1700
n = -42
if n < 0:
va = -n
else:
va = n
print("La valeur absolue de {0} vaut : {1}.".format(n, va))
La valeur absolue de -42 vaut : 42.
for i in range(0, 21):
print(20 - i)
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
On peut également faire plus élégant, avec un pas de $-1$ à chaque itération :
for i in range(20, -1, -1): # par pas de -1, attention à l'arrêt
print(i, end="...") # on peut spécifier la fin de ligne
print() # pour passer a la ligne a la fin du compte a rebours
20...19...18...17...16...15...14...13...12...11...10...9...8...7...6...5...4...3...2...1...0...
s = 0
n = 500
for i in range(1, n + 1):
s += i
print("La premiere facon de calculer la somme donne comme resultat : {0}.".format(s))
print("La formule donnant la somme des premiers entiers le confirme : {0}.".format(n * (n + 1) // 2))
La premiere facon de calculer la somme donne comme resultat : 125250. La formule donnant la somme des premiers entiers le confirme : 125250.
# Question 1
"""
Pour calculer avec la suite de Fibonacci, qui est une suite basée sur une récurrence à deux pas,
on a besoin de stocker les termes successifs dans deux variables
"""
u = 1
v = 1
for i in range(19):
u, v = v, u + v
print("u_20 vaut donc :", v, ".")
u_20 vaut donc : 10946 .
# Question 2
"""
Il s'agit de mettre en oeuvre une boucle conditionnelle
"""
u = 1
v = 1
i = 1 #compteur qui correspond a l'indice considere
while v < 1001:
u, v = v, u + v
i += 1
print("Le premier terme > 1000 est celui d'indice {0}, qui vaut {1}.".format(i, v))
Le premier terme > 1000 est celui d'indice 16, qui vaut 1597.
# Question 3
"""
Cette question est similaire a la precedente :
seule la condition de la boucle while change.
"""
u = 1
v = 1
i = 1 #compteur qui correspond a l'indice considere
while v % 100 != 0:
u, v = v, u + v
i += 1
print("Le premier terme divisible par 100 est celui d'indice {0}, qui vaut {1}.".format(i, v))
Le premier terme divisible par 100 est celui d'indice 149, qui vaut 9969216677189303386214405760200.
# On calcule d'abord la factorielle :
f = 1
for i in range(2, 5001):
f *= i
# On compte le nombre de fois où 5000! est divisible par 10 :
c = 0
while f % 10 == 0:
c += 1
f = f // 10
print("5000! se termine par {0} zéros.".format(c))
5000! se termine par 1249 zéros.
On peut faire plus efficace, en divisant par 10 pendant le calcul de la factorielle, ce qui évite d'avoir à travailler avec de trop grands nombres (ce qui peut s'avérer coûteux en temps de calcul) :
f = 1
c = 0
for i in range(2, 5001):
f *= i
while f % 10 == 0:
c += 1
f = f // 10
print("5000! se termine par {0} zéros.".format(c))
5000! se termine par 1249 zéros.
Certains ont également pu penser à utiliser les chaînes de caractères, et compter le nombre de caractères "0" à la fin de la factorielle. Si vous le souhaitez, vous pouvez vous entraîner à le faire de cette façon !