Soma de Frações em Código
Sobre a Matemática
Para somar frações de denominadores diferentes, é preciso reduzi-las ao mesmo denominador, somar os numeradores, dar a soma do denominador comum e extrair os inteiros se houver.
Para somar frações de mesmo denominador, somam-se os numeradores, e dá-se ao total o denominador comum. Extraem-se os inteiros, se houver.
Sobre o Código
Na linguagem de programação Python,
from – é a palavra-chave usada para importar partes específicas de um módulo ou biblioteca.
fractions – é o nome do módulo da biblioteca padrão que contém a classe Fraction, usada para representar frações exatas.
import – é a palavra-chave que indica que estamos trazendo algo de um módulo para usar no código.
Fraction() – é a classe que cria objetos de fração. Exemplo: Fraction(2,3) representa 2/3.
Docstring – é um texto entre aspas triplas """ ... """ dentro de funções, usado para documentar e explicar o que a função faz.
for..in..: – é uma estrutura de repetição. Itera sobre elementos de uma sequência (lista, tupla, string, etc.).
if: – é a estrutura condicional que executa um bloco de código se a condição for verdadeira.
isinstance() – é a função que verifica se um objeto é de um tipo específico. Exemplo: isinstance(3, int) retorna True.
tuple – é o tipo de dado imutável que armazena múltiplos valores em uma sequência. Exemplo: (1, 2, 3).
+= – é o operador de atribuição que soma e atualiza o valor de uma variável. Exemplo: x += 2 equivale a x = x + 2.
elif: – é a condicional usada em conjunto com if. Significa “senão, se”. Permite testar múltiplas condições.
else: – é a condicional que executa um bloco de código caso nenhuma das condições anteriores seja verdadeira.
raise – é a palavra-chave usada para lançar (gerar) uma exceção.
ValueError – é o tipo de exceção que indica que um valor inválido foi fornecido a uma função ou operação.
return – indica o valor que uma função devolve quando é chamada.
print() – é a função que exibe informações no console.
float() – é a função que converte um valor para número decimal (ponto flutuante). Exemplo: float(3) vira 3.0.
.numerator – é o atributo de um objeto Fraction que retorna o numerador da fração.
.denominator – é o atributo de um objeto Fraction que retorna o denominador da fração.
# – é usado para criar comentários ao código, que são notas para se entender melhor o que o código faz.
Vamos ao código…
from fractions import Fraction
def somar_fracoes(fracoes):
"""
Recebe uma lista de frações (como tuplas ou objetos Fraction)
e retorna a soma simplificada.
"""
soma = Fraction(0, 1)
for f in fracoes:
# Se for tupla (numerador, denominador), converte para Fraction
if isinstance(f, tuple):
soma += Fraction(f[0], f[1])
elif isinstance(f, Fraction):
soma += f
else:
raise ValueError("Formato inválido de fração")
return soma| Código Python (.py) | O que faz |
| from fractions import Fraction | Importa a classe Fraction da biblioteca padrão fractions, que permite trabalhar com frações de forma precisa e simplificada. |
| def somar_fracoes(fracoes): | Define uma função chamada somar_fracoes que recebe uma lista de frações. |
| “”” Recebe uma lista de frações (como tuplas ou objetos Fraction) e retorna a soma simplificada. “”” | Docstring explicativa: descreve o que a função faz. |
| soma = Fraction(0, 1) | Inicializa a variável soma como a fração 0/1, que servirá de acumulador. |
| for f in fracoes: | Inicia um loop para percorrer cada elemento da lista fracoes. |
| if isinstance(f, tuple): | Verifica se o elemento é uma tupla (numerador, denominador). |
| soma += Fraction(f[0], f[1]) | Converte a tupla em um objeto Fraction e soma ao acumulador. |
| elif isinstance(f, Fraction): | Caso o elemento já seja um objeto Fraction. |
| soma += f | Caso o elemento não seja nem tupla nem Fraction. |
| else: | Caso o elemento não seja nem tupla nem Fraction. |
| raise ValueError(“Formato inválido de fração”) | Lança um erro informando que o formato da fração é inválido. |
| return soma | Retorna a soma final simplificada. |
# Exemplos de uso:
# Frações com denominadores diferentes
resultado1 = somar_fracoes([(1, 2), (1, 3), (1, 6)])
print("Soma de 1/2 + 1/3 + 1/6 =", resultado1, "=", float(resultado1))
# Frações com mesmo denominador
resultado2 = somar_fracoes([(2, 5), (3, 5)])
print("Soma de 2/5 + 3/5 =", resultado2, "=", float(resultado2))
# Extraindo inteiros se houver
resultado3 = somar_fracoes([(7, 3), (2, 3)])
print("Soma de 7/3 + 2/3 =", resultado3, "=", resultado3.numerator // resultado3.denominator, "inteiro(s) e", Fraction(resultado3.numerator % resultado3.denominator, resultado3.denominator))| Código Python (.py) | O que faz |
| resultado1 = somar_fracoes([(1, 2), (1, 3), (1, 6)]) | Chama a função para somar 1/2 + 1/3 + 1/6. |
| print(“Soma de 1/2 + 1/3 + 1/6 =”, resultado1, “=”, float(resultado1)) | Exibe o resultado como fração e como número decimal. |
| resultado2 = somar_fracoes([(2, 5), (3, 5)]) | Chama a função para somar 2/5 + 3/5. |
| print(“Soma de 2/5 + 3/5 =”, resultado2, “=”, float(resultado2)) | Exibe o resultado como fração e como número decimal. |
| resultado3 = somar_fracoes([(7, 3), (2, 3)]) | Chama a função para somar 7/3 + 2/3. |
| print(“Soma de 7/3 + 2/3 =”, resultado3, “=”, resultado3.numerator // resultado3.denominator, “inteiro(s) e”, Fraction(resultado3.numerator % resultado3.denominator, resultado3.denominator)) | Exibe o resultado como fração, mostra quantos inteiros cabem na soma (// divisão inteira) e a parte fracionária restante (% resto da divisão). |
Saída do código (valor de retorno)…
Soma de 1/2 + 1/3 + 1/6 = 1 = 1.0
Soma de 2/5 + 3/5 = 1 = 1.0
Soma de 7/3 + 2/3 = 3 = 3 inteiro(s) e 0
Fonte:
– Editora Didática Paulista. Ensino Didático 2000: Ensino Fundamental e Ensino Médio. Sorocaba: Editora Didática Paulista, [s.d.].
– Códigos e comentários gerados por Microsoft Copilot com revisão nossa.
– https://docs.python.org/pt-br/3/ [Documentação Oficial do Python]