-
Sw0rdfish.
User deleted
Come ho scritto nella mia presentazione, sto studiando Python ("How to Think Like a Computer Scientist: Python), e di tanto in tanto c'è qualcosa che non mi torna... dunque credo che sia più ordinato aprire un topic in cui chiedo chiarimenti man mano che mi sorgono dubbi, piuttosto che aprire un topic ogni volta che ho bisogno di fare una domanda.
Parto con due domande:
1. Riguardo l'istruzione return, sul manuale c'è scritto che se io in una funzione digito il comando return seguito da un valore, che sia una variabile o un valore esplicito come un intero, quando andrò ad eseguire il programma la funzione mi ritornerà quel valore; in altre parole dovrò comparirmi il valore che ho messo dopo return... e invece non mi compare nulla, nonostante non mi segnali alcun errore.
Ad esempio questo codice dovrebbe ritornarmi il valore 1 quando vado ad eseguirlo... e invece niente di niente.CODICEdef ciao():
return 1
ciao()
Dov'è il problema?
2. Sarà che ormai il manuale che sto utilizzando sarà un po' datato, poi devo precisare che sto utilizzando Python 3.1, ma c'è qualcos'altro che non sembra andare come dovrebbe.
Nel manuale dice che se dò l'istruzione print seguito da una qualsiasi stringa o intero, e dopo la parentesi metto la virgola, la prossima istruzione print digiterà la stringa o intero senza andare a capo, ma subito dopo i caratteri digitati dalla precedente istruzione print. E invece, pur non restituendomi alcun errore, va a capo senza considerarmi la virgola.
Ad esempio qui:CODICEprint ('ciao'),
print ('bello')
dovrebbe restituirmi come risultato:CODICEciaobello
e invece mi restituisce:CODICEciao
bello
Cosa sbaglio? E' cambiato qualcosa nella versione di Python che sto utilizzando?
Edited by Sw0rdfish - 5/2/2012, 00:05. -
.Come ho scritto nella mia presentazione, sto studiando Python ("How to Think Like a Computer Scientist: Python), e di tanto in tanto c'è qualcosa che non mi torna... dunque credo che sia più ordinato aprire un topic in cui chiedo chiarimenti man mano che mi sorgono dubbi, piuttosto che aprire un topic ogni volta che ho bisogno di fare una domanda.
Un topic è un argomento, quindi se vuoi info su argomenti differenti è sempre meglilo aprire un nuovo topic, così è più semplice aiutarti ed è anche più semplice individuare ciò che si ha bisogno.CITAZIONEParto con due domande:
1. Riguardo l'istruzione return, sul manuale c'è scritto che se io in una funzione digito il comando return seguito da un valore, che sia una variabile o un valore esplicito come un intero, quando andrò ad eseguire il programma la funzione mi ritornerà quel valore; in altre parole dovrò comparirmi il valore che ho messo dopo return... e invece non mi compare nulla, nonostante non mi segnali alcun errore.
return permette di restituire un valore. Ovviamente devi invocare la funzione!
Scritto dal terminale:CODICE>>> def ciao():
... return "ciao"
...
>>> ciao()
'ciao'
Come vedi stampa "ciao". Chiaramente dovrai indentare correttamente il codice, proprio come ho fatto in quell'esempio.
Alla seconda non so risponderti poichè non programmo in Python, e le poche volte in cui l'ho utilizzato era una versione più datata.
. -
meh..
User deleted
1. a meno che tu non stia usando la repl se fai `ciao()` e basta non fai altro che restituire 1, al nulla, se vuoi che venga outputtato devi usare print.
2. presumo tu stia usando python3, in quel caso devi fareCODEprint('ciao', end='')
print('bello')
Postmetto che a me Python fa cagare e non so un cazzo in proposito.. -
Sw0rdfish.
User deleted
Vi dico come sono messo:
Per il punto due, è proprio come dici tu meh, devo scrivere end='', anche se non so perchè non funzioni la semplice virgola, come invece funziona nel Python 2.7 (ho scaricato anche quello per verificare).
Riguardo al return, effettivamente scritto dal terminale restituisce la parola ciao correttamente, ma se lo scrivo nella IDLE, e poi lo eseguo, non mi restituisce alcun valore, e non capisco perchè.
Nella IDLE ho scritto:CODICEdef ciao():
return ("ciao")
ciao()
Non mi sembra ci siano errori, quando vado ad eseguirlo il risultato è la riga del terminale bianca :|
meh, non ho capito bene il tuo punto 1, ovvero: quando una funzione restituisce un valore, non significa che te lo deve pure outputtare? Oppure devo perforza far sì che nella funziona il valore sia assegnato ad una variabile su cui ho eseguito la funzione global, e quindi dopo aver chiamato la funzione devo necessariamente usare l'istruzione print (variabile)?
Non so se sono stato chiaro. Il fatto è che a questo punto credo di non aver capito bene la funzione dell'istruzione return.... -
meh..
User deleted
Vi dico come sono messo:
Per il punto due, è proprio come dici tu meh, devo scrivere end='', anche se non so perchè non funzioni la semplice virgola, come invece funziona nel Python 2.7 (ho scaricato anche quello per verificare).
Perche' in 2.* print e' una keyword, in 3.* e' una normale funzione.meh, non ho capito bene il tuo punto 1, ovvero: quando una funzione restituisce un valore, non significa che te lo deve pure outputtare? Oppure devo perforza far sì che nella funziona il valore sia assegnato ad una variabile su cui ho eseguito la funzione global, e quindi dopo aver chiamato la funzione devo necessariamente usare l'istruzione print (variabile)?
Non so se sono stato chiaro. Il fatto è che a questo punto credo di non aver capito bene la funzione dell'istruzione return...
Ogni funzione puo' returnare un valore, se sei nel repl (che sta per read execute print loop) te lo fa lui, se no devi essere tu a printare il valore che returna la funzione.
Non ho idea di cosa sia o come funzioni IDLE quindi non saprei dirti.. -
.
Lascia perdere IDLE, utilizza il prompt per eseguirlo (come editor scaricati Notepad++). Devi solo richiamare python nomeFile.py, ove al posto di nomeFile ovviamente metterai il nome del tuo file.
Comunque non funziona perchè non printi nulla. Devi inserire la chiamata a ciao() in un print, così:CODICEprint(ciao())
PS: devi settare la variabile d'ambiente path con il percorso all'interprete se vuoi richiamarlo da qualsiasi parte tramite il prompt.. -
Sw0rdfish.
User deleted
CITAZIONEPerche' in 2.* print e' una keyword, in 3.* e' una normale funzione.
Aaah vero, nel 2.7 infatti è arancione, mentre nel 3.1 è viola lol
Ok Rookit, ora scarico Notepad++, però è strano che nel prompt mi printi in automatico il valore, mentre se lo scrivo prima in IDLE non mi stampa nulla...
Potresti farmi un esempio di repl? Non ho capito bene che cos'è :|
PS: non sarò sempre così stressante tranquilli x|
Fino a lunedì sono a casa da scuola e quindi posso dedicarmi a tempo pieno a Python, ma poi dovrò studiare le materie scolastiche, e avrò solo la sera e parte del pomeriggio per dedicarmi alla programmazione.. -
.
Come ha detto meh. sta per "read eval print loop". Come ad esempio dall'interprete, nel mio esempio più in alto
PS: su execute penso abbia commesso un errore meh.
EDIT: http://en.wikipedia.org/wiki/Read%E2%80%93...80%93print_loop. -
Sw0rdfish.
User deleted
Aah ecco perchè non trovavo nulla su Google. Vi ringrazio, avete chiarito tutti i miei dubbi, ora continuo a studiare, i prossimi capitoli sono Stringhe e Liste... domani saprete come è andata xP . -
meh..
User deleted
Yep, mea culpa..