Pour s'entraîner
max2
qui prend en arguments deux valeurs et renvoie la plus grande.repete
qui répète le mot ’ISN’
un certain nombre de fois au choix.tirage
qui tire au sort un nombre entier entre deux bornes données en arguments. On pourra utiliser les
fonctions du paquet random
.constructible
qui décide s’il est possible de construire un triangle avec trois segments de mesures données.max3
qui prend en argument trois valeurs et renvoie la plus grande, en utilisant la fonction max2
de la première question.Question 1
def max2(a, b): # fonction de deux arguments : a et b
if a <= b:
m = b # une utilise une variable locale m
else:
m = a
return m # On peut utiliser deux return car seule une partie du
# test est interprétée : ce qui suit le if ou le else
Question 2
def repete(n):
m = 'ISN '
return n*m
Question 3
from random import *
def tirage(a, b):
return randint(a,b) # On utilise la fonction randint :
# voir aide du paquet random en faisant help("random")
Question 4
def constructible(a, b, c):
if a < b + c and b < a + c and c < a + b:
print("On peut construire le triangle")
else:
print("On ne peut pas construire le triangle")
Question 5
def max3(a, b, c):
return max2(max2(a,b),c)
# on trouve le max de a et b avec max2 et le max entre le maximum précédent et la dernière valeur c.
input
pour écrire un programme qui demande en entrée la longueur de chaque côté d’un triangle (en cm) et
renvoie son aire en sortie.En choisissant les noms de côtés de sorte à ce que a > b > c, et en réorganisant les termes de façon à optimiser les grandeurs ajoutées ou soustraites, on obtient la formule de Kahan, plus stable :
\[ \frac{1}{4} \sqrt{(a+(b+c))(a+(b-c))(c-(a-b))(c+(a-b))} \]
Montrer que la formule ci-dessus est correcte en vous appuyant sur la formule de Héron, éditer un nouveau programme utilisant cette formule de Kahan, puis tester les deux programmes avec des valeurs extrêmes (exemple : a = b = 1000000000 et c = 0,000000001).
Question 1 : Utiliser la formule de Héron. On testera le programme à l’aide d’un triangle rectangle (dimensions de votre choix) dont l’aire est facile à calculer.
Question 1
from math import sqrt
a=float(input("saisir a (en cm) : "))
b=float(input("saisir b (en cm) : "))
c=float(input("saisir c (en cm) : "))
s=(a+b+c)/2
Aire=sqrt(s*(s-a)*(s-b)*(s-c))
print("L'aire du triangle est",Aire,"cm²")
Question 2
from math import sqrt
a=float(input("saisir le plus grand côté a (en cm) : "))
b=float(input("saisir le côté moyen b (en cm) : "))
c=float(input("saisir c le petit côté c (en cm) : "))
s=(a+b+c)/2
Aire=(1/4)*sqrt((a+(b+c))*(c-(a-b))*(c+(a-b))*(a+(b-c)))
print("L'aire du triangle est",Aire,"cm²")
Écrire une fonction table9
qui produit l’affichage suivant lorsqu’on l’appelle :
for
et de l'argument à rajouter à la fonction print()
pour empêcher le retour à la ligne.
def table9():
for k in range(11):
print(k*9,end=" ")
table9()
Écrire une fonction table9triple
qui produit l’affichage suivant lorsqu’on l’appelle (utiliser la fonction de l’exercice précédent
dans le corps de la fonction table9triple
) :
def table9():
for k in range(11):
print(k*9,end=' ')
print()
def table9triple():
print('La table par 9 en trois exemplaires :')
table9()
table9()
table9()
table9triple()
ou bien, plus élégant...
def table9():
for k in range(11):
print(k*9,end=' ')
print()
def table9triple():
print('La table par 9 en trois exemplaires :')
for k in range(3):
table9()
table9triple()
Écrire une fonction qui prend en paramètres deux nombres x
et y
et renvoie le résultat de x²+ y²
.
On utilisera l’instruction return
.
Pour information, la représentation graphique de cette fonction de deux variables dans un repère orthonormé de l’espace (paraboloïde) :
a,b=2,3
def f(x,y):
return x**2+y**2
print(f(a,b))
table
avec un argument n
qui produit l’affichage de la table de n a l’appel
table(n)
.
Tester l’instruction table(2)
dans le Shell.
Qu’obtient-on ? Ainsi on peut remplacer le paramètre d’une fonction par une variable.
fragmentable
de 3 paramètres telle que l’appel
fragmentable(8,13,17)
produise l’affichage : Question 1
def table(n):
for k in range(11):
print(k*n,end=" ")
Question 2
def table(n):
for k in range(11):
print(k * n, end=" ")
a = 1
while a < 20:
table(a)
# print() pour sauter une ligne entre les tables
a = a + 1
Question 3
def fragmentable(n, debut, fin):
for k in range(debut, fin+1):
print(k,"*",n,"=",k*n)
Écrire un script qui demande à l'utilisateur le rayon d'une sphère et qui affiche son volume.
def cube(n):
return n**3
def VolumeSphere(r):
return 4 * 3.1416 * cube(r) / 3
r = float(input("Entrer la valeur du rayon r : "))
print("Le volume de cette sphère vaut : ", VolumeSphere(r))
from turtle import *
forward(120)
left(90)
color("red")
forward(80)
reset()
a = 0
while a < 12:
a = a + 1
forward(150)
left(150)
Les principales fonctions mises à votre disposition dans le module turtle sont les suivantes :
carre
permettant de tracer un carré rouge de coté 100 à l’appel de carre(100,’red’)
.carre
et donnant le résultat : Question 2
Utiliser une boucle for
. Attention à bien calculer le bon angle de rotation selon le sens.
Question 2
from turtle import *
# Fonction carre
def carre(taille, couleur):
"fonction qui dessine un carré de taille et de couleur déterminées"
color(couleur)
for k in range(4):
forward(taille)
right(90)
# Fonction triangle
def triangle(taille, couleur):
"fonction qui dessine un triangle équilatéral de taille et de couleur déterminées"
color(couleur)
for k in range(3):
forward(taille)
left(120)
Écrire un script avec Python permettant d'obtenir la figure suivante :
carre
puis une deuxième fonction ncarre
appelant n fois la fonction
carre
en faisant tourner le curseur du bon angle.
from turtle import *
def carre(taille, couleur):
"fonction qui dessine un carré de taille et de couleur déterminées"
color(couleur)
begin_fill()
c = 0
while c < 4:
forward(taille) # en pixels
right(90) # tourner le curseur à droite de 90 degrés
c = c + 1
end_fill()
up() # relever le crayon
goto(-150, -50) # reculer en haut à gauche
def ncarre(n):
"Choisir le nombre de carré(s) en argument"
for i in range(n):
down() # abaisser le crayon
carre(25, 'red') # tracer un carré
up() # relever le crayon
forward(30) # avancer + loin
left(10)
ncarre(36) # appel de la fonction précédente pour dessiner 36 carrés pour faire une tour complet
Écrire un script avec Python permettant d'obtenir la figure suivante :
Pour en savoir plus sur le module Turtle, rentrer dans la partie suivante qui détaille les possibilités offertes par ce dernier.
triangle
from turtle import *
def carre(taille, couleur):
"fonction qui dessine un carré de taille et de couleur déterminées"
color(couleur)
begin_fill()
c = 0
while c < 4:
forward(taille) # en pixels
right(90) # tourner le curseur à droite de 90 degrés
c = c + 1
end_fill()
# Fonction triangle
def triangle(taille, couleur):
"fonction qui dessine un triangle équilatéral de taille et de couleur déterminées"
color(couleur)
begin_fill()
for k in range(3):
forward(taille)
left(120)
end_fill()
up() # relever le crayon
goto(-150, -30) # reculer en haut à gauche
def npolygone(n):
"Choisir le nombre de carré(s) en argument"
for i in range(n):
down() # abaisser le crayon
carre(25, 'red') # tracer un carré
up() # relever le crayon
forward(30) # avancer + loin
left(10)
triangle(25, 'blue')
forward(30) # avancer + loin
left(10)
npolygone(18) # appel de la fonction précédente pour dessiner 18 séries carré+triangle