Jump to content
Nokioteca Forum

Edex

Utente
  • Posts

    9
  • Joined

  • Last visited

Everything posted by Edex

  1. Edex

    Python

    sisi ok quello lo so, ci sono Il mio problema, il che mi sembra impossibile, è che index non restituisce il primo valore che trovato nella lista uguale a quello che gli dico di cercare, ne restituisce uno con indice maggiore e poi torna indietro, non capisco perchè... Comunque come consigli di riordinare il codice? E' il mio primo programma e non sono molto esperto... xD
  2. Edex

    Python

    Sempre io...xD Mi è sorto un altro problema e stavolta non riesco proprio a capire perchè faccia così: il mio programma ricerca (come ho già detto) le corrispondenze delle parole in una lista, ora se l' indice della parola finale è minore dell'indice della parola iniziale io faccio cancellare al programma la parola finale e lancio nuovamente la ricerca, e fin qui va tutto bene. Il problema è che quando il programma poi ricerca, nella stessa lista, la parola finale non mi prende la prima come dovrebbe fare in automatico. Vi faccio vedere: non 331 dubito 332 fore 333 plerosque 334 attice 335 qui 336 hoc 337 in 91 non 331 dubito 332 fore 333 plerosque 334 attice 335 qui 336 hoc 337 in 331 non 331 dubito 332 fore 333 plerosque 334 attice 335 qui 336 hoc 337 in 332 eo 333 non 331 dubito 332 fore 333 plerosque 334 attice 335 qui 336 hoc 337 in 196 non 331 dubito 332 fore 333 plerosque 334 attice 335 qui 336 hoc 337 Mi sono fatto stampare a video le parole trovate e i loro indici, le parole "non dubito fore plerosque attice qui hoc" sono le parole iniziali, "in" è la prima parola finale. Come potete notare la prima volta che ricerca in lo trova con indice 91 (che è minore di 331) e quindi cancella in, poi la seconda volta trova in con indice 331 e non è possibile perchè ce ne sono altri di in prima di quell'indice. Lo posso dire sia perchè ho controllato a vista, sia perchè poi il programma trova in con indice 196 (vi ho mostrato solo una parte di quello che il programma mi ha stampato. Ho pensato che fosse un problema della lista ma ho fatto stampare a video anche quello ed è tutto ok, il programma salta prorpio alcuni "in", perchè?Avete idee? Io è da stamattina che ci provo ma niente...-.-'
  3. Edex

    Python

    Eccomi di nuovo..xD Il programma sul pc gira che è una meraviglia, è ritornato il problema del cellulare che non completa il ciclo. La funzione che ho scritto: def Stampa_versione(): global num global num_fin b = 1 item_par1 = item[0] + num item_par_fin7 = item[13] + num_fin while b != 0: if item_par1 < item_par_fin7: print versioni3[item_par1], item_par1 = item_par1 + 1 elif item_par1 == item_par_fin7: print versioni3[item_par1] print "-------------------" item_par1 = item[0] + num c = 1 while c != 0: if 0 <= item_par1 <= 249: print traduzioni[0] c = 0 elif 250 <= item_par1 <= 337: print traduzioni[1] print traduzioni[2] c = 0 elif 338<= item_par1 <= 593: print traduzioni[3] c = 0 b = 0 che ho scritto anche i un altro modo: def Stampa_versione(): global num global num_fin b = 1 item_par1 = item[0] + num item_par_fin7 = item[13] + num_fin while b != 0: if item_par1 < item_par_fin7: print versioni3[item_par1], item_par1 = item_par1 + 1 elif item_par1 == item_par_fin7: print versioni3[item_par1] print "-------------------" b = 0 item_par1 = item[0] + num if item_par1 in range(0,250): print traduzioni[0] if item_par1 in range(250,338): print traduzioni[1] print traduzioni[2] if item_par1 in range(338,593): print traduzioni[3] sul pc viene eseguita completamente, sul cellulare invece viene eseguita tutta solo se la variabile item_par1 è contenuta tra 250 e 338. Pensavo fosse un problema di conteggio ma ho fatto stampare la variabile ed è giusta, poi credevo fosse un problema di caratteri(anche se ho inserito la stringa di codifica utf-8) e ho cambiato un elemento della lista traduzioni con "ciao" ma non stampa neanche quello. Non ho più idee, voi?
  4. Edex

    Python

    Ho provato anche implementare i print della funzione prova nella funzione Stampa_versione, in maniera che fosse una unica: def Stampa_versione(): global num global num_fin b = 1 item_par1 = item[0] + num item_par_fin7 = item[13] + num_fin while b != 0: if item_par1 < item_par_fin7: print versioni3[item_par1], item_par1 = item_par1 + 1 elif item_par1 == item_par_fin7: print versioni3[item_par1] b = b - 1 print "-------------------" c = 1 while c != 0: if 0 <= item_par1 <= 15: print prova[0] c = 0 else: print prova[1] c = 0 sul pc continua ad andare ma sul cell no, dopo aver stampato la prima parte aggiunge uno spazio e si ferma. Però la shell continua a funzionare. EDIT: ho scoperto il problema, mi si fermava ( anche nello stampare la prima parte) quando incontrava il carattere è, sostituendolo funziona però a me servirebbe, se possibile, anche di inserure caratteri accentati. Come posso fare? Che codifica mi serve?
  5. Edex

    Python

    @memoryn: No il programma continua a funzionare benissimo. Se una volta concluso clicco di nuovo options/run script parte tutto. Solo che non conclude il ciclo e non capisco perchè sul pc lo concluda e invece sul cell no. @lento: Ok. Comunque questo programma in pratica si fa dare un tot di parole iniziali e finali, le ricerca all'interno della lista (in ordine così come sono fornite) e stampa a video gli elementi della lista a partire dalla prima parola fino all'ultima (parole inserite ovviamente). Poi fa una corrispondenza tra l'indice della prima parola inserita dall'utente e delle condizioni che io specifico in una funzione e stampa a video un elemento di un'altra lista. Va bene così??
  6. Edex

    Python

    Grazie memoryn ho smanettato un pò qua e la e ho risolto. Ora però ho un altro problema: ho trasferito lo script sul cellulare, lo eseguo ee va a buon fine, però mi salta l'ultima parte di comandi. print Stampa_versione() print "---------------------------" Prova() a = a - 1 esegue solo fino a Stampa_versione() (codice) def Stampa_versione(): global num global num_fin b = 1 item_par1 = item[0] + num item_par_fin7 = item[13] + num_fin while b != 0: if item_par1 < item_par_fin7: print versioni3[item_par1], item_par1 = item_par1 + 1 elif item_par1 == item_par_fin7: print versioni3[item_par1] return poi smette di funzionare e non esegue nè il successivo print, ne la funzione Prova() (codice) def Prova(): global num item_par1 = item[0] + num if 0 <= item_par1 <= 15: print prova[0] else: print prova[1] Hai idea del perchè? Lo fa solo sul cellulare, sul pc funziona bene ed esegue fino alla fine.
  7. Edex

    Python

    Salve a tutti,sono un neoprogrammatore e stavo scrivendo il mio primo programma. Finora ho incontrato qualche problema ma sono riuscito a risolverlo, ora però ho un ostacolo che non riesco a sormontare: io ho creato un programma che lavoro su di una lista. Io do al programma alcune parole e lui le cerca fina a quando non le trova e stampa a video la parte di lista interessata dalla mia ricerca. Per fare ciò ho posto ogni parola come elemento, poi mi faccio dare dall'utente la parole iniziali e finali e inizio la ricerca. Questo è il codice delle istruzioni condizionali per la ricerca: while a != 0: #Condizioni parole iniziali if par1 in versioni: item_par1 = versioni.index(par1) item_par2 = item_par1 + 1 if par2 == versioni[item_par2]: item_par3 = item_par2 + 1 if par3 == versioni[item_par3]: item_par4 = item_par3 + 1 if par4 == versioni[item_par4]: item_par5 = item_par4 + 1 if par5 == versioni[item_par5]: item_par6 = item_par5 + 1 if par6 == versioni[item_par6]: if par_fin1 in versioni: item_par_fin1 = versioni.index(par_fin1) #Condizione grandezza if item_par_fin1 > item_par1: item_par_fin2 = item_par_fin1 + 1 #Condizioni parole finali if par_fin2 == versioni[item_par_fin2]: item_par_fin3 = item_par_fin2 + 1 if par_fin3 == versioni[item_par_fin3]: item_par_fin4 = item_par_fin3 + 1 if par_fin4 == versioni[item_par_fin4]: item_par_fin5 = item_par_fin4 + 1 if par_fin5 == versioni[item_par_fin5]: Stampa_versione() a = a - 1 else: Cancella_par_fin1_4() Ricerca() else: Cancella_par_fin1_3() Ricerca() else: Cancella_par_fin1_2() Ricerca() else: Cancella_par_fin1() Ricerca() #Condizione grandezza else: Cancella_par_fin1_gr() Ricerca() else: print "Versione non trovate" a = a - 1 #Condizioni parole iniziali else: Cancella_par1_5() Ricerca() else: Cancella_par1_4() Ricerca() else: Cancella_par1_3() Ricerca() else: Cancella_par1_2() Ricerca() else: Cancella_par1() Ricerca() else: print "Versione non trovata" a = a - 1 Il mio problema è il seguente: se tutte le condizioni sono vere va tutto bene, se sono false nella prima parte (nelle parole iniziali) va tutto ok. Se invece una parola è sbagliata nelle parole finali(nella seconda parte) il programma mi da questo errore: Traceback (most recent call last): File "/home/edex/Scaricati/debug iniziale.py", line 263, in <module> Ricerca() File "/home/edex/Scaricati/debug iniziale.py", line 63, in Ricerca Ricerca() File "/home/edex/Scaricati/debug iniziale.py", line 66, in Ricerca Ricerca() File "/home/edex/Scaricati/debug iniziale.py", line 66, in Ricerca Ricerca() File "/home/edex/Scaricati/debug iniziale.py", line 42, in Ricerca Cancella_par_fin1() File "/home/edex/Scaricati/debug iniziale.py", line 142, in Cancella_par_fin1 if par2 != versioni[item_par_fin2]: NameError: global name 'item_par_fin2' is not defined Ma io la variabile globale item_par_fin2 non l'ho definita qui? if item_par_fin1 > item_par1: item_par_fin2 = item_par_fin1 + 1 Avevo avuto lo stesso problema con la prima parte(le parole iniziali) ma ho risolto scrivendo questa funzione: def Cancella_par1(): b = 1 item_par1 = versioni.index(par1) item_par2 = versioni.index(par2) while b != 0: if item_par2 < item_par1: del versioni[item_par2] item_par2 = versioni.index(par2) else: del versioni[item_par1] b = 0 La funzione Cancella_par_fin1 è: def Cancella_par_fin1(): if par2 != versioni[item_par_fin2]: del versioni[item_par_fin1] . Io avevo provato anche a modificare questa funzione scrivendone una simile a quella per le parole iniziali: def Cancella_par_fin1_2(): h = 0 item_par_fin1 = versioni.index(par_fin1) item_par_fin3 = versioni.index(par_fin3) while h != 0: if item_par_fin3 < item_par_fin1: del versioni[item_par_fin3] item_par_fin3 = versioni.index(par_fin3) else: del versioni[item_par_fin1] h = 0 Però quando veniva eseguita il programma andava in loop e restituiva questo errore: RuntimeError: maximum recursion depth exceeded in cmp Grazie per il tempo che mi avete dedicato e spero in un vostro aiuto
  8. ma se io installo il py 1.4.5 funziona? devo installare tutto o basta installare il runtime del 1.4.5?
  9. ciao, prima di tutto complimenti grande idea è da tempo che cerco un programma del genere, in secondo luogo ho un problema: il file in .PYD nonostante ho installato py2.0 sul mio nokia 5800 non me lo riconosce e quando ci clicco mi dice tipo "file non supportato", perchè??
  10. Salve a tutti, piacere mi chiamo federico. Possiedo un nokia 5800 express music che ho comprato da più di un anno ormai e che voglio imparare a sfruttare al massimo!!
×
×
  • Create New...

Important Information

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy