Quello che dovrei riuscire a fare è questo:
'''Scrivere una funzione parole(a,b,txt) che ritorna una lista che all'indice i
ha una stringa contenente tutte le parole presenti nella linea i della stringa
di input txt di lunghezza almeno a ed al piu' b.
Per parola si intende una sequenza di caratteri alfabetici (maiuscoli o minuscoli)
di lunghezza massimale. Nella stringa in posisione i della lista di output, le
parole sono separate da un singolo spazio e devono apparire nello stesso
ordine con cui appaiono nella linea i di txt. Se la linea non ha parole di
lunghezza tra a e b, la stringa corrispondente nella lista di output e' la stringa
vuota.
AVVERTENZE: non usare caratteri non ASCII, come le lettere accentate;
non usare moduli che non sono nella libreria standard.
'''
Io per ora sono arrivato a questo punto:
Quando provo ad usare il programma mi manda messaggi del genere:
>>> parole(3,5,'''ciao a tutti''')
Traceback (most recent call last):
File "<pyshell#96>", line 1, in <module>
parole(3,5,'''ciao a tutti''')
File "<pyshell#95>", line 21, in parole
for r in righe:
TypeError: 'builtin_function_or_method' object is not iterable
Se è sbagliato il procedimento sapreste consigliarmene uno nuovo?
'''Scrivere una funzione parole(a,b,txt) che ritorna una lista che all'indice i
ha una stringa contenente tutte le parole presenti nella linea i della stringa
di input txt di lunghezza almeno a ed al piu' b.
Per parola si intende una sequenza di caratteri alfabetici (maiuscoli o minuscoli)
di lunghezza massimale. Nella stringa in posisione i della lista di output, le
parole sono separate da un singolo spazio e devono apparire nello stesso
ordine con cui appaiono nella linea i di txt. Se la linea non ha parole di
lunghezza tra a e b, la stringa corrispondente nella lista di output e' la stringa
vuota.
AVVERTENZE: non usare caratteri non ASCII, come le lettere accentate;
non usare moduli che non sono nella libreria standard.
'''
Io per ora sono arrivato a questo punto:
Python:
def parole(a,b,txt):
'''Implementare la funzione qui'''
# elimino i simboli non necessari
txt = txt.replace(',', '')
txt = txt.replace('.', '')
txt = txt.replace('-', '')
txt = txt.replace(';', '')
txt = txt.replace(':', '')
txt = txt.replace('_', '')
txt = txt.replace('!', '')
txt = txt.replace('?', '')
txt = txt.replace('^', '')
txt = txt.replace('(', '')
txt = txt.replace(')', '')
txt = txt.replace('"', '')
txt = txt.replace("'", '')
ris = []
ris2 = ''
# divido il testo in righe
righe = txt.splitlines
for r in righe:
# divido le righe in parole e seleziono solo quelle della lunghezza corretta
parole = r.split()
for p in parole:
if a <= len(p) <= b:
ris2 = ris2 + ' ' + p
else:
ris2 = ris2
# se la stringa risultante inizia con uno spazio elimino lo spazio
if ris2[0] == ' ':
ris2 = '' + ris2[1:]
# aggiungo la stringa alla lista
ris = ris + list(ris2)
ris2 = ''
return ris
Quando provo ad usare il programma mi manda messaggi del genere:
>>> parole(3,5,'''ciao a tutti''')
Traceback (most recent call last):
File "<pyshell#96>", line 1, in <module>
parole(3,5,'''ciao a tutti''')
File "<pyshell#95>", line 21, in parole
for r in righe:
TypeError: 'builtin_function_or_method' object is not iterable
Se è sbagliato il procedimento sapreste consigliarmene uno nuovo?