Je suis nouveau sur python et je me demande quelle est la meilleure façon d'écrire ceci? L'utilisateur entrera un type "orbiting_body" et s'il correspond, il tirera les variables correctes.

if orbiting_body == "Ariel":    
    primary_body_radius = 578.9
    gravitational_parameter = 90.099
elif orbiting_body == "Callisto":   
    primary_body_radius = 2410.3    
    gravitational_parameter = 7181.224
elif orbiting_body == "Ceres":  
    primary_body_radius = 481.5 
    gravitational_parameter = 62.66886
elif orbiting_body == "Charon": 
    primary_body_radius = 603.5 
    gravitational_parameter = 101.4448
elif orbiting_body == "Deimos": 
    primary_body_radius = 6.2   
    gravitational_parameter = 0.000098521588
elif orbiting_body == "Dione":  
    primary_body_radius = 561.4 
    gravitational_parameter = 73.14704
elif orbiting_body == "Earth":  
    primary_body_radius = 6371  
    gravitational_parameter = 398678.064
elif orbiting_body == "Eris":   
    primary_body_radius = 1163  
    gravitational_parameter = 1114.558
elif orbiting_body == "Europa": 
    primary_body_radius = 1560.8    
    gravitational_parameter = 3203.52
else:   
    primary_body_radius = 0.0   
    gravitational_parameter = 0.0
1
SoRobby 12 avril 2018 à 18:40

4 réponses

Meilleure réponse

Mettez-le dans un dict

db = {
  "Ariel": (578.9, 90.099),
  ... and etc
}

primary_body_radius, gravitational_parameter = db.get(orbiting_body, (0.0, 0.0))
5
Fred Larson 12 avril 2018 à 15:47

Voici une autre approche très similaire à celle de @ tdelaney

from collections import defaultdict

orbiting_body = ...

primary_body_radius, gravitational_parameter = defaultdict(lambda: (0,0), {
    'Ariel': (578.9, 90.099),
    'Callisto': (2410.3, 7181.224),
    # similarly for others
})[orbiting_body]
0
Lakshay Garg 12 avril 2018 à 15:47

Essayez d'utiliser un dictionnaire, voici un exemple de code:

Ici, je saisis des valeurs dans mon dictionnaire

my_dict = {'Ariel':578.9, 'Callisto': 2410.3, 'Ceres':481.5}

Vous pouvez également insérer des valeurs dans le dictionnaire comme suit:

my_dict['Chairos'] = 6.2

Et vous pouvez y accéder en spécifiant la clé de désir:

primary_body_radius = my_dict['Ariel']
>> print(primary_body_radius)
>> 578.9
1
Diego Contreras 12 avril 2018 à 15:49

Je ne me souviens pas très bien de la syntaxe python car je ne l'utilise pas depuis des années, mais considérez la logique: Si vous ne souhaitez pas utiliser le polymorphisme, vous pouvez créer une carte de dictionnaire (clé, valeur). Par exemple: map [Europa] = (1560.8,3203.52) carte [par défaut] = (0.0,0.0)

Et lorsque l'utilisateur insère orbiting_body, vous affectez des variables en faisant:

(primary_body_radius,gravitational_paramter)=map[orbiting_body]

0
Alex Foglia 12 avril 2018 à 15:46