Python має три різні типи вбудованих чисел: цілі числа (int), числа з плаваючою комою (float) та комплексні числа (complex).
Дроби (fractions.Fraction) і десяткові числа (decimal.Decimal) також доступні через імпорт зі стандартної бібліотеки.
Цілі числа, зокрема шістнадцяткові (hex()), вісімкові (oct()) та двійкові (bin()) числа без десяткових знаків, також належать до типу ints:
# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>
>>> -12
-12
Числа, що містять десяткову точку (з дробовою частиною або без неї), належать до типу floats:
>>> 3.45
3.45
>>> type(3.45)
<class 'float'>
Python повністю підтримує арифметичні операції між цими різними типами чисел і перетворює вужчі числа, щоб узгодити їх із ширшими, коли застосовуються бінарні арифметичні оператори (+, -, *, /, // та %).
Оператори додавання та віднімання поводяться так само, як у звичайній математиці.
Якщо один або кілька операндів є float, решту int також буде перетворено на float:
>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0
Як і у випадку з додаванням і відніманням, множення перетворює вужчі числа, щоб узгодити їх із ширшими:
>>> 3 * 2
6
>>> 3 * 2.0
6.0
Ділення завжди повертає float, навіть якщо результат є цілим числом:
>>> 6/5
1.2
>>> 6/2
3.0
Якщо потрібен результат типу int, можна скористатися цілочисельним діленням, щоб відкинути дробову частину.
Цілочисельне ділення виконується за допомогою оператора //:
>>> 6//5
1
>>> 6//2
3
Оператор остачі (%) повертає остачу від ділення двох операндів:
# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0
# The result of % is 2 here, because 3 only goes into 5 once, with 2 leftover
>>> 5 % 3
2
Інший погляд на 5 % 3:
>>> whole_part = int(5/3)
1
>>> decimal_part = 5/3 - whole_part
0.6666666666666667
>>> whole_remainder = decimal_part * 3
2.0
Python надає вбудовану функцію round(number, <decimal_places>), щоб округлити число з плаваючою комою до заданої кількості десяткових знаків.
Якщо кількість десяткових знаків не вказано, число округлюється до найближчого цілого й повертає int:
>>> round(3.1415926535, 2)
3.14
>>> round(3.1415926535)
3
Python дозволяє використовувати круглі дужки, щоб групувати вирази. Це корисно, коли потрібно змінити типовий порядок виконання операцій.
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
Python дотримується правила PEMDAS щодо пріоритету операторів.
Це означає, що обчислення всередині () мають найвищий пріоритет, далі йдуть **, потім *, /, //, %, + та -:
>>> 2 + 3 - 4 * 4
-11
>>> (2 + 3 - 4) * 4
4
# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 64, then 2 + 192
>>> 2 + 3 * 4 ** 4
770
Цілі числа в Python мають довільну точність: кількість цифр обмежується лише доступною памʼяттю системи, на якій виконується код.
Числа з плаваючою комою зазвичай реалізовано через double у C (15 десяткових знаків точності), але їхнє подання може відрізнятися залежно від системи.
Комплексні числа мають частини real та imaginary, кожна з яких подана числом з плаваючою комою.
Щоб докладніше дізнатися про проблеми й обмеження арифметики з плаваючою комою в різних мовах програмування, варто заглянути на 0.30000000000000004.com та в The Python Tutorial.
Компанія, у якій ми працюємо, хоче зменшити свій вуглецевий слід, тож хоче, щоб ми написали програму для обчислення споживання електроенергії та вартості роботи їхніх електроприладів.
У роботодавця є програма, яка обчислює час роботи різних електроприладів. Наразі час зберігається в годинах. Коли роботодавець додав години, він помітив, що тривалість часу неправильна. Він хоче, щоб ми додали 3 додаткові години до даних про час. Він також хотів би знати, скільки «додаткових» годин залишиться після переведення даних у «повні» дні (у добі 24 години). Час, який потрібно перевести, може не становити повних днів.
Реалізуйте функцію get_extra_hours(), яка приймає ціле число, у якому зберігається кількість годин.
Функція повинна виконати відповідне коригування «додаткових годин», а потім повернути (return) ціле число, яке показує, скільки годин потрібно відняти від загальної кількості, щоб отримати час у «повних» днях.
>>> get_extra_hours(25)
4
Роботодавець хоче знати споживання електроенергії різних електроприладів у кВт. кВт означає кіловат, а вати - це одиниця потужності. Кіло в назві одиниці - це префікс метричної системи, що означає 1000. Один кіловат == 1000 ват.
Реалізуйте функцію get_kW_value(), яка приймає ціле число, у якому зберігається кількість ват.
Тоді функція повинна повернути (return) вати як кіловати, округлені до 1 знака після коми.
>>> get_kW_value(1150)
1.2
Щоб обчислити вартість роботи електроприладів, роботодавцю потрібно знати споживання електроенергії в кВт·год. кВт·год означає кіловат-годину, де година - це одиниця часу. Одна кіловат-година == 1000 ват, використаних за 1 годину. Година складається з 60 хвилин, а хвилина - з 60 секунд. Одна година дорівнює 3600 секундам. Щоб обчислити значення в кВт·год, потрібно перевести вати в кВт, а потім націло поділити результат на 3600.
Реалізуйте функцію get_kWh_value(), яка приймає ціле число, у якому зберігається кількість ват.
Тоді функція повинна повернути (return) кіловат-години як ціле число.
>>> get_kWh_value(5000000)
1
Електроприлади не мають 100% ефективності. Тому роботодавець хоче, щоб ми обчислили ефективність електроприладів. Щоб отримати ефективність, потрібно поділити коефіцієнт потужності (число з плаваючою комою від 0 до 100) на 100.
Реалізуйте функцію get_efficiency(), яка приймає число з плаваючою комою — коефіцієнт потужності.
Тоді функція повинна повернути (return) обчислену ефективність як число з плаваючою комою.
>>> get_efficiency(80)
0.8
Роботодавець хоче знати вартість роботи електроприладів. Вартість роботи електроприладів - це використана потужність, помножена на вартість однієї кВт·год. Використана потужність - це задана потужність, поділена на обчислену ефективність.
Реалізуйте функцію get_cost(<watts>,<power_factor>,<price>), яка приймає ціле число з кількістю ват, число з плаваючою комою — коефіцієнт потужності, і число з плаваючою комою — вартість однієї кВт·год.
Тоді функція повинна повернути (return) вартість роботи електроприладів як число з плаваючою комою.
>>> get_cost(5000000, 80, 0.25)
0.3125
Зареєструйтеся на Exercism, щоб вивчати й опановувати Python, а також 17 концепцій146 вправ та справжнє наставництво від людей, і все це безкоштовно.