Partage
  • Partager sur Facebook
  • Partager sur Twitter

[python] : liste/boucle...

Sujet résolu
5 décembre 2005 à 20:21:13

lu à tous

voila je me lance dans le python mais là j'ai un p'tit soucis
c'est un exercice donc pas très interessant si ce n'est le fait de réussir à faire marcher le code ^^

le but est de trouver la nature d'une triange en fonction de ses 3 longueurs de coté (entrées par l'utilisateur)
voila le code

# -*- coding: iso8859-1 -*-

#exo 6.11 : determine la nature d'une triangle en fonction de ses

print  "Entrez les 3 longueurs du triangles séparéés par une virgule: "
L=list(input())     #cree une liste de 0à2
triNature,triNatureIso = '',''  #initialisation
if L[3]#le gens a rentré trop de nombre : erreur
   print "Ce n'est pas un  triangle."
else#nature du traingle
    #equilateral:
        if L[0]==L[1] and L[0]==L[2]:
              triNature = 'equilateral'
        #isocèle : on teste sans socis car si equilateral, on ne rentre pas
        elif L[0]!=L[1] or L[0]!=L[2] or L[1]!=L[2]:
            if L[0]==L[1] or L[0] == L[2] or L[1]==L[2]:
                 triNatureIso = "isocèle"

            #rectangle : test de pythagore
            #on prend le plus grand des 3
            i,max,s_carre=1,L[0],0
            while i<3:
                if L[i]>max:
                        max=L[i]
                        i=i+1

                #test du carre : a²+b²=c²=>rect
                while i<3:
                    if L[i] !=max:
                            s_carre=s_carre+L[i]*L[i]
                if s_carre ==  max*max :
                    triNature = 'rectangle'
        #quelconque sinon
        else:
             triNature = 'quelconque'
        print "Ce triangle est ",TriNature," ",TriNatureIso,"\n"

raw_input("Cliquez sur entrée pour terminer le programe...")


merci
+
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
5 décembre 2005 à 21:17:23

Ce code est torrible (excuse moi :) ) Nan bon ok, alors.

Ce qui peut-être utile en Python c'est de voir les messages d'erreurs de l'interpréteur :

Traceback (most recent call last):
File "pythagore.py", line 8, in ?
if L[3]: #le gens a rentré trop de nombre : erreur
IndexError: list index out of range

Tu vois, tu as la ligne, et le message d'erreur : list index out of range. Ca veut tout simplement dire que tu appelles un élement de la liste (le 3, en se souvent que les indexs de listes commencent à 0, donc en fait le 4) alors que la liste ne contient pas autant d'éléments. Et en effet, ta liste est composée de trois entrées de l'utilisateur, rangées aux indexs 0, 1 et 2.

Donc, pas d'élément 3 (qui serait en fait le quatrième). C'est une façon très crade de tester l'existence du-dit élément. On pourrait à la place regarder si la longueur de la liste est supérieur à 3...

if len(L) > 3: #le gens a rentré trop de nombre : erreur
print "Ce n'est pas un triangle."

pas regardé la suite.
  • Partager sur Facebook
  • Partager sur Twitter
5 décembre 2005 à 23:26:50

génialissime ^^ j'y avais par consequent pas pensé ^^

Je vais deja corriger ça
par le même occasion je cherche un debugger gratos pour python car ça m'aiderais un peu ^^

merci encore
  • Partager sur Facebook
  • Partager sur Twitter
6 décembre 2005 à 0:27:48

Bonjour!
Je reconnais ici un exercice du cours que tout le monde connais: http://www.ulg.ac.be/cifen/inforef/swi/python.htm

Donc, je veux juste te faire remarqué que... à la fin du livre il y a les solutions.
Si ça t'énerve d'aller voir à la fin du livre, tu remarquera que tu peut télécharger la solution des numéros.
Voilà un lien direct: http://www.ulg.ac.be/cifen/inforef/swi/download/cours_python.tgz

Sinons, cool! En cherchant le lien direct j'ai trouvé le livre en format sxw :D
Ça m'énerve les .PDF!!!
  • Partager sur Facebook
  • Partager sur Twitter
6 décembre 2005 à 12:17:59

ah toi aussi ^^ oui c surtout énervant pour les copié-cllé ^^
merci pour le lien effectivement la solution est là ^^ et je crois que c un zéro pointé pour moi sur cet exo :(
  • Partager sur Facebook
  • Partager sur Twitter