Поглиблений курс розробки на Python
Розділ
>
Рівень
Математичні модулі
Вступ до модуля математики
Мета
Перевірити записи про землю та межі власності на фермі, перевірити та підрахувати числа, використовуючи функції модуля Math.
В офісі на самому краю головної будівлі знаходиться архів старих креслень будівлі та записів про землю. Є плани розширити ферму на схід, але важливо впорядкувати всю документацію, перш ніж ви вирішите переглянути будь-які будівельні плани. Це буде зроблено за допомогою модуля math у python.
import math
Як і модуль statistics, модуль math має набір математичних функцій, які ми можемо використовувати для розширення вбудованої бібліотеки python:
-
math.isnan(): Перевіряє, чи є введене значення не числом -
math.isinf(): Перевіряє, чи є введене значення нескінченним -
math.isfinite(): Перевіряє, чи є введене значення скінченним -
math.prod(): Множить усі передані аргументи -
math.pow(): Приймає два аргументи і повертає значення першого аргументу, піднесеного до степеня другого аргументу -
math.trunc(): Відсікає десяткову частину числа з плаваючою комою, перетворюючи його на ціле число. (Не округлює, а просто видаляє) -
math.copysign(): Приймає два аргументи, копіює знак (-, +) з другого аргументу і застосовує його до першого -
math.factorial(): Приймає аргумент і обчислює добуток чисел від заданого числа до 1. Наприклад, якщо значення дорівнює5, тоді обчислення виглядає так:5x4x3x2x1і дає результат.
Ми будемо використовувати ці функції для перегляду та занотовування деяких даних з метою підготовки проектів розвитку. Є три константи-списки, що містять схеми фермерського господарства з назвами: red_schematics, green_schematics, blue_schematics. Ці схеми містять нечислові та непридатні для використання значення, тому використовуйте математичні функції для ідентифікації елементів, знаходження коректних даних для занотовування.
Спочатку перейдіть до темної X-мітки на червоному килимі та використайте цикл для проходження елементів списку red_schematics, щоб ідентифікувати придатні елементи.
for x in red_schematics: y = math.isnan (float(x)) if y == True: player.speak("Not a Number") else: y = math.isinf(float(x)) if y == True: player.speak("Is infinite") else: player.speak(x)
Цикл пройде через усі елементи списку, функція math.isnan() визначить нечислові значення, а math.isinf() виявить нескінченні значення, які не можна використовувати для збору даних. Створіть новий список з назвою red_values і використайте спискове включення для видалення небажаних елементів за допомогою math.isfinite(), ось так: red_values = [x for x in red_schematics if math.isfinite(float(x))].
Далі обчисліть добуток всіх чисел у списку, використовуючи функцію math.prod(), ось так: red_values = math.prod(red_values).
Застосуйте той же процес фільтрації до темних X-міток на зеленому та синьому килимах, використовуючи константи-списки green_schematics та blue_schematics і об'єднуючи елементи у списки з назвами green_values та blue_values. Перейдіть до золотої X-мітки, оберніться до столу і використайте заздалегідь написану функцію write(), щоб занотувати придатні дані схеми. Після того, як ви зберете всю інформацію, перейдіть до світлої X-мітки і використайте функцію open(), щоб отримати доступ до наступної кімнати.
Опинившись у наступній кімнаті, біля декількох столів знаходяться документи на землю та координати. Рекомендується занотувати деякі дані перед тим, як перейти до перевірки нових додатків до ферми в наступній зоні через міст. Перейдіть до світлої X-мітки перед коробкою з мапами біля першого столу, використайте функцію read(), щоб отримати індексні дані для документів на землю.
Перейдіть до темної X-мітки на фіолетовому килимі, створіть змінну з назвою purple_data і використайте функцію math.pow() для домноження отриманих даних, щоб отримати інформацію про координати. Піднесіть індекс до степеня 3, ось так: purple_data = math.pow( -index data- , 3 ), не забудьте додати дані індексу, які ви отримали раніше. Використайте math.trunc(), щоб видалити десяткову частину зі змінної, ось так: purple_data = math.trunc(purple_data). Після цього, на X-мітці, використайте заздалегідь написану функцію write() із змінною purple_data для запису даних, що зберігаються у змінній.
На завершення перейдіть до світлої X-мітки перед шафою поруч із верхнім столом. Використайте функцію read(), щоб ще раз отримати індексні дані, які потрібно розпакувати для виявлення додаткової інформації про координати землі. Створіть змінну з назвою white_data для збереження даних, знайдених у файлі, та змінну sign для збереження знака, знайденого у файлі. Перейдіть до темної X-мітки на білому килимі і використайте функцію math.copysign(), передаючи створені змінні як аргументи, і присвойте отримане значення змінній white_data, ось так: white_data = math.copysign(white_data,sign).
Після цього, використовуючи white_data, скористайтеся функцією math.factorial() для обчислення факторіалу, перетворіть white_data на ціле число і використайте його з функцією, ось так: white_data = math.factorial(int(white_data)). Використайте заздалегідь написану функцію write(), щоб занотувати white_data і завершити рівень.