List1.py
# Copyright 2010 Google Inc.
# Licensed under the Apache License, Version 2.0
# http://www.apache.org/licenses/LICENSE-2.0
# Google's Python Class
# http://code.google.com/edu/languages/google-python-class/
# A. fim_igual
# Dada uma lista de strings, retorna o número de strings
# com tamanho >= 2 onde o primeiro e o último caracteres são iguais
# Exemplo: ['aba', 'xyz', 'aa', 'x', 'bbb'] retorna 3 def fim_igual(words): cont=0 for c in words: if len(c)>=2 and c[0]==c[-1]: cont+=1 return cont
# B. x_antes
# Dada uma lista de strings retorna uma lista onde
# todos os elementos que começam com x ficam sorteados antes
# Ex.: ['mix', 'xyz', 'apple', 'xanadu', 'aardvark'] retorna
# ['xanadu', 'xyz', 'aardvark', 'apple', 'mix']
# Dica: monte duas listas separadas e junte-as no final def x_antes(words): return sorted([c for c in words if c[0]=='x'])+sorted([c for c in words if c[0]!='x'])
def last(a): #esta def serve para a letra C return a[-1]
# C. sort_last
# Dada uma lista de tuplas não vazias retorna uma tupla ordenada
# por ordem crescente do último elemento
# Exemplo [(1, 7), (1, 3), (3, 4, 5), (2, 2)] retorna
# [(2, 2), (1, 3), (3, 4, 5), (1, 7)]
# Dica: use key=função que você definiu e que retorna o último elemento def sort_last(tuples): return sorted(tuples, key=last)
def test(obtido, esperado): if obtido == esperado: prefixo = ' Parabéns!' else: prefixo = ' Ainda não' print ('%s obtido: %s esperado: %s' % (prefixo, repr(obtido), repr(esperado)))
def main(): print ('fim_igual') test(fim_igual(['aba', 'xyz', 'aa', 'x', 'bbb']), 3) test(fim_igual(['', 'x', 'xy', 'xyx', 'xx']), 2) test(fim_igual(['aaa', 'be', 'abc', 'hello']), 1)
print () print ('x_antes') test(x_antes(['bbb', 'ccc', 'axx', 'xzz', 'xaa']), ['xaa', 'xzz', 'axx', 'bbb', 'ccc']) test(x_antes(['ccc', 'bbb', 'aaa', 'xcc', 'xaa']), ['xaa', 'xcc', 'aaa',