Example #1
0
 def _interaja(self):
     opcoes = {
         0: 'Voltar',
         1: 'Mostrar Dados Gerais',
         2: 'Adicionar Guerreiro',
         3: 'Remover Guerreiro',
         4: 'Curar/Ferir Guerreiro',
         5: 'Exibir Guerreiro',
         6: 'Exibir Guerreiros vivos',
         7: 'Exibir Guerreiros mortos'
     }
     menu = Menu('Gerenciando', opcoes)
     voltar = False
     while not voltar:
         opcao = menu.pergunte()
         if opcao == 0:
             self._nao_continue()
             voltar = True
         elif opcao == 1:
             self._mostre_dados_gerais()
         elif opcao == 2:
             self._adicione_guerreiro()
         elif opcao == 3:
             self._remova_guerreiro()
         elif opcao == 4:
             self._cure_fira_guerreiro()
         elif opcao == 5:
             self._exiba_guerreiro()
         elif opcao == 6:
             self._exiba_vivos()
         elif opcao == 7:
             self._exiba_mortos()
Example #2
0
    def manipule(self, relogio):
        opcoes = {
            0: 'Voltar',
            1: 'Alterar Hora de Relógio',
            2: 'Alterar Minuto de Relógio',
            3: 'Alterar Segundo de Relógio',
            4: 'Alterar Hora, Minuto e Segundo de Relógio',
            5: 'Executar N ticks'
        }
        menu = Menu('Manipular Relógio', opcoes)
        self._mostra_relogio(relogio)
        opcao = menu.pergunte()
        while opcao != 0:
            if opcao == 1:
                print('-- Alterar Hora do Relógio')
                hora = int(input('Nova hora do relógio: '))
                relogio.mude_hora(hora)
            elif opcao == 2:
                print('-- Alterar Minuto do Relógio')
                minuto = int(input('Novo minuto do relógio: '))
                relogio.mude_minuto(minuto)
            elif opcao == 3:
                print('-- Alterar Segundo do Relógio')
                segundo = int(input('Novo segundo do relógio: '))
                relogio.mude_segundo(segundo)
            elif opcao == 4:
                print('-- Alterar Hora, Minuto e Segundo do relógio')
                hora = int(input('Nova hora do relógio: '))
                minuto = int(input('Novo minuto do relógio: '))
                segundo = int(input('Novo segundo do relógio: '))
                relogio.mude_hms(hora, minuto, segundo)
            elif opcao == 5:
                print('-- Executar N ticks no relógio')
                n = int(input('Quantos ticks: '))
                self._mostra_relogio(relogio)
                print('** iniciando ticks...')
                for _ in range(n):
                    print('Tick!')
                    relogio.tick()
                    self._mostra_relogio(relogio)
                print('** fim de ticks')

            self._mostra_relogio(relogio)
            opcao = menu.pergunte()
Example #3
0
class PainelManipulaBaldes:
    def __init__(self):
        opcoes = {
            0: 'Voltar',
            1: 'Encher balde A',
            2: 'Encher balde B',
            3: 'Esvaziar balde A',
            4: 'Esvaziar balde B',
            5: 'Derrame balde A em balde B',
            6: 'Derrame balde B em balde A',
            7: 'Balde A receba de balde B',
            8: 'Balde B receba de balde A'
        }
        self._menu = Menu('Opções de Manipulação', opcoes)

    def manipule(self, baldeA, baldeB):
        print('--- Manipula Baldes ---')
        encerrar = False
        while not encerrar:
            self._mostre_baldes(baldeA, baldeB)
            opcao = self._menu.pergunte()
            if opcao == 0:
                encerrar = True
            elif opcao == 1:
                baldeA.fique_cheio()
            elif opcao == 2:
                baldeB.fique_cheio()
            elif opcao == 3:
                baldeA.fique_vazio()
            elif opcao == 4:
                baldeB.fique_vazio()
            elif opcao == 5:
                baldeA.derrame_em(baldeB)
            elif opcao == 6:
                baldeB.derrame_em(baldeA)
            elif opcao == 7:
                baldeA.receba_de(baldeB)
            elif opcao == 8:
                baldeB.receba_de(baldeA)

    def _mostre_baldes(self, baldeA, baldeB):
        print('****** Situação Atual dos Baldes')
        print('- Balde A')
        self._mostre_balde(baldeA)
        print('- Balde B')
        self._mostre_balde(baldeB)
        print('****************************\n')

    def _mostre_balde(self, balde):
        print('capacidade : {}'.format(balde.capacidade()))
        print('quantidade : {}'.format(balde.quantidade()))
        print('está cheio : {}'.format(balde.esta_cheio()))
        print('está vazio : {}'.format(balde.esta_vazio()))
Example #4
0
class InterfaceComUsuario:
    def __init__(self):
        self._tribo = None  # inicialmente não há tribo definida
        opcoes_sem_tribo = {
            0: 'Sair',
            1: 'Criar Tribo',
        }
        opcoes_com_tribo = {
            0: 'Sair',
            1: 'Destruir Tribo',
            2: 'Gerenciar Tribo'
        }
        self._menu_sem_tribo = Menu('Programa Tribo', opcoes_sem_tribo)
        self._menu_com_tribo = Menu('Programa Tribo', opcoes_com_tribo)

    def interaja(self):
        terminar = False
        while not terminar:
            painel = self._defina_painel()
            if painel is None:
                terminar = True
            else:
                painel.interaja()

    def _defina_painel(self):
        painel = None
        if self._tribo is None:
            opcao = self._menu_sem_tribo.pergunte()
            if opcao == 1:
                painel = PainelCriaTribo(self)
        else:
            opcao = self._menu_com_tribo.pergunte()
            if opcao == 1:
                painel = PainelDestroiTribo(self, self._tribo)
            elif opcao == 2:
                painel = PainelGerenciaTribo(self, self._tribo)
        return painel

    def armazene_tribo(self, tribo):
        self._tribo = tribo
Example #5
0
 def interaja(self):
     opcoes = {
         0: 'Voltar',
         1: 'Codificar Frase',
         2: 'Decodificar Frase'
     }
     menu = Menu('Enigma', opcoes)
     continuar = True
     while continuar:
         opcao = menu.pergunte()
         if opcao == 0:
             continuar = False
         else:
             if opcao == 1:
                 self._codifique()
             elif opcao == 2:
                 self._decodifique()
Example #6
0
 def gerencie(self, navio):
     opcoes = {
         0: 'Voltar',
         1: 'Carregar Container',
         2: 'Descarregar Container',
         3: 'Verificar se Carrega Container',
         4: 'Procurar Containers por Peso'
     }
     menu = Menu('Gerenciando Containers', opcoes)
     voltar = False
     while not voltar:
         opcao = menu.pergunte()
         if opcao == 0:
             voltar = True
         else:
             if opcao == 1:
                 self._carregue(navio)
             elif opcao == 2:
                 self._descarregue(navio)
             elif opcao == 3:
                 self._verifique(navio)
             elif opcao == 4:
                 self._procure_por_peso(navio)
Example #7
0
class PainelAnalisaPrefeitura:
    def __init__(self, prefeitura):
        opcoes = {
            0: 'Voltar',
            1: 'Quantidade de Cidadãos',
            2: 'Renda Média',
            3: 'Orçamento para Renda Mínima',
            4: 'Renda Média de Faixa Etária',
            5: 'Quantidade de Idosos',
            6: 'Cidadãos com Mais Renda',
            7: 'N Cidadãos com Menos Renda'
        }
        self._prefeitura = prefeitura
        titulo = 'Analisando Prefeitura de {}'.format(prefeitura.nome())
        self._menu = Menu(titulo, opcoes)

    def analise(self):
        terminar = False
        while not terminar:
            opcao = self._menu.pergunte()
            if opcao == 0:
                terminar = True
            else:
                if opcao == 1:
                    self._mostre_qtd_cidadaos()
                elif opcao == 2:
                    self._mostre_renda_media()
                elif opcao == 3:
                    self._mostre_orcamento_renda_minima()
                elif opcao == 4:
                    self._mostre_renda_media_faixa_etaria()
                elif opcao == 5:
                    self._mostre_qtd_idosos()
                elif opcao == 6:
                    self._mostre_com_mais_renda()
                elif opcao == 7:
                    self._mostre_com_menos_renda()

    def _mostre_qtd_cidadaos(self):
        msg = 'Quantidade de cidadãos: {}'.format(
            self._prefeitura.qtd_cidadaos())
        print(msg)
        input('Tecle ENTER para continuar')

    def _mostre_renda_media(self):
        msg = 'Renda média (R$): {0:.2f}'.format(
            self._prefeitura.renda_media())
        print(msg)
        input('Tecle ENTER para continuar')

    def _mostre_orcamento_renda_minima(self):
        continuar = True
        while continuar:
            renda_minima = int(input('Qual a renda mínima desejada? '))
            (orcamento,
             qtd) = self._prefeitura.orcamento_renda_minima(renda_minima)
            percentual_atingido = (qtd / self._prefeitura.qtd_cidadaos()) * 100
            print('Orçamento necessário (R$): {}'.format(orcamento))
            print('Quantidade de pessoas beneficiadas: {0} ({1:.2f}%)'.format(
                qtd, percentual_atingido))
            continuar = 's' == input('Deseja novo cálculo? [s/n]')

    def _mostre_renda_media_faixa_etaria(self):
        continuar = True
        while continuar:
            idade_minima = int(input('Idade mínima: '))
            idade_maxima = int(input('Idade máxima: '))
            ano_atual = int(input('Ano desejado: '))
            renda_media = self._prefeitura.renda_media_de_faixa_etaria(
                idade_minima, idade_maxima, ano_atual)
            if renda_media is None:
                print('Nennhum cidadão encontrado para estes dados.')
            else:
                print('Renda Média (R$): {0:.2f}'.format(renda_media))
            continuar = 's' == input('Deseja novo cálculo? [s/n]')

    def _mostre_qtd_idosos(self):
        continuar = True
        while continuar:
            idade_idoso = int(input('Idade mínima para ser idoso: '))
            ano_atual = int(input('Ano desejado: '))
            qtd = self._prefeitura.qtd_idosos(idade_idoso, ano_atual)
            percentual_idosos = (qtd / self._prefeitura.qtd_cidadaos()) * 100
            print('Quantidade de idosos em {0}: {1} ({2:.2f}%)'.format(
                ano_atual, qtd, percentual_idosos))
            continuar = 's' == input('Deseja novo cálculo? [s/n]')

    def _mostre_com_mais_renda(self):
        continuar = True
        while continuar:
            renda = int(input('Renda: '))
            cidadaos = self._prefeitura.cidadaos_com_mais_renda_que(renda)
            percentual_cidadaos = (len(cidadaos) /
                                   self._prefeitura.qtd_cidadaos()) * 100
            print(
                'Quantidade de cidadãos com renda superior à {0}: {1} ({2:.2f}%)'
                .format(renda, len(cidadaos), percentual_cidadaos))
            if 's' == input('Mostrar os cidadãos? [s/n]'):
                for c in cidadaos:
                    print(c)
            continuar = 's' == input('Deseja novo cálculo? [s/n]')

    def _mostre_com_menos_renda(self):
        continuar = True
        while continuar:
            renda = int(input('Renda: '))
            n = int(input('Quantos cidadãos encontrar: '))
            cidadaos = self._prefeitura.n_cidadaos_com_menos_renda_que(
                n, renda)
            percentual_cidadaos = (len(cidadaos) /
                                   self._prefeitura.qtd_cidadaos()) * 100
            print(
                'Quantidade de cidadãos com renda inferior à {0}: {1} ({2:.2f}&)'
                .format(renda, len(cidadaos), percentual_cidadaos))
            if 's' == input('Mostrar os cidadãos? [s/n]'):
                for c in cidadaos:
                    print(c)
            continuar = 's' == input('Deseja novo cálculo? [s/n]')
Example #8
0
class InterfaceComUsuario:
    def __init__(self):
        opcoes_g1 = {
            0: ('Voltar', None),
            1: ('Somar números', PainelSoma),
            2: ('Em Posições Ímpares', PainelEmPosicoesImpares),
            3: ('Primeiro e Último', PainelPrimeiroEUltimo),
            4: ('Posição do Maior', PainelPosicaoDoMaior),
            5: ('Maior', PainelMaior),
            6: ('Média', PainelMedia),
            7: ('Cópia', PainelCopia),
            8: ('Pares', PainelPares),
            9: ('Possui Par', PainelPossuiPar),
            10: ('Duplica', PainelDuplica),
            11: ('Sem Repetições', PainelSemRepeticoes),
            12: ('Inverte', PainelInverte),
            13: ('Soma Posições Pares e Posições Ímpares',
                 PainelSomaPosParesPosImpares)
        }

        opcoes_g2 = {
            0: ('Voltar', None),
            1: ('Conta ocorrências', PainelContaOcorrencias),
            2: ('Quantidade Acima de Limite', PainelQtdAcimaDeLimite),
            3: ('Multiplica por Fator', PainelMultiplicaPorFator),
            4: ('Multiplicado por Fator', PainelMultiplicadoPorFator),
            5: ('Cópia dos N Primeiros', PainelNPrimeiros),
            6: ('Primeira Posição de Número', PainelPrimeiraPosicao),
            7: ('Posições de Número', PainelPosicoes),
            8: ('Remove Número', PainelRemoveOcorrencias)
        }

        opcoes_g3 = {
            0: ('Voltar', None),
            1: ('Quantidade no Intervalo', PainelQtdNoIntervalo),
            2: ('Números no Intervalo', PainelNoIntervalo),
            3: ('Substitui Ocorrências', PainelSubstituiOcorrencias),
            4: ('Substitui Primeira Ocorrência',
                PainelSubstituiPrimeiraOcorrencia),
            5:
            ('Substitui Última Ocorrência', PainelSubstituiUltimaOcorrencia),
            6: ('Parte', PainelParte)
        }

        opcoes_g4 = {
            0: ('Voltar', None),
            1: ('Unir duas Listas', PainelUna),
            2: ('Números das Posições', PainelDasPosicoes)
        }

        menu_g1 = Menu('Lista de Números', opcoes_g1)
        menu_g2 = Menu('Lista de Números e 1 Número', opcoes_g2)
        menu_g3 = Menu('Lista de Números e 2 Números', opcoes_g3)
        menu_g4 = Menu('Duas Listas de Números', opcoes_g4)
        self._menu = Menu(
            'Exercício Processa Números', {
                0: ('Sair do Programa', None),
                1: ('Só Lista de Números', menu_g1),
                2: ('Lista de Números e 1 Número', menu_g2),
                3: ('Lista de Números e 2 Números', menu_g3),
                4: ('Duas Listas de Números', menu_g4)
            })

    def interaja(self):
        menu = self._menu.pergunte()
        while menu is not None:
            classe_painel = menu.pergunte()
            while classe_painel is not None:
                try:
                    classe_painel().execute()
                except Exception:
                    print('** Erro na execução!!')
                    input('Tecle <enter> para continuar')
                classe_painel = menu.pergunte()
            menu = self._menu.pergunte()