Exercice 1 - HU¶
Ecrire un code qui permet de calculer le débit d'écoulement à travers un orifice simple avec la loi de Torricelli.
Les données sont :
- $C_d$ : coefficient de débit (adimensionnel)
- $A$ : aire de l'orifice en m^2
- $h$ : hauteur de charge en m
- $g = 9.81$ : gravité en m/s^2
L'expression du débit est : $Q = C_d A \sqrt{2gh}$
Le débit doit être affiché en $l/s$ avec 4 chiffres significatifs, sous cette forme par exemple :
Débit Q = 0.4601 l/s
# Données
Cd = 0.65 # coefficient de débit (adimensionnel)
d = 12e-3 # diamètre de l'orifice (m)
h = 2 # hauteur de charge en (m)
g = 9.81 # gravité en (m/s^2)
pi = 3.14159 # nombre pi
# calcul de la section
A = pi * d**2 / 4
# calcul du débit
Q = Cd * A * (2 * g * h) ** 0.5
# affichage
print("Débit Q = {:.4f} l/s".format(1000*Q))
Débit Q = 0.4605 l/s
Exercice 1 - OH¶
Ecrire un code qui permet de calculer la vitesse moyenne d'un écoulement à surface libre dans un canal rectangulaire en appliquant la formule de Manning-Strickler $\displaystyle V = k_s \,R_H^{2/3} \, S^{1/2}$
avec : $R_H = bh/(b+2h)$ est le rayon hydraulique et $k_s = \dfrac{1}{n}$ est le coefficient de Strickler (en $m^{1/3}s^{-1}$)
Les données sont:
- $b$ : largeur du canal (m)
- $S$ : la pente du canal (sans)
- $h$ : le tirant d'eau (m)
- $n$ : le coefficient de rugosité de Manning ($s\,m^{-1/3}$)
La valeur de la vitesse doit être affichée avec 4 chiffres significatifs
# Données
b = 3.0 # largeur
n = 0.015
S = 0.001
h = 0.8
# Calculs
A = b * h
P = b + 2 * h
R = A / P
ks = 1 / n
V = ks * (R ** (2.0/3.0)) * (S ** 0.5)
# Affichage
print(f"A = {A:.6f} m^2")
print(f"R = {R:.12f} m")
print(f"V = {V:.7f} m/s")
A = 2.400000 m^2 R = 0.521739130435 m V = 1.3662946 m/s
Exercice 2 - HU¶
Question 1 :
Expliquer les variables A, B et C définies par les commandes ci-dessous en précisant leur types et leurs contenus.
A = [1,2,3,4]
B = ['1','2',"3","4"]
C = ['1234']
- A : . . . . . . . . . . . . . . . . . . . . . .
- B : . . . . . . . . . . . . . . . . . . . . . .
- C : . . . . . . . . . . . . . . . . . . . . . .
Réponse :
- A : liste de 4 entiers
- B : liste de 4 caractères
- C : liste contenant un seul mot
Question 2: Ecrire ce qui sera affiché par les commandes suivantes:
print(f'{A[0] = }') :
. . . . . . . . . . . . . . . . . . . . . . . .
print(f'{B[0] = }') :
. . . . . . . . . . . . . . . . . . . . . . . .
print(f'{C[0] = }'):
. . . . . . . . . . . . . . . . . . . . . . . .
A = [1,2,3,4]
B = ['1','2',"3","4"]
C = ['1234']
print(f'{A[0] = }')
print(f'{B[0] = }')
print(f'{C[0] = }')
#print(type(A[0]))
#print(type(B[0]))
#print(type(C[0]))
A[0] = 1 B[0] = '1' C[0] = '1234'
Exercice 2 - OH¶
Question 1 :
Expliquer les variables A, B et C définies par les commandes ci-dessous en précisant leur types et leurs contenus.
A = list(range(3))
B = [1, 2, 3]
C = '123'
- A : . . . . . . . . . . . . . . . . . . . . . .
- B : . . . . . . . . . . . . . . . . . . . . . .
- C : . . . . . . . . . . . . . . . . . . . . . .
Réponse :
- A : liste de 4 entiers [0,1,2,3]
- B : liste de 3 entiers [1, 2, 3]
- C : chaîne de caractères '123'
Question 2: Ecrire ce qui sera affiché par les commandes suivantes:
print(f'{A[0] = }') :
. . . . . . . . . . . . . . . . . . . . . . . .
print(f'{B[0] = }') :
. . . . . . . . . . . . . . . . . . . . . . . .
print(f'{C[0] = }'):
. . . . . . . . . . . . . . . . . . . . . . . .
A = list(range(3))
B = [1, 2, 3]
C = '123'
print(f'{A[0] = }')
print(f'{B[0] = }')
print(f'{C[0] = }')
print(type(A[0]))
print(type(B[0]))
print(type(C[0]))
A[0] = 0 B[0] = 1 C[0] = '1' <class 'int'> <class 'int'> <class 'str'>
Exercice 3 - HU¶
Expliquer et écrire ce qui sera affiché par la commande suivante.
Donner ensuite une commande équivalente qui utilise le format f-string
print( "%-7s = %10d \n%-7s = %10.4f \n%-7s = %10.4f "
% ('n_pas',200,'delta x',0.01,'Sol : u', 11/3 )
)
print( "%-7s = %10d \n%-7s = %10.4f \n%-7s = %10.4f "
% ('n_pas',200,'delta x',0.01,'Sol : u', 11/3 )
)
print('\nAvec f-string')
print(f"{'n_pas':7s} = {200:10d} \
\n{'delta x':7s} = {0.01:10.4f} \
\n{'Sol : u':7s} = {11/3:10.4f}"
)
n_pas = 200 delta x = 0.0100 Sol : u = 3.6667 Avec f-string n_pas = 200 delta x = 0.0100 Sol : u = 3.6667
Exercice 3 - OH¶
Les commandes suivantes permettent d'afficher des résultats sous forme d'un tableau.
- Que signifie *36 et pourquoi ce chiffre de 36
- Déssiner le tableau qui sera affiché
print('-'*36)
print("{:12s}{:^12s}{:>12s}".format('n_pas','delta x','Sol u' ))
print('-'*36)
print("{:<12d}{:^12.2f}{:>12.4f}".format(100,0.02,3.7449226666667))
print("{:<12d}{:^12.2f}{:>12.4f}".format(200,0.01,3.7466333333335))
print('-'*36)
------------------------------------ n_pas delta x Sol u ------------------------------------ 100 0.02 3.7449 200 0.01 3.7466 ------------------------------------
Exercice 4 - HU¶
On cherche à estimer le coefficient de perte de charge de Darcy en utilisant la formule de Hermann : $ f_d = 0.0054 + \dfrac{0.396}{R_e^{0.3}} $, avec $R_e = VD/\nu$ est le nombre de Reynolds.
Déterminez quelles commandes suivantes sont correctes. Pour chaque commande incorrecte, mentionnez l'erreur.
V, D , nu = 2.5, 0.1, 1e-6
#f_d = 54e-4 + 396e-3 * (nu/(V*D))^0.3 # incorrecte erreur
#print(f'f_d0 = {f_d:.6f}')
f_d = (54 + 3960 * (V*D/nu)**-0.3)/10000 # correcte
print(f'f_d1 = {f_d:.6f}')
f_d = 0.0054 + 0.396 * (V*D/nu)**(-0.3) # correcte
print(f'f_d2 = {f_d:.6f}')
f_d = 0.0054 + 0.396 * (nu/V*D)**0.3 # incorrecte
print(f'f_d3 = {f_d:.6f}')
f_d = (5.4 + 396)*1e-3 * (nu/(V*D))**0.3 # incorrecte
print(f'f_d4 = {f_d:.6f}')
f_d = 0.0054 + 0.396 / (V*D/nu)**0.3 # correcte
print(f'f_d5 = {f_d:.6f}')
print('f_d = f_d:.4f') # incorrect : str
#print('f_d =', f_d:.3f) # incorrect : Err pas de formatage
print('f_d = {:6.4f}'.format(f_d)) # correcte
print(f'f_d = {f_d:0.4f}') # correcte
print("f_d = {:0.4f}".format(f_d)) # correcte
print("f_d = {f_d:0.4f}") # incorrecte manque f"
print("f_d =", f_d) # correcte mais pas formatée
f_d1 = 0.014913
f_d2 = 0.014913
f_d3 = 0.007790
f_d4 = 0.009643
f_d5 = 0.014913
f_d = f_d:.4f
f_d = 0.0149
f_d = 0.0149
f_d = 0.0149
f_d = {f_d:0.4f}
f_d = 0.014912905517132938
Exercice 4 - OH¶
On veut calculer le nombre de Froude puis afficher sa valeur avec 4 chiffres décimaux.
$ F_r = \displaystyle\frac{V}{\sqrt{g h}}$
Déterminez quelles commandes suivantes sont correctes. Pour chaque commande incorrecte, mentionnez l'erreur.
V = 2.0
g = 9.81
h = 0.4077
#h = V*V/g
print(f'{h = }')
# Fr = V / (g*h)^0.5 # incorrecte Err
#print("Fr0 =", Fr)
Fr = V/g*h**0.5
print("Fr1 =", Fr)
#Fr = V / sqrt(g*h) # incorrecte
print("Fr2 =", Fr)
Fr = V / (g*h)**0.5 # correcte
print("Fr3 =", Fr)
Fr = V / ( (g*h) ** 0.5 ) # correcte
print("Fr4 =", Fr)
Fr = V / (g*h)**1/2 # incorrecte
print("Fr5 =", Fr)
print('Fr = Fr:.4f') # incorrect : str
#print('Fr =', Fr:.3f) # incorrect : Err pas de formatage
print('Fr = {:6.4f}'.format(Fr)) # correcte
print(f'Fr = {Fr:0.4f}') # correcte
print("Fr = {:0.4f}".format(Fr)) # correcte
print("Fr = {Fr:0.4f}") # incorrecte manque f"
print("Fr =", Fr) # correcte mais pas formatée
h = 0.4077
Fr1 = 0.13017612632289152
Fr2 = 0.13017612632289152
Fr3 = 1.0000578800247582
Fr4 = 1.0000578800247582
Fr5 = 0.25002894084990335
Fr = Fr:.4f
Fr = 0.2500
Fr = 0.2500
Fr = 0.2500
Fr = {Fr:0.4f}
Fr = 0.25002894084990335
Exercices supplémentaires¶
Exercice 1 (supplémentaire)¶
Ecire le code qui permet d'extraire de la chaîne txt la valeur de h et de l'utiliser ensuite pour calculer v. avec $V=\sqrt{2gh}$. Afficher V comme suit :
V = 5.42 m/s
txt = "hauteur h = 1.5 m"
g = 9.81
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
V = . . . . . . . . . . . . . .
print(f". . . . . . . . . . . . . . . ")
txt = "hauteur h = 1.5 m"
t,h = txt[:-1].split('=')
h = float(h)
g = 9.81
V = (2*g*h)**0.5
print(f'{V = :.2f} m/s')
V = 5.42 m/s
Exercice 2 (supplémentaire)¶
Ecrire un code qui permet d'afficher le tableau ci-dessous. Chacune des 3 colonnes est affichée sur 15 caractères, avec
- La colonne de gauche est alignée à gauche
- La colonne du centre est centrée
- La colonne de droite est alignée à droite
---------------------------------------------
Conduite Diamètre Longeur
---------------------------------------------
C001 150 10.50
C002 220 15.65
---------------------------------------------
print('-'*45)
print("{:15s}{:^15s}{:>15s}".format('Conduite','Diamètre','Longeur'))
print('-'*45)
print("{:15s}{:^15d}{:15.2f}".format('C001',150, 10.50))
print("{:15s}{:^15d}{:15.2f}".format('C002',220, 15.65))
print('-'*45)
--------------------------------------------- Conduite Diamètre Longeur --------------------------------------------- C001 150 10.50 C002 220 15.65 ---------------------------------------------
Exercice 3 (supplémentaire)¶
On veut evaluer $u_n = \frac{(-1)^n}{2n+1}$ pour $n=3$ et d'afficher sa valeur avec 8 chiffres décimaux.
Indiquer parmi les commandes suivantes, celles qui sont correctes et celles qui sont incorrectes. En cas d'érreur, préciser-la.
n = 3
u = (-1)^n /(2n+1) . . Incorrecte : ^ et 2n
u = (-1)**n/2*n+1 . . Incorrecte : /2
u = (-1)**n/(2n+1) . . Incorrecte : 2n
u = -1**n/(2+n+1) . . Incorrecte : -1**n
u = (-1)**n/(2*n+1) . . Correcte
print('u = u:0.8f') . . Incorrecte : tout est entre ''
print('u =', u:5.8f) . . Incorrecte : u:5.5f
print('{u = 0.8f}') . . Incorrecte : tout est ente ''
print('u = {:0.8f}'.format(u)) . .Correcte
print('u = {:10.8f}'.format(u)) . . Correcte
print('u =',u) . . Incorrecte : ne correpond pas au format demandé
n = 3
#u = (-1)^n /(2n+1) # incorrecte
u = (-1)**n/2*n+1 # incorrecte
#u = (-1)**n/(2n+1) # incorrecte
#u = (-1)**n/(2*n+1)
print('u = u:0.8f')
#print('u =', u:5.2f)
print('{u = 0.8f}')
print('u = {:10.8f}'.format(u))
print('u =',u)
u = u:0.8f
{u = 0.8f}
u = -0.50000000
u = -0.5
Aucun commentaire:
Enregistrer un commentaire