-
Notifications
You must be signed in to change notification settings - Fork 0
/
03-Fix_Start.py
58 lines (46 loc) · 1.56 KB
/
03-Fix_Start.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
"""
03. fix_start
Dada uma string s, retorne uma string onde
todas as ocorrências do primeiro caracter de s
foram substituidas por '*', exceto a primeira.
Exemplo: 'babble' retorna 'ba**le'
Assuma que a string tem tamanho 1 ou maior.
Dica: s.replace(stra, strb) retorna uma versão da string s
onde todas as instancias de stra foram substituidas por strb.
"""
def fix_start_primeiro(s):
primeira_letra = s[0]
contador_primeira = 0
nova_palavra=''
for c in s:
if c==primeira_letra:
contador_primeira+=1
if contador_primeira >1:
c='*'
nova_palavra+=c
return nova_palavra
def fix_start_segundo(s):
primeira_letra = s[0]
return ''.join([primeira_letra, s[1:].replace(primeira_letra, '*')])
def fix_start(s):
return s[0] + s[1:].replace(s[0], '*')
# --- Daqui para baixo são apenas códigos auxiliáries de teste. ---
def test(f, in_, expected):
"""
Executa a função f com o parâmetro in_ e compara o resultado com expected.
:return: Exibe uma mensagem indicando se a função f está correta ou não.
"""
out = f(in_)
if out == expected:
sign = '✅'
info = ''
else:
sign = '❌'
info = f'e o correto é {expected!r}'
print(f'{sign} {f.__name__}({in_!r}) retornou {out!r} {info}')
if __name__ == '__main__':
# Testes que verificam o resultado do seu código em alguns cenários.
test(fix_start, 'babble', 'ba**le')
test(fix_start, 'aardvark', 'a*rdv*rk')
test(fix_start, 'google', 'goo*le')
test(fix_start, 'donut', 'donut')