a = input('enter a ')
b = input('enter b ')
c = input('enter c ')
def is_right_angled(a, b, c):
a, b, c = sorted([a, b, c]) #sort inputs smallest to largest
pathag=(a * a + b * b - c * c) #< 0.1 #a ^2 + b ^2 - c ^2 should = 0 approx
if pathag<0.1: # test "pathag" to to see if close
print ("This is a right triangle")
else: # if "pathag" not close, not "right"
print ("This is NOT a right triangle")
return abs(a * a + b * b - c * c) < 0.1
Répondre
Il pourrait y avoir un questions couple spécifiques à la fonction d'impression ne fonctionne pas (je pense que vous pouvez également revoir certaines des hypothèses logiques au volant de votre fonction is_right_angled.)
1) Une fonction d'entrée crée une variable de chaîne. Vous devrez convertir explicitement ceci en une variable int ou float pour que votre fonction fonctionne correctement avec ces variables.
a = float(input('enter a '))
2) Vous n'appelez pas réellement la fonction dans le code ci-dessus. Assurez-vous de l'appeler ou le code ne fonctionnera pas. Ajoutez ceci à la fin de votre script:
is_right_angled(a, b, c)
Les entrées sont basées sur l'utilisateur. Je les saisis pour tester l'algorithme et voir si la déclaration correcte s'imprime (si/quand j'apprends à le faire fonctionner). I.E .: 3,4,5 devrait rendre "Est un triangle rectangle" –
Quelles sont vos entrées? –
Vous avez défini une fonction, mais je n'y vois aucun appel. Ce que vous avez posté doit entrer 3 valeurs, puis tomber au fond et quitter sans rien faire d'autre. –
En outre, juste en étant défensif - il y a probablement une erreur de type à venir si vous appelez la fonction avec 'a',' b', et 'c'. Les lire depuis 'input' produit des chaînes; vous devez les changer en type numérique. Vous pouvez le faire en disant, par exemple, 'a, b, c = float (a), float (b), float (c)'. –