Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível
Módulos de Matemática
Introdução ao Módulo de Matemática
Objetivo
Verifique as escrituras e os limites das propriedades na fazenda, valide e faça os cálculos utilizando as funções do módulo Math.
No escritório localizado na extremidade do edifício principal há um arquivo com plantas antigas do prédio e escrituras de terrenos. Há planos para expandir a fazenda para o leste, mas é importante deixar toda a documentação em ordem antes de você decidir analisar quaisquer projetos de construção. Isso será feito utilizando o módulo math do python.
import math
Assim como o módulo statistics anteriormente, o módulo math possui uma coleção de funções matemáticas que podemos usar para estender a biblioteca interna do python:
-
math.isnan(): Verifica se o valor de entrada não é um número -
math.isinf(): Verifica se o valor de entrada é um número infinito -
math.isfinite(): Verifica se o valor de entrada é finito -
math.prod(): Multiplica todos os argumentos fornecidos -
math.pow(): Recebe dois argumentos e retorna o valor do primeiro argumento elevado à potência do segundo argumento. -
math.trunc(): Trunca o argumento fornecido, removendo a parte decimal de um número em ponto flutuante, tornando-o um número inteiro. (Não arredonda, apenas remove) -
math.copysign(): Recebe dois argumentos, copia o sinal (- ou +) do segundo argumento e o aplica ao primeiro. -
math.factorial(): Recebe um argumento e calcula o produto de todos os números inteiros deste número até 1. Por exemplo, se o valor for5, ele realiza:5x4x3x2x1e gera um resultado.
Utilizaremos essas funções para revisar e registrar alguns dados a fim de preparar os projetos de desenvolvimento. Existem três constantes de lista contendo os esquemas da fazenda denominados: red_schematics, green_schematics, blue_schematics. Esses esquemas possuem valores não numéricos e inutilizáveis registrados; utilize as funções do módulo math para identificar os elementos e encontrar os dados úteis, para que possamos registrá-los.
Primeiro, caminhe até a marca de X escura sobre o tapete vermelho e use um loop para percorrer os elementos da constante de lista red_schematics, a fim de identificar os elementos utilizáveis.
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)
O loop percorrerá todos os elementos da lista; a função math.isnan() identificará entradas não numéricas, enquanto math.isinf() identificará valores infinitos que não podem ser usados para a coleta de dados. Crie uma nova lista chamada red_values e use uma compreensão de lista para remover os elementos indesejados utilizando math.isfinite() para filtrá-los, assim: red_values = [x for x in red_schematics if math.isfinite(float(x))].
Em seguida, some todos os números utilizando a função math.prod() para multiplicar todos os itens da lista, assim: red_values = math.prod(red_values).
Faça o mesmo processo de filtragem nas marcas de X escuras sobre os tapetes verde e azul, utilizando as constantes de lista green_schematics e blue_schematics e consolidando os elementos em listas chamadas green_values e blue_values. Caminhe até a marca de X dourada, vire-se para a mesa e use a função write() que já está pré-escrita no editor para registrar os dados dos esquemas utilizáveis. Depois de juntar tudo, caminhe até a marca de X clara e use a função open() para acessar a sala seguinte.
Uma vez na sala seguinte, há algumas mesas com escrituras de terrenos e coordenadas. É uma boa ideia registrar alguns dados antes de passar para a checagem das novas adições à fazenda na próxima área, do outro lado da ponte. Caminhe até a marca de X clara em frente à caixa com mapas, próxima à primeira mesa, e utilize a função read() para adquirir os dados de índice das escrituras.
Caminhe até a marca de X escura sobre o tapete roxo, crie uma variável chamada purple_data e use a função math.pow() para multiplicar os dados adquiridos a fim de obter as informações de coordenadas. Eleve o índice à potência de 3, assim: purple_data = math.pow( -index data- , 3 ), certificando-se de utilizar os dados de índice lidos anteriormente. Use math.trunc() para remover os dados decimais da variável, assim: purple_data = math.trunc(purple_data). Feito isso, na marca de X, utilize a função write() pré-escrita no editor com purple_data para registrar os dados armazenados na variável.
Para finalizar, caminhe até a marca de X clara em frente ao armário de arquivos próximo à mesa superior. Use a função read() para adquirir os dados de índice mais uma vez; esses dados precisam ser processados para revelar mais informações de coordenadas do terreno. Crie uma variável chamada white_data para armazenar o valor dos dados encontrados no arquivo e uma variável chamada sign para armazenar o número de sinal encontrado no arquivo. Caminhe até a marca de X escura sobre o tapete branco e utilize a função math.copysign() com as duas variáveis criadas como argumentos, atribuindo o valor à white_data, assim: white_data = math.copysign(white_data,sign).
Depois, com white_data, utilize math.factorial() para calcular o fatorial; converta white_data para um número inteiro e use-o com a função, assim: white_data = math.factorial(int(white_data)). Utilize a função write() pré-escrita para registrar white_data e completar o nível.