Passo 2:
Situação:
A Sra. Helena precisa de um sistema simples para cadastrar pacientes e calcular algumas estatísticas básicas da clínica.
Problema:
Desenvolva um programa em Python que:
- Permita cadastrar informações de pacientes (nome, idade, telefone)
- Calcule e exiba:
- Número total de pacientes cadastrados
- Idade média dos pacientes
- Paciente mais novo e mais velho
- Permita buscar um paciente pelo nome
4. Exiba todos os pacientes cadastrados de forma organizada
Passo 1
O enunciado pede que a gente crie um programa em Python para cadastrar pacientes (com nome, idade e telefone) e, a partir desse cadastro, calcular estatísticas básicas (total, média de idade, paciente mais novo e mais velho), além de oferecer busca por nome e exibir todos os registros de forma organizada. Para resolver isso vamos precisar de conceitos básicos de estrutura de dados em Python (listas e dicionários), funções para organizar o código, laços de repetição para montar um menu interativo e operações simples sobre listas (como soma, máximo e mínimo).
Passo 2
Definimos uma lista
pacientes
onde cada elemento é um dicionário com as chaves "nome"
, "idade"
e "telefone"
. Em seguida, criamos funções separadas para cada tarefa:cadastrar_paciente()
para ler os dados e inserir na lista;calcular_estatisticas()
para retornar total, média, mais novo e mais velho;buscar_paciente(nome)
que percorre a lista e retorna o dicionário se encontrar o nome;exibir_todos()
para imprimir todos os pacientes de forma organizada.
Passo 3
Na função
calcular_estatisticas()
fazemos:total = len(pacientes)
idades = [p["idade"] for p in pacientes]
media = sum(idades) / total
(com cuidado para quandototal == 0
)- usamos
min(idades)
emax(idades)
para achar as idades extremas e depois procuramos qual paciente tem essa idade para mostrar nome e telefone.
Passo 4
Em
buscar_paciente(nome)
percorremos cada dicionário em pacientes
e comparamos p["nome"].lower()
com nome.lower()
. Se bater, retornamos o paciente; caso contrário, informamos que não achou nada.Passo 5
A função
exibir_todos()
simplesmente testa se a lista está vazia e, se não, faz um for
sobre pacientes
, imprimindo índice, nome, idade e telefone de cada um de forma alinhada.Passo 6
Por fim, montamos um laço
while True
que exibe um menu numerado:- Cadastrar paciente
- Exibir estatísticas
- Buscar por nome
- Exibir todos
- Sair
e chama a função correspondente até o usuário digitar5
.
Resposta
def cadastrar_paciente(pacientes):
nome = input("Nome: ").strip()
try:
idade = int(input("Idade: ").strip())
except ValueError:
print("Idade inválida. Use um número inteiro.")
return
telefone = input("Telefone: ").strip()
pacientes.append({"nome": nome, "idade": idade, "telefone": telefone})
print(f"Paciente '{nome}' cadastrado com sucesso.\n")
def calcular_estatisticas(pacientes):
total = len(pacientes)
if total == 0:
print("Nenhum paciente cadastrado.\n")
return
idades = [p["idade"] for p in pacientes]
media = sum(idades) / total
idade_min = min(idades)
idade_max = max(idades)
mais_novo = next(p for p in pacientes if p["idade"] == idade_min)
mais_velho = next(p for p in pacientes if p["idade"] == idade_max)
print(f"Total de pacientes: {total}")
print(f"Idade média: {media:.2f}")
print(f"Mais novo: {mais_novo['nome']} ({mais_novo['idade']} anos)")
print(f"Mais velho: {mais_velho['nome']} ({mais_velho['idade']} anos)\n")
def buscar_paciente(pacientes, termo):
termo = termo.lower()
encontrados = [p for p in pacientes if p["nome"].lower() == termo]
if encontrados:
for p in encontrados:
print("Paciente encontrado:")
print(f" Nome: {p['nome']}")
print(f" Idade: {p['idade']}")
print(f" Telefone: {p['telefone']}\n")
else:
print("Nenhum paciente com esse nome.\n")
def exibir_todos(pacientes):
if not pacientes:
print("Nenhum paciente cadastrado.\n")
return
print("=== Lista de Pacientes ===")
for i, p in enumerate(pacientes, start=1):
print(f"{i}. Nome: {p['nome']} | Idade: {p['idade']} | Telefone: {p['telefone']}")
print()
def main():
pacientes = []
while True:
print("Menu:")
print("1. Cadastrar paciente")
print("2. Exibir estatísticas")
print("3. Buscar por nome")
print("4. Exibir todos os pacientes")
print("5. Sair")
escolha = input("Escolha uma opção: ").strip()
print()
if escolha == "1":
cadastrar_paciente(pacientes)
elif escolha == "2":
calcular_estatisticas(pacientes)
elif escolha == "3":
nome = input("Nome para busca: ").strip()
print()
buscar_paciente(pacientes, nome)
elif escolha == "4":
exibir_todos(pacientes)
elif escolha == "5":
print("Encerrando o programa.")
break
else:
print("Opção inválida. Tente novamente.\n")
if __name__ == "__main__":
main()