2. Exercices Python#
Petits exercices Python sur les variables, les boucles et les tableaux numpy
Marc Buffat, Dpt Mécanique Lyon 1
%matplotlib inline
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt
plt.rc('font', family='serif', size='14')
from validation.valide_markdown import test_markdown, test_code
from validation.validation import info_etudiant, bib_validation
from IPython.display import display, Markdown, clear_output
bib_validation("cours","MGC2028L")
from SolutionExo import solution
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 10
8 from IPython.display import display, Markdown, clear_output
9 bib_validation("cours","MGC2028L")
---> 10 from SolutionExo import solution
ModuleNotFoundError: No module named 'SolutionExo'
# nom etudiant
def printmd(string):
display(Markdown(string))
# test si numero étudiant spécifier
try: NUMERO_ETUDIANT
except NameError: NUMERO_ETUDIANT = None
if NUMERO_ETUDIANT is None:
NOM,PRENOM,NUMERO_ETUDIANT = info_etudiant()
printmd("## Etudiant {} {} id={}".format(NOM,PRENOM,NUMERO_ETUDIANT))
np.random.seed(NUMERO_ETUDIANT)
_I1 = 1+np.random.randint(5)
_I2 = 1+np.random.randint(5,20)
_X = np.round(0.01 + np.random.rand(),2)
import secrets
_L = list(secrets.token_urlsafe(_I1+_I2))
2.1. Variable et expression: exo 1#
mettre dans une variable V la valeur numérique de l’expression suivante :
import numpy as np
### BEGIN SOLUTION
V = 2*(np.sin(np.pi/5)+1)/(1+np.exp(2)) + 4.
print(V)
### END SOLUTION
2.2. Liste: exo1.1#
dans la liste L suivante, permuter le ième et jème élément et mettre le résultat dans L
On affichera le résultat avant et après la permutation pour comparer.
printmd(f"**faire le calcul pour i={_I1} j={_I2}**")
L = _L[:]
print(L)
### BEGIN SOLUTION
val1 = L[_I1-1]
L[_I1-1] = L[_I2-1]
L[_I2-1] = val1
print(L)
### END SOLUTION
2.3. Ecriture de boucle: exo 2#
Ecrire une boucle pour calculer le produit des entiers de I1 à I2 inclus.
Le résultat est à mettre dans la variable p
printmd(f"**faire le calcul pour I1={_I1} I2={_I2}**")
p = None
### BEGIN SOLUTION
p = 1
for i in range(_I1,_I2+1):
p = p*i
# fin boucle
print(p)
### END SOLUTION
2.4. Traduction de formule mathématique: exo 3#
calcul de la quantité S suivante (somme des factorielles de 1 à n) dans la variable S
$\( S = \sum_{i=1}^n i! \)$
printmd(f"**faire le calcul pour n={_I2}**")
S = None
### BEGIN SOLUTION
S = 0
n = _I2
faci = 1
for i in range(1,n+1):
faci = faci*i
S = S + faci
# fin boucle
print(S)
### END SOLUTION
2.5. Traduction de formule mathématique: exo 3.1#
calcul de la série suivante dans la variable L
$\( L = 1 + \sum_{i=1}^n \frac{x}{i} \)$
printmd(f"**faire le calcul pour n={_I2}** et x={_X}")
L = None
### BEGIN SOLUTION
n = _I2
x = _X
L = 1.
for i in range(1,n+1):
L = L + x/i
### END SOLUTION
2.6. Formules Itératives: exo 4#
Créer un tableau numpy I de dimension n qui contient les valeurs données par la formule de récurrence :
avec \(I_0 = 1\).
printmd(f"**faire le calcul pour n={_I2} et a={_I1}**")
I = None
### BEGIN SOLUTION
n = _I2
a = _I1
I = np.zeros(n)
I[0] = 1
for i in range(1,n):
I[i] = (i/a) *I[i-1]
#
### END SOLUTION
2.7. Tableaux numpy: exo 5#
créer un tableau numpy TAB de dimension N contenant des valeurs aléatoires à l’aide
de la fonction numpy: np.random.rand(N). Mettre dans la variable U les p dernières
valeurs du tableau TAB
printmd(f"**faire le calcul pour N={_I2} et p={_I1}**")
TAB = None
### BEGIN SOLUTION
TAB = np.random.rand(_I2)
U = TAB[-_I1:]
### END SOLUTION
2.8. Tableaux numpy: exo 6#
créer une matrice numpy A de dimension N contenant des valeurs aléatoires à l’aide
de la fonction numpy: np.random.rand(N,N). Mettre dans la variable B la sous matrice de A constituée par les éléments se trouvant sur les n dernières colonnes et sur les n premières lignes de A.
printmd(f"**faire le calcul pour N={_I2} et n={_I1}**")
A = None
### BEGIN SOLUTION
A = np.random.rand(_I2,_I2)
B = A[:_I1,-_I1:]
### END SOLUTION
2.9. Tableaux numpy: exo 6.1#
créer un tableau numpy X de dimension N contenant des valeurs aléatoires entre -1 et 1 à l’aide
de la fonction numpy: np.random.rand(N), qui crée un tableau de N valeurs aléatoires entre 0 et 1. On note que si \(0\le x \le 1\), alors \(-1\le 2x-1 \le 1\) . Mettre dans la variable Xpos le tableau constitué par les éléments positifs ou nuls de X et dans Xneg le tableau constitué par les éléments génatifs de X. Afficherz les tableaux pour vérifier.
printmd(f"**faire le calcul pour N={_I2}**")
X = None
### BEGIN SOLUTION
X = 2*np.random.rand(_I2)-1
Xpos = X[X>=0]
Xneg = X[X<0]
print(X)
print(Xpos)
print(Xneg)
### END SOLUTION