Enviar um café pro programador

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)

27 comentários:

  1. math =float(input('Tia coloque a note de matematica: '))
    port =float(input('Tia coloque a nota de portugues: '))
    ingl =float(input('Tia coloque a nota de ingles: '))

    media =(math+port+ingl)/3
    print('A média desse aluno é:',media)

    Abaixo ainda coloquei um if para ela ter a resposta se o aluno foi aprovado ou não no cursinho

    ResponderExcluir
  2. port = float(input("Nota de Português: "))
    ing = float(input("Nota de Inglês: "))
    mat = float(input("Nota de Matemática: "))

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

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

    ResponderExcluir
  3. portN1 = float(input('Insira a primeira nota de Português: '))
    ingN2 = float(input('Insira a segunda nota de Inglês: '))
    matN3 = float(input('Insira a segunda nota de Matemática: '))


    print ('A média das notas: ', (portN1 + ingN2 + matN3)/3)

    ResponderExcluir
  4. mat = float(input("digite a nota de matematica:"))
    por = float(input("digite a nota de portguês:"))
    ing = float(input("digite a nota de inglês:"))
    media = (por + ing + mat) /3
    print("A MEDIA DO ALUNO FOI: {:.2f}".format(media)

    ResponderExcluir
  5. valeu eu ja havia esquecido a ordem de precedência

    ResponderExcluir
  6. # calcula a média
    portugues = float(input('Qual a nota da diciplina Português? '))
    matematica = float(input('Qual a nota da diciplina Matemática? '))

    # media = (portugues + matematica) / 2

    # print(media)

    print('Média final: %.2f' % ((portugues + matematica) / 2))

    ResponderExcluir
  7. Pessoal, preciso de um programa que calcule a média de um conjunto de números. O programa tem que perguntar a quantidade de números no início, depois pegar eles e no final imprimir o resultado.

    Pensei nesse esboço:
    n = int(input('Qual a quantidade de números?'))
    d = float(input('Digite um número: '))

    print(' A sequência de números: {} e a média é {}' )

    mas não sei desenvolver, alguém habilitado para ajudar?

    ResponderExcluir
    Respostas
    1. QtdNum= float(input('qual a quantidade de numeros? '))
      ListaNum=[]

      while len(ListaNum) < QtdNum:
      num = float(input('digite um número: '))
      ListaNum.append(num)

      print(' A sequência dos números: ', ListaNum)
      print('A média dos números: ', sum(ListaNum)/len(ListaNum))

      Excluir
    2. QtdNum= float(input('qual a quantidade de numeros? '))
      ListaNum=[]

      while len(ListaNum) < QtdNum:
      num = float(input('digite um número: '))
      ListaNum.append(num)

      print(' A sequência dos números: ', ListaNum)
      print('A média dos números: ', sum(ListaNum)/len(ListaNum))

      Excluir
  8. port = float(input("Digite sua nota de portugues\n"))
    ing = float(input("Digite a sua nota de ingles\n"))
    math = float(input("Digite a sua nota de matematica"))

    print("A sua media é de: ", (math+port+ing)/3)

    ResponderExcluir
  9. port = float(input('Insira a nota de português '))
    ing = float(input('Insira a nota de inglês '))
    mat = float(input('Insira a nota de matemática'))

    media = (port + ing + mat)/3

    print('A média das notas do aluno é ' , media)

    ResponderExcluir
  10. ing = float(input("Digite a nota de Ingles: "))
    mat = float(input("Digite a nota de Matemática: "))
    por = float(input("Digite a nota de Português: "))


    media = (ing+por+mat)/3
    print ("A media foi: ", media)

    if media >= 7:
    print ("aprovado")
    else:
    media < 7
    print ("reprovado")

    ResponderExcluir
  11. nome=input("Olá! Insira seu nome.")
    nota1=int(input(nome+", qual é o valor da nota de Português?"))
    nota2=int(input("Qual é o valor da nota de Matemática?"))
    nota3=int(input("E qual é o valor da nota de inglês?"))
    media=(nota1+nota2+nota3)/3
    print("Ok! a média é:", media)

    ResponderExcluir
  12. name = input('Qual seu nome ?')
    port = float(input('Informe sua nota de Português, ' +name))
    mat = float(input('Agora sua nota de Matemática, ' +name))
    geo = float(input('Agora a sua nota de Geografia, ' +name))
    media = (port+mat+geo)/3
    print(f'A média do aluno '+name,",",media)

    ResponderExcluir
  13. print("Aí, tia! Vou te ajudar a fazer a média do seu aluno!")
    port=float(input("Manda a nota de português, aí, tia! "))
    ing=float(input("Agora a nota de inglês, tia! "))
    mat=float(input("PQP, tia! Só tem a senhora nessa escola? Bota a nota de matemática! "))

    media=(port+ing+mat)/3

    print("A média deste indivíduo é",media,"tia!")

    ResponderExcluir
  14. como eu faço para poder colocar a quantidade de numeros q eu quiser pra fazer a média? por exemplo nesse tutorial só ensina a fazer somente 2 numeros e pra fazer mais teriam que programar manualmente cada escolha mas eu quero que o usuario escolha a quantidade de numeros que ele quiser

    ResponderExcluir
  15. port = float (input ('Digite a nota de Português: '))
    ing = float (input ('Digite a nota de Inglês: '))
    mat = float (input ('Digite a nota de Matemática: '))
    print ('A média desse estudante foi de ',(port + ing + mat)/3)

    ResponderExcluir
  16. #media e precedeência
    por = float(input( ' digite a nota de português:'))
    mat = float(input( ' digite a nota de matemática:'))
    ing = float(input( ' digite a nota de inglês:'))

    media = (por + mat + ing)/3
    print(' Média aritmética = ', media)

    ResponderExcluir
  17. Crie uma lista com números quaisquer que você quiser, que possua
    pelo menos 10 elementos.

    Então, atravessando esta lista, calcule qual o maior elemento, qual o
    menor elemento e qual a média dos valores do vetor.

    Por exemplo, na lista [2,4,3] o menor é 2, maior é 3 e a média é 3.0
    Já na lista [10,3,5,7,8,2,3,1] o menor é 1, o maior é 10 e a média 4.875

    ResponderExcluir
  18. Como calcular a media de N números pelo comando for?

    ResponderExcluir
  19. Por = float(input("Digite a nota de Português:"))
    ing = float(input("Digite a nota de Inglês:"))
    Mat = float(input("Digite a nota de Matemática:"))

    Media = (Por + ing + Mat)/3

    print('Média das notas:',Media)

    ResponderExcluir
  20. ALUNO = input("Digite o nome do aluno:")
    NOTA_TOTAL = 0
    NÚMERO_DE_NOTAS = 0

    while True:
    NEW_NOTA = input("Deseja cadastrar outra nota? (Sim/Não): ")
    if NEW_NOTA.lower() == "sim":
    NOTA = float(input("Digite a nota: "))
    NOTA_TOTAL += NOTA
    NÚMERO_DE_NOTAS += 1
    elif NEW_NOTA.lower() == "não":
    print("Ok, vamos ver a média deste aluno:")
    break
    else:
    print("\nPor favor, responda com 'Sim' ou 'Não'.\n")

    MEDIA_FINAL = NOTA_TOTAL / NÚMERO_DE_NOTAS

    print(f' O Aluno{ALUNO}, teve uma média de: {MEDIA_FINAL:.1f} esse valor foi obtido após o cadastro de {NÚMERO_DE_NOTAS:.0f} notas.')

    Fiz dessa forma visando automatizar e permitir mais de 3 notas.

    ResponderExcluir
  21. mat=float(input("qual a nota de matemáica?"))
    port=float(input("qual a nota de português?"))
    ing=float(input("qual a nota de inglês?"))
    média=(mat+port+ing)/3
    print("sua média foi de ",média)

    ResponderExcluir