Topic: metodo find()  (Letto 82 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline simone13

  • python unicellularis
  • *
  • Post: 6
  • Punti reputazione: 0
    • Mostra profilo
metodo find()
« il: Novembre 21, 2018, 18:54 »
buonasera. sto cercando di risolvere un codice che dovrebbe risolvere i crucipuzzle, trovare le parole in tutte le direzioni in una matrice di lettere e ritornare una stringa con le lettere mai utilizzate che formano una nuova parola. credevo di averlo finito ma vedendo i test del professore in un paio di casi la stessa parola viene ripetuta più volte nella stessa riga( colonna o anche diagonale). il mio problema è che per trovare le parole uso il metodo find quindi in questi casi la seconda parola non viene trovata. esiste un modo per mettere in una lista, o comunque raccogliere più " indici tro conti find" della stessa parola? se risolvo questo problema ho risolto tutto e posso consegnare il compito con un codice molto buono.
grazie in anticipo e buona serata  :)

Offline nuzzopippo

  • python unicellularis
  • *
  • Post: 7
  • Punti reputazione: 0
    • Mostra profilo
Re:metodo find()
« Risposta #1 il: Novembre 22, 2018, 08:05 »
... il mio problema è che per trovare le parole uso il metodo find quindi in questi casi la seconda parola non viene trovata. esiste un modo per mettere in una lista, o comunque raccogliere più " indici tro conti find" della stessa parola?...

Ciao, sono un nubbio, prendimi con le molle ma il discorso mi sembra semplice, è la metodologia stessa di chiamata di find che da la soluzione :
Citazione
str.find(str, beg=0, end=len(string))

basterebbe memorizzare i vari indici che vengono restituiti e ciclare, esempio :

>>> testo = 'Apelle figlio di Apollo fece una palla di pelle di pollo e tutti i pesci vennero a galla per vedere la palla di pelle di pollo fatta da Apelle figlio di Apollo'
>>> indice = testo.find(' pollo')
>>> while indice != -1:
print(indice, end=', ')
indice = testo.find(' pollo ', indice+1)


50, 120,
>>>

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.821
  • Punti reputazione: 9
    • Mostra profilo
Re:metodo find()
« Risposta #2 il: Novembre 22, 2018, 10:44 »
Uhm sì, o anche con le regex:

>>> import re
>>> [i.start() for i in re.finditer('ciao', 'ciao ciao ciao ciao')]
[0, 5, 10, 15]

Detto questo, mah... non so se il prof aveva proprio in mente di farvi usare "find" per questo compito... ma dipende dagli algoritmi che avete studiato.

Offline simone13

  • python unicellularis
  • *
  • Post: 6
  • Punti reputazione: 0
    • Mostra profilo
Re:metodo find()
« Risposta #3 il: Novembre 22, 2018, 13:10 »
grazie a tutti per la disponibilità, essendo al primo anno di informatica partendo da zero mi capitano spesso questi problemi, il professore dà solo il comando poi siamo noi che scriviamo da zero i nostri codici, ma avendo ancora poca esperienza molto probabilmente non scelgo le vie più veloci. grazie per i vostri preziosi consigli :) :)

Offline caronte

  • python erectus
  • ***
  • Post: 220
  • Punti reputazione: 0
    • Mostra profilo
Re:metodo find()
« Risposta #4 il: Novembre 22, 2018, 13:47 »
Anche se sei al primo anno, sicuramente il tuo prof ti avra’ dato inputs necessari ad eseguire il compito;
chiaramente neanche lui si aspetta che tu trovi la soluzione piu veloce, servirebbe a poco.. perche’ al momento lo scopo principale e’ farti scrivere un algoritmo che implementi la logica necessaria allo scopo…
poi di vie piu' veloci per fare quella cosa , soprattutto in Python , ce ne sono…vedrai;

e comunque posta sempre il tuo codice(anche errato) prima,  senza   aspettare che gli altri postino il loro, perche' su quello devi riflettere...