En testant les valeurs 5,1,1 le résultat obtenu est CONSTRUCTIBLE au lieu de PAS

Résolu/Fermé
domxav1759 - Modifié le 1 déc. 2020 à 14:33
 domxav1759 - 1 déc. 2020 à 15:12
Bonjour,
voilà j'ai fais cours second de python
dans laquelle il pose une question :

Si on choisit 3 nombres, il n'est pas toujours possible de construire un triangle ayant pour longueur ces nombres. Par exemple, il est impossible de construire un triangle de côtés de longueurs 1, 1 et 5.

Un triangle est constructible si pour chaque coté, sa longueur est inférieur à la somme des longueurs deux autres cotés.

Le but de cet exercice est de créer un programme qui nous dit si le triangle est constructible ou pas à partir des longueurs qui nous sont données.

Entrée : Trois longueurs a, b et c.

Sortie : Affiche "CONSTRUCTIBLE" si on peut construire un triangle ayant des cotés de ces trois longueurs ou bien ";PAS CONSTRUCTIBLE" sinon. N'oubliez pas les guillemets.
Pour les plus rapides, vous pouvez afficher "PLAT"si le triangle qu'on peut construire est plat.

j'ai écrit mon programme:


def ma_fonction(a,b,c):
ab=a*b
bc=c*c
ac=a*c
if ab<bc+ac and bc<ab+ac and ac<ab+bc:
return ";CONSTRUCTIBLE"
elif a<1 and b< and c<1:
return "PLAT";
else:
return "PAS CONSTRUCTIBLE"
print(ma_fonction(5,1,1))


en l’exécutant j'ai une erreur message :
"En testant les valeurs 5,1,1 le résultat obtenu est CONSTRUCTIBLE au lieu de PAS CONSTRUCTIBLE"

quelqu'un peut m'aider s'il vous plaît


Configuration: Windows / Firefox 83.0

3 réponses

j'ai corrigé un peu mon programme:


def ma_fonction(a, b, c):

if a < b+c and b < a+c and c < a+b:
return "CONSTRUCTIBLE"
elif 0 < a <= b <= c:
return "PLAT"
else:
return "PAS CONSTRUCTIBLE"


print(ma_fonction(2, 1, 1))


maintenant j'ai erreur suivante:
"En testant les valeurs 2,1,1 le résultat obtenu est PAS CONSTRUCTIBLE au lieu de PLAT"
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
1 déc. 2020 à 15:03
Bonjour,

Je ne comprends pas ta deuxième condition. Qu'essaies-tu de vérifier en écrivant
elif 0 < a <= b <= c:
?
Le triangle sera plat si a+b=c ou a+c=b ou b+c=a, pourquoi n'écris-tu pas ça de la même façon que dans ton premier test ?

Xavier
0
ok j'ai corrigé ma faute


elif a + b == c or a + c == b or b + c == a:


merci beaucoup pour votre aide
0