Olá,
No código executado abaixo, quando digito 6 + Enter, o menu é exibido novamente ao invés de perguntar pelo padrão que se deseja buscar.
Não consigo ver o que está errado.
# python/app.py
# -*- coding: UTF-8 -*-
# --coding: ANSI --
import re
def listar(nomes):
print 'Listando nomes:'
for nome in nomes:
print nome
def cadastrar(nomes):
print 'Digite o nome:'
nome = raw_input()
nomes.append(nome)
def remover(nomes):
print 'Digite o nome que deseja remover: '
nome = raw_input()
for nome_disponivel in nomes:
if nome_disponivel == nome:
nomes.remove(nome)
break
else:
print 'Nome não disponível!'
break
def alterar(nomes):
print 'Digite o nome que deseja alterar: '
nome = raw_input()
for nome_disponivel in nomes:
if nome_disponivel == nome:
posicao_nome = nomes.index(nome)
print 'Digite o novo nome: '
nome_alterado = raw_input()
nomes[posicao_nome] = nome_alterado
break
else:
print 'Nome não disponível!'
break
def procurar(nomes):
print 'Digite nome a procurar:'
nome_procurar = raw_input()
if(nome_procurar in nomes):
print 'Nome existe na lista!'
else:
print 'Nome não existe na lista'
def procurar_regex(nomes):
print('Digite a expressão regular')
regex = raw_input()
nomes_concatenados = ''.join(nomes)
resultado = re.findall(regex, nomes_concatenados)
if resultado is none:
print 'Padrão não encontrado!'
else:
print 'Padrão encontrado %s' % resultado
# imediatamente abaixo da função cadastrar:
def menu():
nomes = []
escolha = ''
while(escolha != '0'):
print 'Digite: 1 para cadastrar nomes, 2 para listar, 3 para remover, 4 para alterar, 5 para procurar, 6 para procurar por expressão regular e 0 para terminar'
escolha = raw_input()
if escolha == '1':
cadastrar(nomes)
if escolha == '2':
listar(nomes)
if escolha == '3':
remover(nomes)
if escolha == '4':
alterar(nomes)
if escolha == '5':
procurar(nomes)
if escolha == '6':
procurar_regex(nomes)
menu()