Pour les 3 exercices suivants, votre tâche est donc :
Il n'y a pas de choix unique pour la sous-fonction, un bon choix pouvant être caractérisé par le fait que la sous-fonction ait plusieurs lignes de codes, que son nom résume bien son action et qu'elle soit bien documentée.
In [1]:
## n est forcément un entier supérieur ou égal à 1
def f1(n):
a = True
k = 2
while (k < n) and a:
if n % k == 0:
a = False
k = k + 1
if a:
print(n)
return
while n != 1:
k = 2
while k <= n:
if n % k == 0:
n = n // k
print(k, end = ' ')
k = n
k = k + 1
Quelques exemples, les résultats ne doivent pas changer (à noter que les consignes sont que le résultat de la fonction ne doit pas changer quelque soit les données d'entrée, pas seulement ces exemples)
In [2]:
f1(120)
In [3]:
f1(169)
In [4]:
import random
def simulation_boursiere(c, nb_semaine, v ):
nb_jours_ouvres = 5
for it_semaine in range(nb_semaine):
for it in range(nb_jours_ouvres):
## La fonction random renvoit un nombre "pseudo-aléatoire" entre 0 et 1.0
c = (c + v*(random.random()-0.5))*(1 + 0.001*(random.random() - 0.5))
if c < 0:
c = 0
print( "Cours semaine", it_semaine, ":", c )
Cours semaine 0 : 105.34681237564352
Cours semaine 1 : 115.73138361821448
Cours semaine 2 : 121.08482256990295
Cours semaine 3 : 124.42344691023956
Cours semaine 4 : 115.73450285503783
A noter si l'on veux absolument les mêmes valeurs, on peut biaiser la fonction random par la méthode seed : l'instruction random.seed(0) permet de garantir la "reproductibilité" des résultats.
In [5]:
import random
random.seed(0)
simulation_boursiere(100, 5, 10 )
Cours semaine 0 : 32.07693325674235
Cours semaine 1 : 18.53044918097587
Cours semaine 2 : 17.872444811843824
Cours semaine 3 : 12.672627612782238
Cours semaine 4 : 17.60190600299601
Cours semaine 5 : 14.681739640999766
Cours semaine 6 : 33.99446314175473
Cours semaine 7 : 22.772097693761907
Cours semaine 8 : 0
Cours semaine 9 : 9.272486028487437
A noter le random.seed(7) qui permet de garantir la reproductabilité des résultats, même avec une génération de variable aléatoire
In [6]:
import random
random.seed(7)
simulation_boursiere(50, 10, 20 )
In [7]:
def f(y0,vy0,tm,dt):
g = 9.8
cf_air = 0.001
t = 0
vy = vy0
y = 0
while t <= tm:
vy = vy - g*dt
if vy > 0:
vy = vy - cf_air*vy**2*dt
else:
vy = vy + cf_air*vy**2*dt
y = y + vy*dt
if y < 0:
y = 0
vy = -vy
## int est la conversion en entier
## pour un nombre à virgule flottante, c'est arrondi par défaut
if int(t) != int(t+dt):
print("t: {0:>3.0f}, vy: {1:>7.2f}, y: {2:>7.2f}, e: {3:>7.1f} ".format(t+dt, vy,y,0.5*vy**2 + g*y))
t = t + dt
t: 1, vy: 81.93, y: 89.77, e: 4235.7
t: 2, vy: 68.08, y: 156.44, e: 3850.4
t: 3, vy: 54.56, y: 216.94, e: 3614.3
t: 4, vy: 42.44, y: 264.74, e: 3494.9
t: 5, vy: 30.23, y: 304.01, e: 3436.3
t: 6, vy: 19.82, y: 328.47, e: 3415.5
t: 7, vy: 9.81, y: 342.76, e: 3407.2
t: 8, vy: -0.02, y: 347.16, e: 3402.2
t: 9, vy: -9.78, y: 341.76, e: 3397.1
t: 10, vy: -19.35, y: 326.70, e: 3388.8
In [9]:
f(200,-100,10,0.1)
Notez bien : Le Pur Hazard, ne se trouve pas purement par hazard
In [ ]: