Reputation: 273
I'm new to python and am wondering what is a more effective/proper way to write this? The user will input their a a "orbiting_body" type and if they match it will pull the correct variables.
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
Upvotes: 1
Views: 54
Reputation: 484
Try using a dictionary, heres is an example code:
Here i'm entering values to my dictionary
my_dict = {'Ariel':578.9, 'Callisto': 2410.3, 'Ceres':481.5}
You can also insert values to the dictionary as follows:
my_dict['Chairos'] = 6.2
And you can access them by specifying the desire key:
primary_body_radius = my_dict['Ariel']
>> print(primary_body_radius)
>> 578.9
Upvotes: 1
Reputation: 2173
Here's another approach very similar to @tdelaney's
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]
Upvotes: 0
Reputation: 77347
Put it in a dict
db = {
"Ariel": (578.9, 90.099),
... and etc
}
primary_body_radius, gravitational_parameter = db.get(orbiting_body, (0.0, 0.0))
Upvotes: 5
Reputation: 530
Not remembering python syntax very well because I don't use it since years, but consider the logic:
If you don't want to use polymorphism, you can create a dictionary map(key,value). For example:
map[Europa]=(1560.8,3203.52)
map[default]=(0.0,0.0)
and when user insert orbiting_body you assign variables by doing:
(primary_body_radius,gravitational_paramter)=map[orbiting_body]
Upvotes: 0