Informática, perguntado por JujubaDocez, 5 meses atrás

Faça um programa que simule uma urna eletrônica. Para ter acesso ao sistema deve ser inserido o login (admin) e senha (chave). A tela a ser apresentada deverá ser da seguinte forma:

ELEIÇÕES 2021
---------------------------------
Escolha uma opção:
1. Candidata Maria Rodrigues
2. Candidato Carlos Luz
3. Nulo
4. Branco
5. Finalizar votação

O programa deverá solicitar os votos dos eleitores indeterminadamente, e exibir a mensagem “voto registrado com sucesso”, limpando a tela e exibindo o menu novamente. O programa só deve parar quando for informado a opção 5. Ao finalizar, o programa irá apresentar as seguintes informações:
a) O número de votos para Maria, Carlos, nulos e brancos, com a respectiva porcentagem. Ex.: Maria: 20 votos (50%);
b) O candidato vencedor. Em caso de empate, ou votos nulos ou brancos com maior número de votos, exibir a mensagem “Eleição cancelada”.da as questões a seguir:

Soluções para a tarefa

Respondido por lucasbazan
0

Resposta:

import time  # Biblioteca para manipular tempo

import os  # Biblioteca para manipular o OS

# Função que valida o acesso

def acesso():

   while True:

       os.system('cls' if os.name == 'nt' else 'clear')  # Limpa a tela

       login = input('Login > ')

       senha = input('Senha > ')

       if login == 'admin' and senha == 'chave':

           break  # Quebra o loop

       else:

           print('Login ou Senha incorretos!')

           time.sleep(1)  # Aguarda 1 segundo para prosseguir

# Função que contém as opções do menu

def menu():

   os.system('cls' if os.name == 'nt' else 'clear')  # Limpa a tela

   print("""ELEIÇÕES 2021

---------------------------------

Escolha uma opção:

1.   Candidata Maria Rodrigues

2.   Candidato Carlos Luz

3.   Nulo

4.   Branco

5.   Finalizar votação

   """

   )

   op = int(input('Opção > '))

   return op

# Função que mostra o resultado da eleição

def resultado(vencedor, votos_vencedor, p_v, perdedor, votos_perdedor, p_d, nulo, p_n, branco, p_b):

   print('--- RESULTADO ---')

   print('{}: {} votos ({:.2f}%)'.format(vencedor, votos_vencedor, p_v))

   print('{}: {} votos ({:.2f}%)'.format(perdedor, votos_perdedor, p_d))

   print('Nulo: {} votos ({:.2f}%)'.format(nulo, p_n))

   print('Branco: {} votos ({:.2f}%)'.format(branco, p_b))

# Função principal

def main():

   try:

       acesso()  # Chamada da função acesso criada anteriormente

       maria_rodrigues = 0

       carlos_luz = 0

       nulo = 0

       branco = 0

       while True:

           op = menu()  # Cria uma variavel com base na opção da função menu

           if op == 1:

               maria_rodrigues += 1

           elif op == 2:

               carlos_luz += 1

           elif op == 3:

               nulo += 1

           elif op == 4:

               branco += 1

           elif op == 5:

               os.system('cls' if os.name == 'nt' else 'clear')  # Limpa a tela

               total = maria_rodrigues + carlos_luz + nulo + branco  # Calcula o total de votos

               mr_porc = (maria_rodrigues * 100) / total  # Calcula a porcentagem da Maria Rogrigues

               cl_porc = (carlos_luz * 100) / total  # Calcula a porcentagem do Carlos Luz

               n_porc = (nulo * 100) / total  # Calcula a porcentagem dos votos nulos

               br_porc = (branco * 100) / total  # Calcula a porcentagem dos votos brancos

               if maria_rodrigues > carlos_luz and maria_rodrigues > nulo and maria_rodrigues > branco:

                   resultado('Maria Rodrigues', maria_rodrigues, mr_porc, 'Carlos Luz', carlos_luz, cl_porc, nulo, n_porc, branco, br_porc)

                   break

               elif carlos_luz > maria_rodrigues and carlos_luz > nulo and carlos_luz > branco:

                   resultado('Carlos Luz', carlos_luz, cl_porc, 'Maria Rodrigues', maria_rodrigues, mr_porc, nulo, n_porc, branco, br_porc)

                   break

               else:

                   print('Eleição cancelada!')

                   break

           else:

               print('Opção inválida!')

               time.sleep(1)  # Aguarda 1 segundo para prosseguir

   except KeyboardInterrupt:  # Caso o usuário aperte Ctrl + C é exibida a seguinte mensagem

       print('\nEleição cancelada!')

if __name__ == '__main__':  # Controle de escopo

   main()

Explicação:

Eu fiz e postei em um fórum a resposta, fiz utilizando laço de repetição while, conceitos básicos de matemática e lógica.

Abraços :D

Perguntas interessantes