|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
[Python]if e dizionari.
Tempo fa scrissi questo gioco:
Codice:
def Livello1():
print "Livello 1:"
Lista=["cane","gioco","gatto","scoiattolo","mucca"]
print Lista
ParolaSbagliata=raw_input("Inserisci la parola sbagliata: ")
if ParolaSbagliata=="gioco":
print "Risposta Esatta"
else:
print "Risposta Sbagliata"
def Livello2():
print "****---------****** \nLivello 2:"
Lista=[3,6,9,12,13,15,18,21,24,27,30]
print Lista
NumeroSbagliato=input("Inserisci il numero sbagliato:")
if NumeroSbagliato==13:
print "Risposta esatta"
else:
print "Risposta Errata,Riprova!"
def Livelli():
for i in [1,2]:
if i==1:
Livello1()
else:
Livello2()
Livelli()
Codice:
ParoleE={"gioco":"risposta esatta",13:"risposta esatta"}
def Livello1():
print "Livello 1:"
Lista=["cane","gioco","gatto","scoiattolo","mucca"]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
print ParoleE.get(r,"Sbagliato")
def Livello2():
print "****---------****** \nLivello 2:"
Lista=[3,6,9,12,13,15,18,21,24,27,30]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
print ParoleE.get(r,"Sbagliato")
def Livelli():
for i in [1,2]:
if i==1:
Livello1()
else:
Livello2()
Livelli()
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Però non posso far sparire le funzioni perchè se uno inserisce qualcosa di sbagliato il programma deve ritornare al primo livello.
Al massimo posso togliere il ciclo e chiamare semplicemente Prima Livello1 e poi Livello 2
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Quote:
Codice:
def Livelli():
for i in [1,2]:
if i==1:
Livello1()
else:
Livello2()
Livelli()
Codice:
ParoleE={"gatto":"risposta esatta",13:"risposta esatta"}
Quindi non so se si può eliminare la funzione.
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai Ultima modifica di MasterDany : 23-12-2008 alle 12:45. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Codice:
ParoleE={"gatto":"risposta esatta",13:"risposta esatta"}
def Livello1():
print "Livello 1:"
Lista=["cane","gioco","gatto","scoiattolo","mucca"]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
print ParoleE.get(r,0)
Livello2()
def Livello2():
print "****---------****** \nLivello 2:"
Lista=[3,6,9,12,13,15,18,21,24,27,30]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
print ParoleE.get(r,"Sbagliato")
Livello1()
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Codice:
ParoleE={"gioco":"risposta esatta",13:"risposta esatta"}
print "Livello 1:"
Lista=["cane","gioco","gatto","scoiattolo","mucca"]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
print ParoleE.get(r,"Sbagliato")
print "****---------****** \nLivello 2:"
Lista=[3,6,9,12,13,15,18,21,24,27,30]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
print ParoleE.get(r,"Sbagliato")
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Allora se voglio mettere il punteggio?Bisogna per forza usare gli if.
Codice:
def Livello1():
j=0
print "Livello 1:"
Lista=["cane","gioco","gatto","scoiattolo","mucca"]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
if r!="gioco":
j=j+1
Livello1()
else:
Livello2()
return j
Livello1()
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Se vuoi un consiglio fermati immediatamente. Non andare più avanti con i capitoli e riprendi in mano quelli precedenti dal 5 in poi perché non hai per niente chiaro di cosa siano delle funzioni e di come si usano. Rileggi la parte dove si parla di generalizzazione MOLTO attentamente. Per quanto riguarda la ricorsione. Se sei convinto che basti un while per creare una funzione ricorsiva o che quello sia il punto ideale per una funzione di quel tipo significa che non hai capito per niente quello che voleva spiegarti il libro.
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Quote:
Ripete una sequenza di istruzione fino a quando non si "avvera" per una determinata condizione.
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Per quanto riguarda generalizzare la definizio me la ricordo a memoria
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Quote:
se abbiamo un pezzo di codice che somma 2+2 generalizzarlo vuol dire sommare qualsiasi numero quindi ad esempio: Codice:
print 2+2 Codice:
def Generalizzata(x,y): print x+y -semplificare il programma -rendere il programma più piccolo -dividere il programma in parti testabili Ora riprendendo il mio codice: Codice:
ParoleE={"gioco":"risposta esatta",13:"risposta esatta"}#aggiungere la soluzione
def Livello1():
print "Livello 1:"
Lista=["cane","gioco","gatto","scoiattolo","mucca"]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
print ParoleE.get(r,"Sbagliato")
def Livello2():
print "****---------****** \nLivello 2:"
Lista=[3,6,9,12,13,15,18,21,24,27,30]
print Lista
r=raw_input("Qual'e' la parola sbagliata:")
print ParoleE.get(r,"Sbagliato")
def Livelli():
for i in [1,2]: #devo aggiungere un elemeno alla lista
if i==1: #
Livello1()#devo aggiungere una condizione.
else: #
Livello2()#
Livelli()
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Generalizzare = "mettere assieme" il codice comune (facendo uso di funzioni, come t'è stato detto).
Non dico altro perché devi arrivarci da solo. Altrimenti è inutile continuare.
__________________
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 |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Posso raggruppare i livelli in una sola funzione?
Le raggruppo semplicemente in una funzione che le esegue una lla volta.
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai Ultima modifica di MasterDany : 24-12-2008 alle 13:58. |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Esatto. Scrivendola opportunamente, puoi usare UNA sola funzione per tutto.
__________________
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 |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Ci provo
Codice:
def Gioco():
ParoleE={"gioco":"risposta esatta",13:"risposta esatta"}
L_Livelli=[3,6,9,12,13,15,18,21,24,27,30,"gatto","cane","mucca","gioco","volpe"]
print L_Livelli[0:11]
i_l1=input("Qual'e' il numero sbagliato?")
print ParoleE.get(i_l1,0)
print L_Livelli[11:16]
i_l2=raw_input("Qual'e' la parola sbagliata?")
print ParoleE.get(i_l2,0)
Gioco()
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Mumble. Generalizzare non vuol dire ammassare tutto. Infatti parlavo di mettere assieme il codice, non anche i dati.
Un principio molto importante nella programmazione e che aiuta parecchio quando si scrive il codice è quello della SEPARAZIONE fra codice e dati. Cerca, cioé, di astrarre il codice il più possibile senza infilarci in mezzo dei dati. Nello specifico il mio suggerimento è quello di sfruttare la possibilità di passare dati a una funzione. Mi fermo davvero qui, perché ho detto anche troppo. Cerca di arrivarci da solo adesso.
__________________
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 |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Dec 2007
Messaggi: 505
|
Codice:
Lista1=[3,6,9,12,13,15,18,21,24,27,30]
Lista2=["cane","gatto","gioco","mucca"]
ParoleE={"gioco":"risposta esatta","13":"risposta esatta"}
def Gioco(l1,pe):
print l1
i_l1=raw_input("Qual'e' il numero ,o la parola ,sbagliato?")
print pe.get(i_l1,0)
Gioco(Lista1,ParoleE)
Gioco(Lista2,ParoleE)
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG Non ricordo niente ma non lo dimenticherò mai |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ci siamo quasi. La strada è quella, ma puoi fare ancora meglio.
Ricorda che i dati che stai passando sono di natura diversa (numeri oppure parole), per cui puoi differenziare in maniera più fine il comportamento della funzione.
__________________
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:09.




















