Python : convertir Rad -> deg sec min

Résolu/Fermé
Sayu - 23 août 2009 à 12:06
piotaras Messages postés 3 Date d'inscription mercredi 30 septembre 2015 Statut Membre Dernière intervention 30 septembre 2015 - 30 sept. 2015 à 02:17
Bonjour,

Je suis en train de programmer en Python pour le plaisir, et dans mon tuto on me donne des exercices.
Je cite :

5.2. Écrivez un programme qui convertisse en degrés, minutes, secondes un angle fourni au départ en radians.


Voilà mon algorithme :
# Variables

a = 180 #angle en radian
pi = 3.14

# Script

print "Un angle de", a, "degrés est égal à :"

a = 180 * a / pi
print a
deg = a % 60
sec = ((a-deg)/60)%60
min = (a-deg-sec*60)/60/60

print min, "minutes,", sec, "secondes et", deg, "degrés."


Mon angle en radian est de 180 rad.
Voilà le resultat :
Un angle de 180 degrés est égal à :
10318.4713376
2.0 minutes, 51.0 secondes et 58.4713375796 degrés.


Je précise que je passe en seconde... Donc je n'ai jamais vu tout cela. Je voudrai juste savoir si mon résultat est juste...

Merci d'avance :D

4 réponses

Bonjour,

Je me permet de proposer mon script:

#Exercice 5.2
#Convertir un angle donné en degrés, minutes, secondes en radian
#Sachant que degres=(180*radians)/pi

#La base
radians=0.602662190713642
pi=3.141592653589793238462643383279502884197

#Convertir radians en degres decimaux
degres=(180*radians)/pi

#Convertir degres de decimaux en degres fixe (degres, minutes, secondes)

Dfin=int(degres) #Mise de coté des degrés
restant=degres-int(degres) #Mise de coté des restant aprés la virgule
Mfin=int(restant*60) #Calcul des minutes
restant=(restant*60)-Mfin #Calcul des restant aprés la virgule
Sfin=int(restant*60) # Calcul des secondes

#Affichage du résultat
print("Exercice 5.2")
print("Si l'angle est égal à : ",radians,"radians")
print("Il fait donc : ",Dfin,"degrés",Mfin,"minutes",Sfin,"secondes")


et pour le contraire:

#Exercice 5.1
#Convertir un angle donné en degrés, minutes, secondes en radian
#Sachant que radian=pi*(degres(decimaux))/180

#Donner la base
Dbase=34
Mbase=31
Sbase=48

#Convertir la base en degrés décimaux

degres=Dbase+(Mbase/60)+(Sbase/3600)

#Definition de pi (3,141592653589793238462643383279502884197)

pi=3.141592653589793238462643383279502884197

#Effectuer la convertion des degres en radians

radians=(pi*degres)/180

print("Exercice 5.1")
print("Si l'angle est égal à : ",Dbase,"degrés",Mbase,"minutes",Sbase,"secondes")
print("Il fait donc : ",radians,"radians")
14
piotaras Messages postés 3 Date d'inscription mercredi 30 septembre 2015 Statut Membre Dernière intervention 30 septembre 2015 4
30 sept. 2015 à 02:17
# Exercice 5.2:
# Convertit en degrés, minutes et secondes un angle exprimé en radians
# Cet exercice n'a pas pu être résolu autrement qu'en utilisant la
# fonction int() qui à ce stade du livre n'a pas encore été dévoilée.

PI = 3.141592653589793
rad = 3.1416

# On commence par exprimer en secondes entières l'angle <rad>, afin
# de conserver la plus grande précision possible.
secondes = int(180*rad/PI*60*60)

s = secondes%60
m = secondes//60
d = m//60
m = m%60

print(rad,"rad = ",d,"°",m,"'",s,'"')
4
Cela me semble ... hum ... pas clair !

ceci le serait-il plus ?

# exo 5.1
print ("exo 5.1")
pi=3.141592653589793238462643383279502884197
degre = 34
minutes = 31
secondes = 48
myFloat = degre + minutes/60 + secondes/3600
print (degre,"°", minutes,"'",secondes, "'' == " ,myFloat)
radian = myFloat * pi / 180
print (" == ", radian , "radians")

# exo 5.2
print (" ")
print ("exo 5.2")
pi=3.141592653589793238462643383279502884197
myFloat = 0.602662190714
Fdegre = myFloat * 180 / pi
degre = int(Fdegre)
Fminutes=(Fdegre - degre)*60
minutes=int(Fminutes)
Fsecondes = (Fminutes - minutes)*60
secondes = int(Fsecondes)
print (myFloat, " radians = ",degre,"°", minutes,"'",secondes, "''")

# resultats :

exo 5.1
34 ° 31 ' 48 '' == 34.53
== 0.602662190714 radians

exo 5.2
0.602662190714 radians = 34 ° 31 ' 48 ''
1
piotaras Messages postés 3 Date d'inscription mercredi 30 septembre 2015 Statut Membre Dernière intervention 30 septembre 2015 4
30 sept. 2015 à 01:44
Le problème c'est que à ce stade du livre ("Apprendre à programmer avec Python 3", 3e édition, de Gérard Swinnen), on n'est pas censé connaître la fonction int().
Donc la question est de savoir si c'est possible de résoudre cet exercice sans y recourir, en utilisant par exemple la division entière et le modulo (%).
Ca fait une heure que je me casse la tête dessus !
0
Sayu Messages postés 377 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 20 avril 2010 60
23 août 2009 à 12:18
J'ai retourné le probléme a l'envers, et j'ai effectué un nouveau script :

# Variables

min, sec, deg = 2, 51, 58.4713375796
pi = 3.14

# Script

a = min*3600 + sec*60 + deg
print "Un angle de", min, "minutes,", sec,"secondes et de", deg, "équivaut à", a, "degrés."
rad = pi * a / 180

print "Donc il correspond à", rad, "radian."


Resultat :

Un angle de 180 radian est égal à :
2.0 minutes, 51.0 secondes et 58.4713375796 degrés, soit un total de 10318.4713376 degrés.


Une petite recorrection du script précédemment effectué :

# Script

print "Un angle de", a, "radian est égal à :"
0
piotaras Messages postés 3 Date d'inscription mercredi 30 septembre 2015 Statut Membre Dernière intervention 30 septembre 2015 4
30 sept. 2015 à 01:46
On ne doit pas avoir de décimales dans le résultat. Ces dernières se transforment en degrés et secondes justement !
0