arquivo texto utilizado: https://easyupload.io/j5agtq O método faz parte de uma classe chamada ArqTexto
Objetivo: O método não utiliza entrada e retorna, em um objeto tuple, (1) o número médio de palavras por sentença no arquivo, (2) o número de palavras na sentença com mais palavras e (3) o número de palavras na sentença com menos palavras. Você pode considerar que os símbolos que delimitam uma sentença sejam '!?.'.
O que eu fiz:
def media(self):
import string
marcadores = ["?",".","!"]
cont = 0
total_pal = 0
num_frases = 0
qtdade_palavras = []
frase = ""
with open(arq) as f:
texto = f.read()
#print(texto)
for char in texto:
frase += char
if char in marcadores:
#print(frase)
#print(len(frase.split()))
for pal in frase.split():
for i in string.punctuation:
if i in pal:
pal = pal.replace(i, "")
pal = pal.lower()
cont +=1
#print(cont)
total_pal += cont
num_frases +=1
frase = ""
qtdade_palavras.append(cont)
cont = 0
continue
print(f"O numero médio de palavras por sentença é {total_pal/num_frases}")
print(f"O número de palavras na sentença com mais palavras é {max(qtdade_palavras)}")
print(f"O número de palavras na sentença com menos palavras é {min(qtdade_palavras)}")
A saída da minha função:
O numero médio de palavras por sentença é 25.488888888888887
O número de palavras na sentença com mais palavras é 124
O número de palavras na sentença com menos palavras é 2
Observei que, na verdade, a sentença com menos palavras tem apenas 1 palavra e não DUAS:
`Prophet!
O que estou errando?
código fonte completo: https://www.pastiebin.com/5df6940dbc109