У Python є три різні види вбудованих чисел: ints, floats і complex. Однак у цій вправі ми будемо мати справу лише з ints і floats.
ints - це цілі числа. Наприклад: 1234, -10, 20201278.
Цілі числа в Python мають довільну точність: кількість цифр обмежує лише обсяг доступної памʼяті системи, на якій виконується код.
floats - це десяткові числа, тобто числа з десятковою точкою. Наприклад: 0.0, 3.14, -9.01.
Числа з плаваючою комою зазвичай реалізовано в Python через double у C (точність до 15 десяткових знаків), але їхнє представлення залежить від системи та інших деталей реалізації. Це може спричиняти несподіванки під час роботи з такими числами, але для більшості ситуацій цього цілком достатньо.
Більше деталей і обговорень можна знайти в цих джерелах:
int()float()Python повністю підтримує арифметику між ints і floats. Коли використовуються бінарні арифметичні оператори (+, -, *, /, // і %), вужчі числа перетворюються так, щоб відповідати ширшим.
Python вважає ints вужчими за floats. Тому число з плаваючою комою у виразі гарантує, що й результат буде числом з плаваючою комою. Однак під час ділення результат завжди буде числом з плаваючою комою, навіть якщо використано лише цілі числа.
# The int is widened to a float here, and a float type is returned.
>>> 3 + 4.0
7.0
>>> 3 * 4.0
12.0
>>> 3 - 2.0
1.0
# Division always returns a float.
>>> 6 / 2
3.0
>>> 7 / 4
1.75
# Calculating remainders.
>>> 7 % 4
3
>>> 2 % 4
2
>>> 12.75 % 3
0.75
Якщо потрібен результат у вигляді цілого числа, можна використати //, щоб відкинути дробову частину.
>>> 6 // 2
3
>>> 7 // 4
1
Щоб перетворити число з плаваючою комою на ціле, можна використати int(). Щоб перетворити ціле число на число з плаваючою комою, можна використати float().
>>> int(6 / 2)
3
>>> float(1 + 2)
3.0
Наш друг Чендлер планує відвідати екзотичні країни по всьому світу. На жаль, Чендлер не дуже добре знає математику. Він трохи хвилюється, що під час подорожі його обдурять на обміні валют, і хоче, щоб ми зробили для нього валютний калькулятор. Ось його вимоги до застосунку:
Створіть функцію exchange_money(), яка приймає 2 параметри:
budget : сума грошей, яку ми плануємо обміняти.exchange_rate : сума національної валюти, що дорівнює одній одиниці іноземної валюти.Ця функція повинна повернути вартість обміненої валюти.
Примітка: Якщо наша валюта - USD і ми хочемо обміняти USD на EUR за курсом 1.20, то 1.20 USD == 1 EUR.
>>> exchange_money(127.5, 1.2)
106.25
Створіть функцію get_change(), яка приймає 2 параметри:
budget : сума грошей до обміну.exchanging_value : сума грошей, яку беруть із бюджету для обміну.Ця функція повинна повернути суму грошей, що залишилася від бюджету.
>>> get_change(127.5, 120)
7.5
Створіть функцію get_value_of_bills(), яка приймає 2 параметри:
denomination : вартість однієї купюри.number_of_bills : загальна кількість купюр.Цей обмінний пункт працює лише з готівкою певних номіналів. Загальна сума, яку ми отримуємо, повинна ділитися на вартість однієї «купюри», або одиниці, що може залишити дріб чи остачу. Наша функція повинна повернути лише загальну вартість купюр (без дробових сум), які пункт видасть. На жаль, пункт залишає собі остачу/решту як додатковий бонус.
>>> get_value_of_bills(5, 128)
640
Створіть функцію get_number_of_bills(), яка приймає amount і denomination.
Ця функція повинна повернути кількість купюр, які можна отримати в межах заданої суми. Іншими словами: скільки цілих купюр уміщується в початкову суму? Памʼятаймо: отримати можна лише цілі купюри, а не частини купюр, тож не забуваймо ділити відповідно. Фактично ми округлюємо вниз до найближчої цілої купюри/номіналу.
>>> get_number_of_bills(127.5, 5)
25
Створіть функцію get_leftover_of_bills(), яка приймає amount і denomination.
Ця функція повинна повернути суму залишку, яку не можна видати з початкової суми за заданого номіналу купюр. Дуже важливо точно знати, скільки пункт залишає собі.
>>> get_leftover_of_bills(127.5, 20)
7.5
Створіть функцію exchangeable_value(), яка приймає budget, exchange_rate, spread і denomination.
Параметр spread - це відсоток, який беруть як комісію за обмін, записаний цілим числом.
Його потрібно перетворити на десяткове число, поділивши на 100.
Якщо 1.00 EUR == 1.20 USD, а spread дорівнює 10, то фактичний курс обміну буде таким: 1.00 EUR == 1.32 USD, бо 10% від 1.20 становить 0.12, і цю додаткову комісію додають до курсу обміну.
Ця функція повинна повернути максимальну вартість нової валюти після обчислення курсу обміну разом із spread. Памʼятаймо, що номінал валюти - це ціле число, і його не можна ділити на дрібніші частини.
Примітка: Повернене значення має бути типу int.
>>> exchangeable_value(127.25, 1.20, 10, 20)
80
>>> exchangeable_value(127.25, 1.20, 10, 5)
95
Зареєструйтеся на Exercism, щоб вивчати й опановувати Python, а також 17 концепцій146 вправ та справжнє наставництво від людей, і все це безкоштовно.