Зараз 2525 рік, і ми щойно вирушили в подорож, щоб відвідати всі планети Сонячної системи (Меркурій, Венеру, Землю, Марс, Юпітер, Сатурн, Уран і Нептун). Перша зупинка - Меркурій, де митні правила вимагають заповнити форму (бюрократія, вочевидь, не є особливістю самої лише Землі). Коли ми передаємо форму митнику, він уважно її вивчає і хмуриться. Невже ми справді сподіваємося, що він повірить, ніби нам лише 50 років? Нам, мабуть, ближче до 200!
Розвеселені, ми чекаємо, що митник ось-ось засміється, але він, схоже, цілком серйозний. Ми розуміємо, що вписали свій вік у земних роках, а митник чекав на нього в меркуріанських роках! Оскільки орбітальний період Меркурія навколо Сонця значно коротший за земний, у меркуріанських роках ми насправді значно старші. Після кількох швидких обчислень ми можемо назвати свій вік у меркуріанських роках. Митник задоволено всміхається і пропускає нас. Подумки ми занотовуємо собі розрахувати свій вік для конкретної планети перед майбутніми митними перевірками, щоб уникати таких плутанин.
Якщо нам цікаво, чому Плутон не потрапив до списку, подивімося це відео на YouTube.
Маючи вік у секундах, обчислімо, скільки років комусь було б на одній із планет нашої Сонячної системи.
Один земний рік дорівнює 365.25 земних діб, або 31,557,600 секунд. Якби нам сказали, що комусь 1,000,000,000 секунд, його вік становив би 31.69 земних років.
Для інших планет треба врахувати їхній орбітальний період у земних роках:
| Планета | Орбітальний період у земних роках |
|---|---|
| Меркурій | 0.2408467 |
| Венера | 0.61519726 |
| Земля | 1.0 |
| Марс | 1.8808158 |
| Юпітер | 11.862615 |
| Сатурн | 29.447498 |
| Уран | 84.016846 |
| Нептун | 164.79132 |
Насправді один повний оберт Землі навколо Сонця триває ближче до 365.256 діб (1 сидеричний рік). У григоріанському календарі в середньому 365.2425 діб. Хоча це не цілком точно, у цій вправі використовується значення 365.25. Про інші способи вимірювання року можна дізнатися зі статті Рік у Вікіпедії.
Для треку Python у цій вправі потрібно створити клас SpaceAge (classes), який містить методи для всіх планет Сонячної системи.
Методи мають дотримуватися угоди про найменування on_<planet name>.
Кожен метод має повертати (return) вік («на» цій планеті) у роках, округлений до двох знаків після коми:
#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
Більше про створення та використання класів можна дізнатися тут:
Зареєструйтеся на Exercism, щоб вивчати й опановувати Python, а також 17 концепцій146 вправ та справжнє наставництво від людей, і все це безкоштовно.