Domine as funções matemáticas com o módulo math do Python!
Para executar Python no prompt de comando ou PowerShell no seu PC, é necessário baixar e instalar o Python.
Se ainda não o fez, consulte o artigo Instalação do Python e configuração do ambiente de desenvolvimento para instalar o Python.
Ao criar sites ou desenvolver aplicativos, você já se deparou com momentos em que pensa: "Preciso de um cálculo um pouco mais complexo..."? Por exemplo, ao organizar elementos em um círculo ou ao fazer o movimento de uma animação se aproximar das leis da física. É nessas horas que o módulo math, integrado por padrão no Python, se torna um grande aliado.
O módulo math oferece funções e constantes para realizar facilmente diversos cálculos matemáticos, como raízes quadradas, funções trigonométricas e logaritmos. Neste artigo, explicaremos de forma clara, para que todos os criadores da web possam usar imediatamente, desde o uso básico do módulo math até exemplos de aplicação, com códigos que podem ser copiados e colados. Vamos experimentar o "funcionamento" e sentir o poder dos cálculos matemáticos!
O básico do módulo math
O primeiro passo para usar o módulo math é importá-lo em seu script Python. Para isso, basta escrever a linha import math no início do seu código. Com apenas isso, você poderá usar todos os recursos que o math oferece.
Vamos começar importando e exibindo a constante π (pi). No módulo math, ela é definida como a constante math.pi.
import math
# Exibir a constante pi
print(math.pi)
# Saída: 3.141592653589793
Da mesma forma, o número de Napier 𝑒, a base do logaritmo natural, também pode ser facilmente acessado com math.e.
import math
# Exibir o número de Napier e
print(math.e)
# Saída: 2.718281828459045
Funções úteis e de uso frequente
O módulo math possui muitas funções, mas aqui vamos destacar e apresentar aquelas que são especialmente úteis para a criação de sites e processamento de dados.
Arredondamento para cima e para baixo: `ceil()` e `floor()`
Ao lidar com números, é comum a necessidade de arredondar casas decimais para cima ou para baixo. Por exemplo, ao calcular o número total de páginas em uma paginação.
math.ceil(x): Retorna o menor inteiro maior ou igual a x (arredondamento para cima).math.floor(x): Retorna o maior inteiro menor ou igual a x (arredondamento para baixo).
Fica fácil de lembrar se você associar ceil a "teto" (ceiling) e floor a "piso".
import math
# Arredondar para cima
print(math.ceil(3.14))
# Saída: 4
# Arredondar para baixo
print(math.floor(3.14))
# Saída: 3
Raiz quadrada: `sqrt()`
Para calcular a raiz quadrada (root), usamos math.sqrt(x). É útil, por exemplo, no web design para encontrar o comprimento de um lado a partir da área de um quadrado. Tenha cuidado, pois passar um número negativo como argumento resultará em erro.
import math
# Calcular a raiz quadrada de 9
print(math.sqrt(9))
# Saída: 3.0
# Calcular a raiz quadrada de 2
print(math.sqrt(2))
# Saída: 1.4142135623730951
Potenciação: `pow()`
Cálculos de potência, como X elevado a Y, são feitos com math.pow(x, y). Assim como a função pow() do CSS, é útil para calcular curvas de easing para animações ou para determinar taxas de escala complexas.
import math
# Calcular 2 elevado à 3ª potência
print(math.pow(2, 3))
# Saída: 8.0
# Calcular 5 elevado à potência 0.5 (ou seja, a raiz quadrada de 5)
print(math.pow(5, 0.5))
# Saída: 2.23606797749979
Funções trigonométricas: `sin()`, `cos()`, `tan()` e conversão de ângulos
As funções trigonométricas são ferramentas indispensáveis para expressões criativas, como disposição circular de elementos, animações de ondas e cálculos de ângulos. No módulo math do Python, podemos usar sin(), cos(), tan(), entre outras.
【IMPORTANTE】 As funções trigonométricas do módulo math recebem como argumento radianos (radian). Tenha cuidado, pois não são os "graus (degree)" que usamos no dia a dia. Mas não se preocupe. Também existem funções convenientes para converter entre graus e radianos.
math.radians(d): Converte o ângulo d de graus para radianos.math.degrees(r): Converte o ângulo r de radianos para graus.
Por exemplo, vamos calcular o seno (sin) de 45 graus.
import math
# Converter 45 graus para radianos
angle_rad = math.radians(45)
print(f"45 graus = {angle_rad} radianos")
# Calcular sin(45 graus)
sin_value = math.sin(angle_rad)
print(f"sin(45 graus) = {sin_value}")
# sin(45 graus) é 1/√2, então é aproximadamente 0.707
# Saída:
# 45 graus = 0.7853981633974483 radianos
# sin(45 graus) = 0.7071067811865476
Exemplos de aplicação prática
Agora, vamos combinar as funções que aprendemos até agora para realizar cálculos mais práticos.
Aplicação 1: Calcular a área e a circunferência de um círculo
Este é um programa que calcula a área e o comprimento da circunferência de um círculo com raio 5. A área é calculada como "raio × raio × pi" e a circunferência como "diâmetro × pi".
import math
radius = 5 # Raio
# Calcular a área (π * r^2)
area = math.pi * math.pow(radius, 2)
# Calcular a circunferência (2 * π * r)
circumference = 2 * math.pi * radius
print(f"Círculo com raio {radius}:")
print(f" Área: {area}")
print(f" Circunferência: {circumference}")
# Saída:
# Círculo com raio 5:
# Área: 78.53981633974483
# Circunferência: 31.41592653589793
Aplicação 2: Calcular a distância entre dois pontos (Teorema de Pitágoras)
Quando as coordenadas de dois elementos (ponto A e ponto B) em uma página da web são conhecidas, calculamos a distância em linha reta entre eles. Isso pode ser obtido usando o Teorema de Pitágoras $c = \sqrt{a^2 + b^2}$. As funções sqrt() e pow() do módulo math são muito úteis aqui.
A partir do Python 3.8, uma função dedicada para este cálculo exato, math.dist(), também foi adicionada.
import math
# Coordenadas dos pontos A e B
p1 = (10, 20) # (x1, y1)
p2 = (50, 80) # (x2, y2)
# Calcular a diferença em x e y
dx = p2[0] - p1[0]
dy = p2[1] - p1[1]
# Calcular a distância com o Teorema de Pitágoras
# distance = sqrt(dx^2 + dy^2)
distance = math.sqrt(math.pow(dx, 2) + math.pow(dy, 2))
print(f"A distância entre {p1} e {p2} é: {distance}")
# No Python 3.8 ou superior, pode ser feito de uma vez com math.dist()
# distance_alt = math.dist(p1, p2)
# print(f"Usando math.dist(): {distance_alt}")
# Saída:
# A distância entre (10, 20) e (50, 80) é: 72.11102550927978
【Experimente】Gerando um arquivo HTML com Python
Até agora, o código que vimos apenas exibia os resultados no terminal (a tela preta). Como criador da web, a sensação de "funcionou!" realmente vem quando você vê algo exibido no navegador, não é mesmo?
No próximo exemplo, mostraremos como gerar um arquivo HTML dinamicamente usando Python. É um script que calcula os números de 1 a 10 e suas raízes quadradas, e depois exibe o resultado como uma tabela em um arquivo HTML.
Salve o código Python a seguir com um nome como generate_html.py e execute-o. Um arquivo chamado math_table.html deve ser gerado na mesma pasta.
<!-- Código Python: generate_html.py -->
import math
# Parte inicial do HTML
html_content = """
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tabela de Raízes Quadradas</title>
<style>
body { font-family: sans-serif; background-color: #121212; color: #e0e0e0; display: grid; place-items: center; min-height: 100vh; margin: 0; }
table { border-collapse: collapse; width: 80%; max-width: 400px; box-shadow: 0 4px 10px rgba(0,0,0,0.5); }
th, td { border: 1px solid #5f6368; padding: 12px; text-align: center; }
thead { background-color: #669df6; color: #121212; }
tbody tr:nth-child(odd) { background-color: #1e1e1e; }
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>Número</th>
<th>Raiz Quadrada</th>
</tr>
</thead>
<tbody>
"""
# Loop para gerar as linhas da tabela de 1 a 10
for i in range(1, 11):
sqrt_value = math.sqrt(i)
html_content += f" <tr>\n"
html_content += f" <td>{i}</td>\n"
html_content += f" <td>{sqrt_value:.4f}</td>\n" # Formatar para 4 casas decimais
html_content += f" </tr>\n"
# Parte final do HTML
html_content += """
</tbody>
</table>
</body>
</html>
"""
# Escrever no arquivo HTML
with open("math_table.html", "w", encoding="utf-8") as f:
f.write(html_content)
print("math_table.html foi gerado!")
E aqui está o conteúdo do arquivo math_table.html que o script gera. Ao abrir este arquivo HTML em um navegador, você verá uma tabela bem formatada. Este é o momento em que o poder de cálculo do Python e a tecnologia da web se fundem!
<!-- HTML gerado: math_table.html -->
<!DOCTYPE html>
<html lang="pt">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tabela de Raízes Quadradas</title>
<style>
body { font-family: sans-serif; background-color: #121212; color: #e0e0e0; display: grid; place-items: center; min-height: 100vh; margin: 0; }
table { border-collapse: collapse; width: 80%; max-width: 400px; box-shadow: 0 4px 10px rgba(0,0,0,0.5); }
th, td { border: 1px solid #5f6368; padding: 12px; text-align: center; }
thead { background-color: #669df6; color: #121212; }
tbody tr:nth-child(odd) { background-color: #1e1e1e; }
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>Número</th>
<th>Raiz Quadrada</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>1.0000</td>
</tr>
<tr>
<td>2</td>
<td>1.4142</td>
</tr>
<tr>
<td>3</td>
<td>1.7321</td>
</tr>
<tr>
<td>4</td>
<td>2.0000</td>
</tr>
<tr>
<td>5</td>
<td>2.2361</td>
</tr>
<tr>
<td>6</td>
<td>2.4495</td>
</tr>
<tr>
<td>7</td>
<td>2.6458</td>
</tr>
<tr>
<td>8</td>
<td>2.8284</td>
</tr>
<tr>
<td>9</td>
<td>3.0000</td>
</tr>
<tr>
<td>10</td>
<td>3.1623</td>
</tr>
</tbody>
</table>
</body>
</html>
Pontos a ter atenção
O módulo math é muito poderoso, mas há alguns pontos a serem observados.
- Não se esqueça de
import math: É a base de tudo. Se você esquecer, receberá um erroNameError: name 'math' is not defined. - O valor retornado pelas funções é quase sempre um número de ponto flutuante (float): Assim como o resultado de
math.sqrt(9)é3.0e não3, muitas funções retornam um tipo float em vez de um inteiro. É importante estar ciente do tipo de dados para evitar comportamentos inesperados. - Erro de domínio (Domain Error): Ocorrerá um erro se você tentar realizar um cálculo matematicamente impossível. Por exemplo, tentar calcular a raiz quadrada de um número negativo resultará em um
ValueError: math domain error. Crie o hábito de verificar seus valores de entrada.
import math
try:
# Tentar calcular a raiz quadrada de um número negativo...
result = math.sqrt(-1)
except ValueError as e:
# Ocorre um erro!
print(f"Ocorreu um erro: {e}")
# Saída:
# Ocorreu um erro: math domain error
Resumo
Neste artigo, exploramos como usar o módulo math do Python, desde cálculos matemáticos básicos e funções trigonométricas até como exibir os resultados em formato HTML. Dominar o módulo math não apenas permite automatizar cálculos que antes você fazia manualmente ou com uma calculadora, mas também abre as portas para a implementação de funcionalidades mais avançadas e interativas em seus sites e aplicativos.
Comece copiando e colando o código deste artigo para vê-lo em ação e, quando se sentir confortável, experimente seus próprios cálculos e expressões. Combine sua criatividade com a capacidade de cálculo do Python para dar vida a novas ideias!
Próximos passos
Depois dos cálculos matemáticos, que tal criar movimento e variações usando valores aleatórios? O próximo artigo explica como usar o módulo random para gerar valores imprevisíveis, como o resultado de um dado.