Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-01-2008, 15:10   #1
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
[PYTHON] Chiarimento riguardo le variabili nelle funzioni

Qua c'è l'inizio della discussione http://www.hwupgrade.it/forum/showthread.php?t=1660316

cdimauro: ho chiuso e riaperto l'idle e poi mi ha dato l'errore, prima invece no e non avevo modificato niente.. che cosa strana..

Un' altra cosa che non capisco è questa parte http://www.python.it/doc/Easytut/eas...00000000000000

Perchè tutti questi passaggi? Cioè, anche senza fare tutti quei passaggi che dice lì, il risultato viene sempre 6 quindi non vedo l'utilità di tutti quei passaggi che fà vedere lì, servono solo a confondere
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.

Ultima modifica di ~FullSyst3m~ : 24-01-2008 alle 17:18.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 17:17   #2
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Inoltre volevo sapere se con le conoscenze che ho acquisito fino ad ora potrei scrivere un programmino che calcola il codice fiscale (sono arrivato al capitolo 7.5 del manuale)
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 18:05   #3
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Capitolo 8.2, cosa significa questo (alle volte sta guida non la capisco. O è lei o sono io)?

Quote:
Le entrate (index) valide di una lista (cioè quelle richiamabili grazie a nome_lista [numero dell'elemento]) vanno da 0 a len - 1. La funzione index serve a sapere la posizione di un elemento in una lista. Nel caso esistano elementi con lo stesso nome ritornerà la prima posizione dell'elemento. Osservate come l'istruzione demolist.index(42) ritorni il valore 1 e l'istruzione demolist[1] ritorni il valore 42.
Non ho capito molto perchè l'istruzione demolist.index (42) ritorni il valore 1 e perchè le entrare valide di una lista vanno da 0 a len - 1
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 18:46   #4
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Qua c'è l'inizio della discussione http://www.hwupgrade.it/forum/showthread.php?t=1660316

cdimauro: ho chiuso e riaperto l'idle e poi mi ha dato l'errore, prima invece no e non avevo modificato niente.. che cosa strana..

Un' altra cosa che non capisco è questa parte http://www.python.it/doc/Easytut/eas...00000000000000

Perchè tutti questi passaggi? Cioè, anche senza fare tutti quei passaggi che dice lì, il risultato viene sempre 6 quindi non vedo l'utilità di tutti quei passaggi che fà vedere lì, servono solo a confondere
Beh, quella dell'esempio è una funzione che calcola il valore della moltiplicazioni tra due numeri . La funzione mi sembra abbastanza complicata per il lavoro che fa , usa la ricorsione infatti per calcolare la moltiplicazione (fuori di testa ) , ma penso sia fatta apposta per dimostrare l'uso delle funzioni.

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 18:54   #5
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Capitolo 8.2, cosa significa questo (alle volte sta guida non la capisco. O è lei o sono io)?



Non ho capito molto perchè l'istruzione demolist.index (42) ritorni il valore 1 e perchè le entrare valide di una lista vanno da 0 a len - 1
Le liste si scorrono per indice. Ossia gli elementi vengono inseriti in "caselle numerate" e poi per ottenere l'elemento dalla lista si usa la notazione "variabile_lista[indice]" dove "indice" è un numero indicante la cella contenente l'elemento che ci interessa e "variabile_lista" è il nome della variabile di tipo lista.

La numerazione delle celle della lista parte da 0 . Il primo elemento della lista è quindi posizionato all'indice di valore 0 e lo si ottiene con la notazione "variabile_lista[0]". Visto che la numerazione parte da 0 l'ultimo valore valido per l'indice sarà pari alla lunghezza della lista (ossia il numero degli elementi contenuti nella lista stessa) meno 1. Quindi se la lista contiene 4 elementi l'ultimo elemento lo si otterrà tramite l'indice 3. (len - 1).
Le scritture valide saranno quindi : variabile_lista[0] , variabile_lista[1], variabile_lista[2], variabile_lista[3].

Mettiamo il caso adesso che sai il nome del valore contenuto nella lista, ma non sai quale sia l'indice della cella che lo contiene. Per ottenere l'indice basta usare la funzione index() in questo modo :

variabile_lista.index(elemento) , dove "elemento" è l'elemento di cui si vuole sapere l'indice. Proprio perchè index() ritorna l'indice dell'elemento allora "variabile_lista[variabile_lista.index(elemento)]" ritornerà come valore proprio "elemento"

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 19:53   #6
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Beh, quella dell'esempio è una funzione che calcola il valore della moltiplicazioni tra due numeri . La funzione mi sembra abbastanza complicata per il lavoro che fa , usa la ricorsione infatti per calcolare la moltiplicazione (fuori di testa ) , ma penso sia fatta apposta per dimostrare l'uso delle funzioni.
Infatti... fuori di testa proprio per fare una moltiplicazione... (oltretutto ancora alla ricorsione non ci sono arrivato)

Quote:
Le liste si scorrono per indice. Ossia gli elementi vengono inseriti in "caselle numerate" e poi per ottenere l'elemento dalla lista si usa la notazione "variabile_lista[indice]" dove "indice" è un numero indicante la cella contenente l'elemento che ci interessa e "variabile_lista" è il nome della variabile di tipo lista.

La numerazione delle celle della lista parte da 0 . Il primo elemento della lista è quindi posizionato all'indice di valore 0 e lo si ottiene con la notazione "variabile_lista[0]". Visto che la numerazione parte da 0 l'ultimo valore valido per l'indice sarà pari alla lunghezza della lista (ossia il numero degli elementi contenuti nella lista stessa) meno 1. Quindi se la lista contiene 4 elementi l'ultimo elemento lo si otterrà tramite l'indice 3. (len - 1).
Le scritture valide saranno quindi : variabile_lista[0] , variabile_lista[1], variabile_lista[2], variabile_lista[3].

Mettiamo il caso adesso che sai il nome del valore contenuto nella lista, ma non sai quale sia l'indice della cella che lo contiene. Per ottenere l'indice basta usare la funzione index() in questo modo :

variabile_lista.index(elemento) , dove "elemento" è l'elemento di cui si vuole sapere l'indice. Proprio perchè index() ritorna l'indice dell'elemento allora "variabile_lista[variabile_lista.index(elemento)]" ritornerà come valore proprio "elemento"
Ora si che ci siamo... magari fossero scritte cosi chiare come hai spiegato tu alcune parti di questa guida, alle volte è criptica... mi devo mettere una flebo per non svenire...

Adesso sono all' 8.2... che casino...

Codice:
menu_item = 0
list = []
while menu_item != 9:
        print "--------------------"
        print "1. Print the list"
        print "2. Add a name to the list"
        print "3. Remove a name from the list"
        print "4. Change an item in the list"
        print "9. Quit"
        menu_item = input("Pick an item from the menu: ")
        if menu_item == 1:
                current = 0
                if len(list) > 0:
                        while current < len(list):
                                print current,". ",list[current]
                                current = current + 1
                else:
                        print "List is empty"
        elif menu_item == 2:
                name = raw_input("Type in a name to add: ")
                list.append(name)
        elif menu_item == 3:
                del_name = raw_input("What name would you like to remove: ")
                if del_name in list:
                        item_number = list.index(del_name)
                        del list[item_number]
                        # Il codice precedente rimuove solamente le
                        # prime occorrenze di name. Quello successivo,
                        # da Gerald, rimuove tutto. 
                        # while del_name in list:
                        #        item_number = list.index(del_name)
                        #        del list[item_number]
                else:
                        print del_name," was not found"
        elif menu_item == 4:
                old_name = raw_input("What name would you like to change: ")
                if old_name in list:
                        item_number = list.index(old_name)
                        new_name = raw_input("What is the new name: ")
                        list[item_number] = new_name
                else:
                        print old_name," was not found"
print "Goodbye"
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 20:26   #7
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Dopo aver preso un pò d'aria (e dalle 13.30 che scrivo codice e studio python!) ho capito il programma... però non capisco questo commento al codice:

Quote:
# Il codice precedente rimuove solamente le
# prime occorrenze di name. Quello successivo,
# da Gerald, rimuove tutto.
Nell'esercizio di prima (sempre 8.2) viene cancellato il nome, la stessa cosa che fa questo programma, quindi perchè c'è messo che il codice precedente rimuove solamente le prime occorrenze di name?
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2008, 09:25   #8
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Rieccomi. Sono stato malato (e lo sono ancora, ma sto un po' meglio, anche se tra poco torno a letto).

Velocemente. Questo:
Codice:
item_number = list.index(del_name)
del list[item_number]
codice elimina soltanto il primo elemento trovato nella lista con quel nome.

Se sostituisce queste due righe con quelle presenti nel codice commentato:
Codice:
while del_name in list:
  item_number = list.index(del_name)
  del list[item_number]
verranno invece eliminate TUTTE le occorrenze trovate.

Spero sia chiaro. Comunque questa guida non mi piace molto. Inoltre non è molto "pythonic", nel senso che in alcuni punti non è in "stile Python". Ad esempio al posto di questo:

if len(list) > 0:

io avrei scritto questo:

if list:

Che puoi leggere "se c'è la lista" (cioé se la lista non è vuota -> ha almeno un elemento), allora esegui il blocco di codice.

OK, adesso torno a letto. Se mi riprendo del tutto e domani vedo che hai ancora dei problemi, proverò a darti una mano.

Ciao
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2008, 14:21   #9
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Grazie cdimauro, molto gentile! Saresti un grande maestro sai? Comunque è proprio per questo che chiedo, questo guida alle volte sembra che parla di un altro linguaggio, ma ormai ho iniziato con questa e finisco con questa. La cosa diversa del codice commentato è che ha il ciclo while (nell'altro codice invece c'è if), ma per il resto il programma fa la stessa cosa, cioè trova l'indice dell'elemento e poi cancella l'indice. Non ci vedo la differenza... sarò stupido forse..
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2008, 16:25   #10
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Capitolo 8.3, esempio test.py:

Codice:
## Questo programma verifica la vostra conoscenza.

true = 1
false = 0

# Prima ottieni il questionario, successivamente sarà modificato 
# per l'uso del file IO. 
def get_questions():
    # Nota come il dato viene magazzinato in una lista di liste.
    return [["What color is the daytime sky on a clear day?","blue"],\
            ["What is the answer to life, the universe and everything?","42"],\
            ["What is a three letter word for mouse trap?","cat"]]

# Questo verificherà una singola domanda, restituirà vero, se l'utente
# ha scritto la risposta corretta, altrimenti restituirà falso.
def check_question(question_and_answer):
    # Estrai la domanda e la risposta dalla lista.
    question = question_and_answer[0]
    answer = question_and_answer[1]
    # Poni la domanda all'utente.
    given_answer = raw_input(question)
    # Confronta le risposte dell'utente con quelle del test.
    if answer == given_answer:
        print "Correct"
        return true
    else:
        print "Incorrect, correct was:",answer
        return false

# Questa funzione effettuerà tutte le domande.
def run_test(questions):
    if len(questions) == 0:
        print "No questions were given."
        # Esce dalla funzione.
        return
    index = 0
    right = 0
    while index < len(questions):
        # Controlla la domanda.
        if check_question(questions[index]):
            right = right + 1
        # Vai alla prossima domanda.
        index = index + 1
    # Attenzione all'ordine dei conteggi, prima moltiplica, poi dividi.
    print "You got ",right*100/len(questions),"% right out of",len(questions)

# Adesso esegui la funzione sulle domande.
run_test(get_questions())
La domanda dalla lista e la risposta come la estrae? Non fa nessun riferimento alla funzione get_questions..

check_questions come parametro dovrebbe avere (question_and_answer), come fa ad avere (questions [index])? Come lo fa il controllo della domanda?

run_test dovrebbe avere (questions) come parametro, come mai allora ha (get_questions()) come parametro?

Ora prendo un pò d'aria e ci ragiono di nuovo a mente serena, è dalle 2 che ci sono sopra tra studiare la guida, scrivere il codice e cercare id capirlo.. credo proprio di avere un apprendimento lento, molto lento...
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.

Ultima modifica di ~FullSyst3m~ : 25-01-2008 alle 16:36.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Mese nuovo, rinnovo delle offerte Amazon...
Accessori auto imperdibili su Amazon: pu...
Gli utenti iPhone possono ridurre la pr...
Come fare affari con l'usato garantito d...
Il miglior tablet di tutta Amazon, DOOGE...
Gli smartphone in super offerta su Amazo...
Produttori di memoria più severi ...
WhatsApp Business, Meta introduce costi ...
SpaceX vuole portare nello Spazio 1 mili...
Realme 16: il nuovo mid-range che si isp...
DAZN lancia il piano Full Mobile a 19,99...
Samsung Galaxy S26, ormai è tutto...
Smartphone sempre più cari: super...
L'ultima puntata di Falsissimo rimossa d...
NASA Perseverance ha utilizzato percorsi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:13.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v