Forum >> Principianti >> Ricerca in un file di testo

Pagina: 1 2 Avanti

Buongiorno,
premetto che sono nuovo di Python E di programmazione in generale qui qualsiasi consiglio è gradito.

Sto iniziando facendo piccoli programmini stupidi per prendere pratica e già mi incaglio (andiamo bene ;()
Dunque sto cercando di fare un programmino che legga il contenuto di un file di testo (delle ricette) e secondo il piatto che inserisco mi restituisce gli ingredienti.

#Qui apro il file lo leggo e lo chiudo.
ricette = open("ricette.txt","r")
lettura=ricette.readlines()
ricette.close()

#Ora prendo l'input e creo una lista con il contenuto del file
richiesta=input('Che piatto vuoii ??').lower()
lista=lettura

Ora non so come proseguire , dovrei creare una lista che inzia con Carbonara (o quello che gli passo) e finire con *** esclusi. Ovviamente non so neanche se ho iniziato bene :confused:

Grazie






Questo è il contenuto del file di testo (ho usato gli asterischi per avere un carattere di STOP forse ci sono metodi migliori..):

Carbonara
Pasta
Cipolla
Pancetta
Olio
Sale
Pecorino
Uovo
Parmigiano
***
Matriciana
Pasta
Cipolla
Pancetta
Olio
Sale
Pecorino
Pomodoro
Parmigiano
***
Cotoletta alla milanese
Carne
Uovo
Pangrattato
Olio
***


--- Ultima modifica di lrndnl in data 2016-03-22 17:54:50 ---
Ciao e benvenuto.
Mmm ... da dove cominciare????
per dare una risposta alla tua richiesta proviamo a chiedere a python che tipo di oggetto restiuisce quando tu gli chiedi di fare questo:
lettura=ricette.readlines()
Lo facciamo in questo modo:
print(type(lettura))
quello che ti dovrebbe restituire è:
<class 'list'>
questo ti dovrebbe suggerire che quello che python ti restituisce é già di fatto una lista.
Capito questo tu dovresti aver già studiato o letto e proprietà delle liste,(sono iterabili) quindi da questo possiamo aggiungere:
for x in lettura:
	print(x)
codice completo:
ricette = open("ricette.txt", "r")
lettura = ricette.readlines()
print(type(lettura))
for x in lettura:
	print(x)
ricette.close()
Ora è da stabilire se la lista ottenuta oltre che iterabili può essere manomessa/modificata per le tue esigenze.
Magari la domanda che avevi fatto nel post ora dovrebbe o potrebbe diventare:
"come faccio a chiedere se all'interno della lista che ho esiste un piatto che si chiama Carbonara?"
ma magari stò sbagliando completamente a interpretare quello che vuoi ottenere. ;) :) :birrame:

Detto questo passo a te la palla per un po di ragionamento. ;) :ok:


--- Ultima modifica di Orsogrizzly in data 2016-03-22 19:04:56 ---
Grazie mille per la risposta mi è utilissimo qualcuno che mi indirizzi in particolar modo a ragionare come un programamtore.

Quello che io volevo fare(non so se è il modo giusto) era uno slicing dal piatto che inserivo agli asterischi esclusi.

Ci lavoro un pò !

Grazie.
Sono un principiante anch'io, dunque questa soluzione non deve essere granché. Però funziona.

EDIT: vedere secondo file allegato.

Per avviare lo script:
>>> python nome_script nome_file

EDIT: non so se creare una lista sia il modo efficiente di 'analizzare' le stringhe del file. Mi chiedo se non si possa fare direttamente dal file, senza passare per una lista.


--- Ultima modifica di ESC in data 2016-03-24 14:34:23 ---
Allegati
lrndnl

Purtroppo io non sono un vero programmatore e in oltre il mio inglese fa praticamente schifo,
traduco slicing in affettare, se quanto tradotto è esatto, tu vorresti estrarre dalla lista degli elementi, e più precisamente da quello contenuto nella variabile di input fino ad arrivare ai primi asterischi contenuti nella lista.
E' corretto il ragionamento da me esposto?
Se si:
consiglio di vedere o rivedere il metodi precostituiti di lista,
nella stesura del codice tenere presente che il dato contenuto nella variabile di input, potrebbe non essere contenuta nella lista, questo potrebbe causare un errore di ritorno.
Passo ancora una volta a te la palla per i relativi ragionamenti, studio, e prove.
Si aspettano righe di codice di eventuali prove effettuate. ;) :sarcastic: :vampire: :angel: :devil: :vampire: :angel: :py:



--- Ultima modifica di Orsogrizzly in data 2016-03-22 21:41:26 ---

--- Ultima modifica di Orsogrizzly in data 2016-03-22 21:42:26 ---
lrndnl

Purtroppo io non sono un vero programmatore e in oltre il mio inglese fa praticamente schifo,
traduco slicing in affettare, se quanto tradotto è esatto, tu vorresti estrarre dalla lista degli elementi, e più precisamente da quello contenuto nella variabile di input fino ad arrivare ai primi asterischi contenuti nella lista.
E' corretto il ragionamento da me esposto?
Se si:
consiglio di vedere o rivedere il metodi precostituiti di lista,
nella stesura del codice tenere presente che il dato contenuto nella variabile di input, potrebbe non essere contenuta nella lista, questo potrebbe causare un errore di ritorno.
Passo ancora una volta a te la palla per i relativi ragionamenti, studio, e prove.
Si aspettano righe di codice di eventuali prove effettuate. ;) :sarcastic: :vampire: :angel: :devil: :vampire: :angel: :py:



--- Ultima modifica di Orsogrizzly in data 2016-03-22 21:41:26 ---

--- Ultima modifica di Orsogrizzly in data 2016-03-22 21:42:26 ---
Grazie.
Lo slicing ti permette di prendere pezzi di liste , tuple e dizionari (se dico imprecisioni ditemelo ).
è una cosa del genere :
a=[1,2,3,4,5,6,7,8,9]
b=a[1:-1] ti prende a (partendo in questo caso da 2 fino al 7

La mia idea era di applicare questo principio quindi di prendere il pezzo che va da quello che gli passo (carbonara) agli asterischi ,esclusi.

Credo abbia una logica non so però se la ha in python..
Beh, almeno un insulto me lo potevi anche dire...
Beh, almeno un insulto me lo potevi anche dire...

No che insulto :)
Non capisco il tuo codice.. sembra proprio diverso dal mio .. sembra un altra versione di python non capisco..

Beh, almeno un insulto me lo potevi anche dire...

No che insulto :)
Non capisco il tuo codice.. sembra proprio diverso dal mio .. sembra un altra versione di python non capisco..


per esempio se uso :
lista_ingredienti = ricettario.split('\n')
mi dice che:
Traceback (most recent call last):
File "C:/python/ricetta.py", line 4, in <module>
lista_ing = lettura.split('\n')
AttributeError: 'list' object has no attribute 'split'

in pratica che le liste non hanno attributo split...
Stavo cercando un pò di cose e ho trovato i più disparati metodi ma nessuno mi funziona..

Stavo prendendo spunto dal tupo programma ,anzi grazie non ti ho risposto che ero in sbatti per sto probelma :V
Scusa !
In pratica il mio problema (che tu ha irisolto con split) è levare dalla lista sto benedetto \n a quel punto dovrei riuscire ad andare un pò avanti !


Pagina: 1 2 Avanti



Esegui il login per scrivere una risposta.