Studiando Python... Chiarimenti

« Older   Newer »
 
  Share  
.
  1. 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.
    CODICE
    def 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:
    CODICE
    print ('ciao'),
    print ('bello')

    dovrebbe restituirmi come risultato:
    CODICE
    ciaobello

    e invece mi restituisce:
    CODICE
    ciao
    bello

    Cosa sbaglio? E' cambiato qualcosa nella versione di Python che sto utilizzando?

    Edited by Sw0rdfish - 5/2/2012, 00:05
     
    Top
    .
  2.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    CITAZIONE (Sw0rdfish @ 4/2/2012, 23:10) 
    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.


    CITAZIONE
    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.

    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.
     
    Top
    .
  3. 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 fare
    CODE
    print('ciao', end='')
    print('bello')


    Postmetto che a me Python fa cagare e non so un cazzo in proposito.
     
    Top
    .
  4. 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:
    CODICE
    def 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...
     
    Top
    .
  5. meh.
     
    .

    User deleted


    QUOTE (Sw0rdfish @ 5/2/2012, 00:12) 
    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.

    QUOTE (Sw0rdfish @ 5/2/2012, 00:12) 
    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.
     
    Top
    .
  6.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    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ì:
    CODICE
    print(ciao())



    PS: devi settare la variabile d'ambiente path con il percorso all'interprete se vuoi richiamarlo da qualsiasi parte tramite il prompt.
     
    Top
    .
  7. Sw0rdfish
     
    .

    User deleted


    CITAZIONE
    Perche' 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.
     
    Top
    .
  8.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    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
     
    Top
    .
  9. 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
     
    Top
    .
  10. meh.
     
    .

    User deleted


    QUOTE (RootkitNeo @ 5/2/2012, 00:57) 
    PS: su execute penso abbia commesso un errore meh.

    Yep, mea culpa.
     
    Top
    .
9 replies since 4/2/2012, 23:10   330 views
  Share  
.