O ano é 2525 e você acaba de embarcar em uma jornada para visitar todos os planetas do Sistema Solar (Mercúrio, Vênus, Terra, Marte, Júpiter, Saturno, Urano e Netuno). A primeira parada é Mercúrio, onde a alfândega exige que você preencha um formulário (aparentemente a burocracia não é exclusividade da Terra). Quando você entrega o formulário ao fiscal da alfândega, ele o examina com atenção e franze a testa. "Você realmente espera que eu acredite que tem apenas 50 anos? Você deve estar mais perto dos 200 anos!"
Você acha que é brincadeira e espera que o fiscal comece a rir, mas ele parece estar falando completamente sério. Você percebe que informou sua idade em anos terrestres, mas o fiscal esperava anos mercurianos! Como o período orbital de Mercúrio ao redor do Sol é bem mais curto que o da Terra, você na verdade é bem mais velho em anos mercurianos. Depois de alguns cálculos rápidos, você consegue informar sua idade em anos mercurianos. O fiscal sorri, satisfeito, e faz sinal para você passar. Você anota mentalmente para calcular de antemão sua idade em cada planeta antes das próximas verificações alfandegárias, para evitar confusões assim.
Se você está se perguntando por que Plutão ficou de fora, assista a este vídeo do YouTube.
Dada uma idade em segundos, calcule quantos anos alguém teria em um planeta do nosso Sistema Solar.
Um ano terrestre equivale a 365.25 dias terrestres, ou 31,557,600 segundos. Se você soubesse que alguém tem 1,000,000,000 segundos de idade, essa idade seria 31.69 anos terrestres.
Para os outros planetas, você precisa levar em conta o período orbital deles em anos terrestres:
| Planeta | Período orbital em anos terrestres |
|---|---|
| Mercury | 0.2408467 |
| Venus | 0.61519726 |
| Earth | 1.0 |
| Mars | 1.8808158 |
| Jupiter | 11.862615 |
| Saturn | 29.447498 |
| Uranus | 84.016846 |
| Neptune | 164.79132 |
A duração real de uma órbita completa da Terra ao redor do Sol é mais próxima de 365.256 dias (1 ano sideral). O calendário gregoriano tem, em média, 365.2425 dias. Embora não seja totalmente preciso, 365.25 é o valor usado neste exercício. Veja Ano na Wikipédia para conhecer outras formas de medir um ano.
Na trilha de Python, este exercício pede que você crie uma classe SpaceAge (classes) que inclui métodos para todos os planetas do sistema solar.
Os métodos devem seguir a convenção de nomenclatura on_<planet name>.
Cada método deve return a idade (naquele planeta) em anos, arredondada para duas casas decimais:
#creating an instance with one billion seconds, and calling .on_earth().
>>> SpaceAge(1000000000).on_earth()
#This is one billion seconds on Earth in years
31.69
Para saber mais sobre como construir e usar classes, veja:
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.