Enviar um café pro programador

Mostrando postagens com marcador Média aritmética. Mostrar todas as postagens
Mostrando postagens com marcador Média aritmética. Mostrar todas as postagens

Precedência de Operadores da Matemática no Python - Como Calcular a média

Você tem uma tia professora línguas.
Ela é tão fera, que é professora tanto de Português e Inglês.

Mas ela tem uma turma muito grande, e dá muito trabalho ficar somando e dividindo por 2 as notas de todo mundo, pois geralmente fica número quebrado no meio além dela não gostar muito de usar calculadora.

Vamos ajudar sua tia?
Crie um script que pede a nota de Português e a de Inglês, e forneça a média das duas notas.

Precedência de operadores
Sua tia. Sim, sua tia toca baixo, qual o problema ?



Calculando Média em Python

Vamos criar a variável 'port', para a notar de Português e armazenar um número float nela, através das funções float() e input().

Depois, fazemos o mesmo para a variável 'ing', de Inglês.

Por fim, somamos as duas e dividimos por 2. O resultado dessa operação, armazenamos na variável 'media' e simplesmente damos um print mostrando a média.

Digite e teste o código abaixo:
# Pedindo as notas
port = float( input("Digite a nota de Português, tia: ") )
ing = float( input("Tia, agora a de Inglês: ") )

# Cálculo da média
media = port + ing / 2

print("A média desse estudante foi: ",media)

Vamos ver o resultado dando uma nota 8 e uma 10 (logo a média deve dar 9):

Precedência de operadores em Python
 Peraí!!!!! Média 13 ???

Curso de Python

O que foi isso que aconteceu? Que tiro foi esse, viado ???
Calma, por incrível que pareça, este resultado está correto.

Sim, correto. Mas do ponto de vista do Python. Do seu, que quer calcular uma média, tá errado...e o grande culpado dessa confusão é um sujeito chamado "Precedência de operadores".

Sua tia ficou chateada com o bug no seu programa

Precedência de operadores em Python

Quanto dá: 1 + 1 * 2 ?

Alguém pode pensar: 1 + 1 * 2 = 1 + 2 = 3
Outro pode fazer:      1 + 1 * 2 = 2 * 2 = 4

E aí, qual o certo?
Pra não haver essa confusão, o Python tem uma regra, sobre qual operação fazer primeiro.

Na ordem de importância, maior pra menor:
  1. Exponenciação: **
  2. Multiplicação, divisão e resto da divisão: *  / %
  3. Adição e subtração: + -

Tem exponenciação? Não, ok.
Tem multiplicação, divisão ou resto da divisão? Sim, tem multiplicação. Então multiplica primeiro 1 * 2 = 2
Só depois faz a soma: 1 + 2 = 3

Tanto na regras 2 como na 3, todos os operadores tem a mesma precedência, então você vai resolvendo eles da esquerda para a direita. Ou seja, se tiver uma soma e uma subtração, faça o que aparece primeiro, pois esses dois sinais tem iguais precedência.

Parêntesis pra evitar confusão

Vamos rever nosso código da média:

media = port + ing / 2

Huuum! Taí o erro! Primeiro ocorre a divisão da nota de inglês por 2.
Mas, na verdade, a gente queria que a soma ocorresse antes, só depois divide tudo por 2.

Uma maneira de resolver isso é simplesmente colocando parêntesis, pra deixar bem claro o que deve ser feito.

Assim, o correto seria:

# Pedindo as notas
port = float( input("Digite a nota de Português, tia: ") )
ing = float( input("Tia, agora a de Inglês: ") )

# Cálculo da média
media = (port + ing) / 2

print("A média desse estudante foi: ",media)

Aaaaaagora sim! Vai dar direitinho!

Curso de Python online grátis
Agora sua tia ficou feliz!

O motivo disso funcionar é bem simples: os parêntesis tem precedência maior que os operadores matemáticos, além de nos ajudar a deixar o código mais legível e organizado.

Se suas contas ficarem muito grandes ou confusas, use sempre os parêntesis, para deixar bem claro os cálculos que você deseja fazer.

Exercício: Média e Precedência

Devido a crise que está ocorrendo no Brasil, demitiram o professor de Matemática.

E adivinhe para quem sobrou? Claro, pra sua tia.
Agora ela vai dar aula de Matemática também.

Faça um programa em Python que receba as notas de Português, Inglês e Matemática de um aluno, e em seguida forneça a média aritmética dessas notas.

Não se esqueça de usar parêntesis no cálculo da média, para não ter problemas de precedência de operadores.

Digite o código no seu script nos comentários.

Apostila de Python grátis para download
Cara da sua tia quando você disser que é profissional Python e não trabalha mais de graça! Vai ter que pagar tia, preciso custear minha mansão e minha BMW adora que sou programador Python

Desafio de Python - Média Ponderada

A prova do vestibular do IME (Instituto Militar de Engenharia), é composta pelas provas de Matemática, Física, Química, Português e Inglês apenas. Porém, elas tem pesos diferentes. O peso de Matemática é 3, de Física é 2.5, de Química também é 2.5, Português tem peso 1 e Inglês também tem peso 1. 

Crie um programa em Python que peça as 5 notas para o usuário e calcule sua média final.
Se não souber o que é uma média ponderada, pesquise no Google e tente aprender sozinho (skill fundamental para qualquer programador, treine isso)