forked from fmasanori/PPZ
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Lista 11 Google Python Class Resolução.py
112 lines (97 loc) · 3.38 KB
/
Lista 11 Google Python Class Resolução.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/python -tt
# 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/
# Exercícios básicos com strings
# A. donuts
# Para um inteiro n retorna uma string na forma 'Número de donuts: <n>'
# onde n é o valor passado como argumento.
# Caso n >= 10 devo retornar 'muitos' em lugar do número.
# donuts(5) returns 'Número de donuts: 5'
# donuts(23) returns 'Número de donuts: muitos'
def donuts(n):
return 'Número de donuts: %s' %('muitos' if n >= 10 else str(n))
# B. pontas
# Dada uma string s, retorna uma string com as duas primeiras e as duas
# últimas letras da string original s
# Assim 'palmeiras' retorna 'paas'
# No entanto, se a string tiver menos que 2 letras, retorna uma string vazia
def pontas(s):
if len(s) < 2:
return ''
else:
return s[:2] + s[-2:]
# C. fixa_primeiro
# Dada uma string s, retorna uma string onde todas as ocorrências
# do primeiro caracter são trocados por '*', exceto para o primeiro
# Assim 'abacate' retorna 'ab*c*te'
# Dica: use s.replace(stra, strb)
def fixa_primeiro(s):
return s[0] + s[1:].replace(s[0], '*')
# D. mistura2
# Sejam duas strings a e b
# Retorno uma string '<a> <b>' separada por um espaço
# com as duas letras trocadas de cada string
# 'mix', pod' -> 'pox mid'
# 'dog', 'dinner' -> 'dig donner'
def mistura2(a, b):
return b[:2] + a[2:] + ' ' + a[:2] + b [2:]
# E. palindrome
# Verifique se uma string é palíndrome
# palindrome('asa') True
# palindrome('casa') False
def palindrome(s):
return s == s[::-1]
# F. busca (COMP 89 IME-USP)
# Verifique quantas ocorrências de uma palavra há numa frase
# frase = 'ana e mariana gostam de banana'
# palavra = 'ana'
# busca ('ana e mariana gostam de banana', 'ana') == 4
# Hall of Fame Victor H. Panisa, 1a turma Python para Zumbis
def busca(frase, palavra):
return len([k for k in range(len(frase))
if frase[k:len(palavra)+k] == palavra])
# Provided simple test() function used in main() to print
# what each function returns vs. what it's supposed to return.
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 ('donuts')
test(donuts(4), 'Número de donuts: 4')
test(donuts(9), 'Número de donuts: 9')
test(donuts(10), 'Número de donuts: muitos')
test(donuts(99), 'Número de donuts: muitos')
print ()
print ('pontas')
test(pontas('palmeiras'), 'paas')
test(pontas('algoritmos'), 'alos')
test(pontas('a'), '')
test(pontas('xyz'), 'xyyz')
print ()
print ('fixa_primeiro')
test(fixa_primeiro('babble'), 'ba**le')
test(fixa_primeiro('aardvark'), 'a*rdv*rk')
test(fixa_primeiro('google'), 'goo*le')
test(fixa_primeiro('donut'), 'donut')
print ()
print ('mistura2')
test(mistura2('mix', 'pod'), 'pox mid')
test(mistura2('dog', 'dinner'), 'dig donner')
test(mistura2('gnash', 'sport'), 'spash gnort')
test(mistura2('pezzy', 'firm'), 'fizzy perm')
print ()
print ('palindrome')
test(palindrome('asa'), True)
test(palindrome('casa'), False)
print ()
print ('busca')
test(busca('ana e mariana gostam de banana', 'ana'), 4)
test(busca('uma arara ou duas araras', 'ara'), 4)
if __name__ == '__main__':
main()