O documento apresenta regras para números de telefone válidos em uma vila fictícia e lista de números de telefone. As regras são: não pode ter dígitos consecutivos iguais, soma dos dígitos deve ser par e o último dígito diferente do primeiro. O documento pergunta quantos números da lista respeitam essas regras.
2. Rodrigo Lira
Aluno do 5º período de Engenharia
da Computação na UPE.
Conheci python no final de 2008.
Participa dos grupos Python Poli e do
PUG-PE.
http://tiny.cc/rodrigolira
3. Os Telefones
Na pacata campestre vila de
Arquivonaoencontradoville,
todos os telefones têm 6
dígitos. A companhia telefônica
estabelece as seguintes regras
sobre os números:
4. Não pode haver dois dígitos
consecutivos idênticos, porque
isso é chato.
A soma dos dígitos tem que ser
par, porque isso é legal.
O último dígito não pode ser igual
ao primeiro, porque isso dá azar.
7. Filter
Aplicação de filtro
Tem como retorno uma sequência formada
por todos os itens em que func(item) é True.
filter(função ou None,seq)
#Palíndromos
filter(lambda x: x[::-1]==x,["casa","ovo","palavra","radar"])
['ovo', 'radar']
8. Lambda
Função anônima.
Seu corpo deve conter apenas expressão.
Não possui a instrução return.
Seguem o modelo:
lambda arg1,arg2,arg3,argn: expressão
10. O último dígito não pode ser
igual ao primeiro
telefone = “215228”
telefone[0]!=telefone[-1]
True
11. A soma dos dígitos tem que
ser par
telefone = “215228”
sum(int(d) for d in telefone)%2==0
True
12. Zip
Retorna uma lista cujos elementos são
tuplas resultantes de cada um dos
elementos de uma ou mais sequências de
entrada seq1, seq2, seqN.
zip(seq1,seq2,seqn)
Exemplo:
zip(('a','b'),[1,2])
[('a', 1), ('b', 2)]
13. Não pode haver dois dígitos
consecutivos idênticos
telefone = “215228”
all(a!=b for a,b in zip(telefone,telefone[1:]))
#[('2', '1'), ('1', '5'), ('5', '2'), ('2', '2'), ('2', '8')]
False