01.
def
identifica_numeros(nome_fich):
02.
"""
03.
Identifica se um ficheiro tem números, e retorna o resultado numa lista
04.
"""
05.
f_in
=
open(nome_fich,
'r'
)
06.
resultado
=
[]
07.
texto
=
f_in.read()
08.
texto_pal
=
texto.split()
09.
for
pal
in
texto_pal:
10.
if
pal.isdigit():
11.
resultado.append(int(pal))
12.
f_in.close()
13.
return
resultado
Analisemos o código. Abrimos o ficheiro para leitura (linha 5). De seguida criamos um contentor para guardar o resultado (linha 6). Lemos todo o ficheiro e transformamos a longa cadeia de caracteres numa lista de cadeias de caracteres, ou seja palavras. O separador de palavras é o espaço em branco (linhas 7 e 8). Entramos depois num ciclo, onde analisamos palavra a palavra para determinar se estamos na presença de uma cadeia em que todos os seus caracteres são dígitos (linhas 9 a 11). Dentro do ciclo o teste é feito usando o método isdigit(). Nos casos afirmativos, convertemos para inteiro e guardamos no contentor. Fechamos o ficheiro (linha 12) e devolvemos o resultado final (linha 13). Analise as debilidades da solução. Por exemplo: funciona se se tratar de números em vírgula flutuante? Funciona de o número tiver agarrado a um caracter não numérico? Que soluções tem para as questões enunciadas? Sugestão: faça uma análise caracter a caracter em vez de palavra a palavra.
Sem comentários:
Enviar um comentário