-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWesleyDiasXII.py
149 lines (111 loc) · 3.68 KB
/
WesleyDiasXII.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Wesley Dias (1º Semestre ADS-B), Lista XII
# !/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):
if n >= 10:
n = 'muitos'
res = f'Número de donuts: {n}'
return res
# 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):
res = ''
if len(s) > 2:
res = s[:2] + s[len(s)-2:len(s)]
return res
# 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):
pri = s[0]
s = s.replace(pri, '*')
s = s.replace('*', pri, 1)
return s
# D. mistura2
# Sejam duas strings a e b
# Retorno uma string '<a> <b>' separada por um espaço
# com as duas primeiras letras trocadas de cada string
# 'mix', pod' -> 'pox mid'
# 'dog', 'dinner' -> 'dig donner'
def mistura2(a, b):
return f'{b[:2] + a[2:len(a)]} {a[:2] + b[2:len(b)]}'
# E. palindrome
# Verifique se uma string é palíndrome
# palindrome('asa') True
# palindrome('casa') False
def palindrome(s):
situ = False
if s == s[::-1]:
situ = True
return situ
# F. busca
# 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
def busca(frase, palavra):
ocorre = cont = 0
while cont < (len(frase) - len(palavra) + 1):
if frase[cont:len(palavra)+cont] == palavra:
ocorre += 1
cont += 1
return ocorre
# 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()