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()
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()
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()))
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
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()
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)
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]')
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()