Enviar um café pro programador

Mostrando postagens com marcador Questão de Python. Mostrar todas as postagens
Mostrando postagens com marcador Questão de Python. Mostrar todas as postagens

Como Usar um Dicionário em Python

Neste artigo, vamos resolver uma questão, comentar e mostrar seu código. Basicamente, vamos mostrar para você como usar um dicionário em Python, de tão 'completo' que é esse exercício.

Leia também:
  1. Apostila de Python em PDF
  2. Certificado do Curso de Python (para quem deseja trabalhar, ganhar dinheiro e viver de programação)

Exercício de Python


Uma escola te contratou para fazer um software em Python.
Eles querem que você crie um script que exiba o seguinte menu:

0. Sair
1. Exibir lista de alunos com suas notas (cada aluno tem uma nota)
2. Inserir aluno e nota
3. Alterar a nota de um aluno
4. Consultar nota de um aluno específico
5. Apagar um aluno da lista
6. Dar a média da turma

Onde a professora que vai fornecer o nome e nota dos alunos. Quantos ela quiser. Quantas vezes quiser.
Implemente esse script usando um dicionário.

Conhecimentos para resolver essa questão:
O que é ? Para que serve? Como e quando se usa ?
Como exibir items, valores e chaves de um dicionário
Como usar os métodos get() e setdefault()
Adicionar, Alterar e Remover items de um dicionário



Solução comentada

Primeiro, criamos um dicionário de nome alunos e depois chamamos a função que exibe o menu.

  • menu()

Bem, vamos lá.

Primeiro, temos que criar a lógica que vai ficar exibindo esse menu o tempo inteiro.
Ele é exibido enquanto o valor da variável continuar for diferente de 0.
Se for, encerra o menu() e acaba o laço e encerra o programa.

Se for outro valor diferente, vai cair em vários testes condicionais para saber que função correta deve ser chamada.


  • exibir()

Nessa função, vamos simplesmente exibir o dicionário, de maneira bonita e padronizada, os nomes e notas dos alunos.

Para isso, usamos uma variável temporária de nome nome, que vai receber cada uma das chaves (keys), do dicionário de alunos.

Então, imprime o nome e a nota de cada aluno.


  • inserir()

Antes de inserir, usamos o método get() para saber se já existe uma key com aquele nome que estamos querendo inserir.

Se tiver o aluno, o método retorna algum valor, cai no IF e avisamos que não pode inserir.
Se não estiver o aluno, cai no ELSE e criamos um novo item no nosso dicionário.


  • alterar()

Antes de alterar um determinado item, temos que nos certificar que ele existe no dicionário.
Para isso, usamos o operador in.

Se ele existir na lista de keys, faz a alteração.
Se não não faz nada, só exibe uma mensagem avisando isso.


  • consultar()

Idem a lógica anterior.

Se existir o item, exibe.
Senão, avisa.


  • apagar()

Idem.

Primeiro, verificamos se o item existe, consultando sua chave.
Se tiver, usamos o método pop() para retirar o item da lista.


  • media()

Pegamos uma variável e inicializamos com valor 0.
Depois, somamos todos os valores nessa variável e dividimos pelo tamanho do dicionário, através da função len().




Código Python



def menu():
    continuar=1

    while continuar:
        continuar = int(
            input("0. Sair\n"+
                  "1. Exibir lista de alunos com suas notas (cada aluno tem uma nota)\n"+
                  "2. Inserir aluno e nota\n"+
                  "3. Alterar a nota de um aluno\n"+
                  "4. Consultar nota de um aluno específico\n"+
                  "5. Apagar um aluno da lista\n"+
                  "6. Dar a média da turma\n"))
        if continuar==1:
            exibir()
        elif continuar == 2:
            inserir()
        elif continuar == 3:
            alterar()
        elif continuar == 4:
            consultar()
        elif continuar == 5:
            apagar()
        elif continuar == 6:
            media()
        elif continuar == 0:
            print("Encerrando programa")
        else:
            print("Opção inválida")
        
def exibir():
    for nome in alunos.keys():
        print("Nome: ", nome, " - Nota: ", alunos[nome])
        
def inserir():
    nome = input("Digite o nome do aluno: ")
    nota = float(input("Nota dele: "))

    if alunos.get(nome):
        print("Ja existe o aluno ",nome)
    else:
        alunos[nome] = nota
    
def alterar():
    nome = input("Aluno a mudar a nota: ")
    nota = float(input("Nova nota     : "))

    if nome in alunos.keys():
        alunos[nome] = nota
    else:
        print("Não existe esse aluno")
        
def consultar():
    nome = input("Digite o nome do aluno: ")

    if alunos.get(nome):
        print("Nota de ",nome, ": ", alunos[nome])
    else:
        print("Nao existe tal aluno")
    
def apagar():
    nome = input("Apagar que aluno: ")

    if alunos.get(nome):
        alunos.pop(nome)
    else:
        print("Não existe o aluno ",nome)
        
def media():
    soma = 0
    for count in alunos.values():
        soma += count
    print("Média dos alunos: %.2f" % (soma / len(alunos) ))

alunos = {}
menu()

Como Gerar Números Primos em Python

Neste tutorial de nosso Curso de Python, vamos te mostrar como gerar um número primo e vamos aprender como exibir todos os primos numa determinada faixa de valores.

É um exercício resolvido de nossa lista de questões de funções.
Leia também:

Como Saber se um Número é Primo em Python


Primeiro, vamos criar uma função chamada primo( n ) que recebe um inteiro positivo n como parâmetro.

Devemos testar esse valor n para saber se ele é primo ou não.
Relembrando: número primo é aquele que é divisível somente por 1 e por ele mesmo (por -1 e -ele também).

Ou seja, o resto da divisão por 2, 3, 4..., até n-1 tem que ser diferente de 0.

Pois é, foi usado pra saber se um número é par ou não, agora vamos usar para detectar um número primo.

Dentro da primo() simplesmente saímos calculando o resto da divisão de n por 2, por 3, ...até n-1.

Se der 0, fazemos return False, pra dizer que o número não é primo.
Se após todos esses testes do laço for ele não der False, é porque é verdade esse bilete...digo, ele é primo e damos um return True.

  • Código dessa função:
def primo(n):
    for val in range(2,n):
        if n % val == 0:
            return False

    return True
        




Exibindo números primos em um intervalo

Ok, já sabemos testar se um número é primo ou não.
Agora precisamos exibir todos os primos de 1 até n.

Vamos fazer isso através da função exibe(), que vai pedir um inteiro positivo maior que 1 para o usuário.

A seguir, vamos criar um laço for que vai testar os números 2, 3, 4, ... até o n, pra saber se cada um desses valores é primo.

Se for, imprime ele. Fazemos isso usando a função range:


def exibe():
    n = int(input('Exibir primos até o número: '))
    for val in range(2,n+1):
        if(primo(val)):
            print(val)




Código Python

Nosso script que descobre e exibe os números primos é, portanto:

def primo(n):
    for val in range(2,n):
        if n % val == 0:
            return False

    return True
        
def exibe():
    n = int(input('Exibir primos até o número: '))
    for val in range(2,n+1):
        if(primo(val)):
            print(val)
    
while True:
    exibe()

  • Exercício proposto:
Otimize o código acima de duas maneiras:
  1. Faça a função primo() testar os valores até n/2 ao invés de n
  2. Faça a função primo() testar até a raiz quadrada de n

Descubra o motivo das otimizações acima.