|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
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. |
|
|
|
|
|
#2 |
|
Senior Member
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. |
|
|
|
|
|
#3 | |
|
Senior Member
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:
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
, usa la ricorsione infatti per calcolare la moltiplicazione (fuori di testa Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
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 |
|
|
|
|
|
|
#6 | ||
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
Quote:
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. |
||
|
|
|
|
|
#7 | |
|
Senior Member
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:
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
|
|
|
|
|
#8 |
|
Senior Member
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] 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] 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 |
|
|
|
|
|
#9 |
|
Senior Member
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. |
|
|
|
|
|
#10 |
|
Senior Member
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())
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. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:41.












, usa la ricorsione infatti per calcolare la moltiplicazione (fuori di testa







