Bonjour, j'ai un devoir en SNT à faire pour la rentrée et j'ai beaucoup de mal. Il faut écrire un programme en python pour convertir des données DMS (Degré Minute Seconde) en données DD (Degré Décimaux) et inversement. Pouvez vous m'aider ( ou au moins me donner une piste ) s'il vous plait ? :/
Pour exécuter le programme, va sur un PC, et cherche l'interpréteur python en ligne. Executer, c'est la meilleure manière pour coder.
Pour cela, cherche " trinket python"
Sur le site tu verras une zone de codage, avec un gros bouton PLAY par dessus (triangle vers la droite)
Copie le code dans la zone de code, PLAY, et regarde le résultat :
Si la zone de résultat est trop "maigre", tu peux tirer la barre qui le sépare de la zone graphique, et la tirer vers le haut.
OK : voici le code (fin de la réponse) avec des tests.
Pour ce qui est du GPS, il faut faire attention : certains produisent des données du genre 78°55'44.29458"N dans ce cas il faut "découper" cette chaîne de caractères ("parser") ainsi , avec une regexp :
def parse_dms(dms):
parts = re.split('[^\d\w]+', dms)
lat = dms2dd(parts[0], parts[1], parts[2], parts[3])
re étant le module regexp (regular expression)
Cependant, je ne pense pas que c'est du niveau attendu ici.
Donc, voici le code. Copie/colle le dans la fenêtre de Trinket, et appuie sur PLAY (la flèche triangulaire)
def DD_vers_DMS (angle_DD):
# conversion angle degrés décimaux en degré minute seconde
Dans ton code, on manipule des chaînes de caractères (string)
Dans le test 3, tu vois comment convertir avec float()
1 votes Thanks 6
jasmine1134
Wow c'est génial merci beaucoup vraiment tu me sauve !! J'ai juste une dernière question : après # PROGRAMME PRINCIPAL c'est des test donc ils ne sont pas à mettre dans le programme on est d'accord ? Sinon tout est super clair encore merci :)))
fffarid
Classiquement, les fonctions ne peuvent pas s'exécuter si elles ne sont pas appelées. On écrit donc un programme principal qui va prouver qu'on a bien écrit le code, et aussi qu'il donne le bon résultat. Ca s'appelle des tests. Quand on me demande une fonction, je fournis avec un code de test.
Lista de comentários
Réponse :
Explications :
Pour exécuter le programme, va sur un PC, et cherche l'interpréteur python en ligne. Executer, c'est la meilleure manière pour coder.
Pour cela, cherche " trinket python"
Sur le site tu verras une zone de codage, avec un gros bouton PLAY par dessus (triangle vers la droite)
Copie le code dans la zone de code, PLAY, et regarde le résultat :
Si la zone de résultat est trop "maigre", tu peux tirer la barre qui le sépare de la zone graphique, et la tirer vers le haut.
OK : voici le code (fin de la réponse) avec des tests.
Pour ce qui est du GPS, il faut faire attention : certains produisent des données du genre 78°55'44.29458"N dans ce cas il faut "découper" cette chaîne de caractères ("parser") ainsi , avec une regexp :
def parse_dms(dms):
parts = re.split('[^\d\w]+', dms)
lat = dms2dd(parts[0], parts[1], parts[2], parts[3])
re étant le module regexp (regular expression)
Cependant, je ne pense pas que c'est du niveau attendu ici.
Donc, voici le code. Copie/colle le dans la fenêtre de Trinket, et appuie sur PLAY (la flèche triangulaire)
def DD_vers_DMS (angle_DD):
# conversion angle degrés décimaux en degré minute seconde
# return : DMS[3] deg min sec : degrés minutes secondes
deg = int(angle_DD)
md = abs(angle_DD - deg) * 60
minute = int(md)
sec = (md - minute) * 60
return [deg, minute, sec]
def DMS_vers_DD (angle_DMS):
# conversion angle degré minute seconde en degrés décimaux
# angle_DMS : DMS[3] deg min sec : degrés minutes secondes
# return : angle_DD
angle_DD = float(DMS[0]) + float(DMS[1])/60 + float(DMS[2])/(60*60);
return angle_DD
# PROGRAMME PRINCIPAL
print "*** Test 1 : DD vers DMS ***"
latitude = 78.9288888889
DMS=3*[0.]
DMS= DD_vers_DMS (latitude)
print "Latitude :", latitude," -->",DMS[0],"°",DMS[1],"'",DMS[2],"\""
print "*** Test 2 : DMS vers DD ***"
print "Latitude DMS :", latitude," -->",DMS[0],"°",DMS[1],"'",DMS[2],"\""
print "Latitude DD:" , DMS_vers_DD (DMS)
print "*** Test 3 : DD string vers DMS ***"
latitude = "78.9288888889"
lat=float(latitude)
DMS=3*[0.]
DMS= DD_vers_DMS (lat)
print "Latitude :", latitude," -->",DMS[0],"°",DMS[1],"'",DMS[2],"\""
INTEGRATION DANS LE CODE EXISTANT
Dans ton code, on manipule des chaînes de caractères (string)
Dans le test 3, tu vois comment convertir avec float()