Domanda Chiarimenti su Python

Stato
Discussione chiusa ad ulteriori risposte.

Dan†e

Utente Silver
2 Agosto 2011
24
6
3
59
Ciao ragazzi, ho cominciato da pochi giorni a studiare Python (è il primo linguaggio di programmazione che vorrei imparare), e sto utilizzando la guida tradotta in italiano A Byte of Python (se non posso scriverlo editate pure).

Vorrei utilizzare questo topic per racchiudere tutte le mie domande e i miei dubbi man mano che andrò avanti con lo studio, in modo da non dover aprire una discussione per ogni domanda.

Sono arrivato al capitolo sulle funzioni, e mi sembrano abbastanza chiare, però incontro un problema in un programmino banalissimo che ho scritto per testare l'istruzione global.

Codice:
print('Questo programma dimostra come una variabile all\'interno di una funzione possa essere assimilata anche dal blocco principale attraverso l\'istruzione global.')
x=input('Inserisci un valore che vuoi sia dato alla x, tenendo conto che siamo ancora nel blocco principale: ')
print('La x vale ' + str(x) + '.')
s=x
def globalx():
    global x
    x=input('Siamo entrati nella funzione globalx, inserisci il valore che vuoi sia dato alla x all\'interno della funzione, sapendo che abbiamo appena applicato alla x l\'istruzione global: ')
    print('Ora la x vale '+str(x)+', e siamo ancora all\'interno della funzione globalx.')
globalx(x)
print('Siamo appena usciti dalla funzione globalx, e la x vale '+str(x)+', e non più '+str(s)+'. \nAlla prossima.')

Eseguendolo riscontro il messaggio:
TypeError: globalx() takes no arguments (1 given)


Mi sembra di aver capito che devo mettere qualcosa fra le parentesi nella definizione di globalx(), e ho notato che posso scriverci una cosa qualsiasi per far funzionare il programma, e non capisco perchè. Potreste spiegarmi come agisce Python in questo caso?
 
Guarda è molto semplice

Questa è la definizione della funzione globalx
Codice:
def globalx():
    global x
    x=input('Siamo entrati nella funzione globalx, inserisci il valore che vuoi sia dato alla x all\'interno della funzione, sapendo che abbiamo appena applicato alla x l\'istruzione global: ')
    print('Ora la x vale '+str(x)+', e siamo ancora all\'interno della funzione globalx.')

Per la firma della funzione, ovvero:
Codice:
def globalx():
Non vengono accettati parametri (in quanto tra le parentesi non c'è niente)

Però tu poi la richiami passando un parametro x (c'è x tra le parentesi)
Codice:
globalx(x)
 
  • Mi piace
Reazioni: Dan†e
Ultima modifica:
Ah sì scusami, starò più attento le prossime volte.

Comunque... sapresti anche aiutarmi?

Edit: @Exit93 grazie mille! Era un errore di distrazione quindi, cercherò di stare più attento a queste cose.
Ora posso andare avanti :)
Posterò qui gli altri dubbi, man mano che ne incontrerò. Grazie ancora Exit93.
 
Ultima modifica:
Scusate se faccio un doppio post, la prossima volta cercherò di non essere più l'ultimo a scrivere in modo da poter tranquillamente fare altre domande.

Comunque sto studiando sul manuale "How to Think Like a Computer Scientist: Python", ma non mi è chiara l'istruzione "return"...

Ditemi se è così:
quando scrivo return seguito da nessuna variabile, è come se restituisse il valore None, quindi termina semplicemente il flusso di esecuzione della funzione;
quando scrivo return seguito da un parametro, termina il flusso della funzione restituendo il valore del parametro che lo segue.

Inoltre, cosa accade se inserisco "return" seguito da un valore, ad esempio -1?
Vi cito direttamente il caso a cui mi sto riferendo:
def Fattoriale(n):
__if type(n) != type(1):
____print ('Il fattoriale è definito solo per i valori interi.')
____return -1
__elif n < 0:
____print ('Il fattoriale è definito solo per interi positivi.')
____return -1
__elif n == 0:
____return 1
__else:
____return n* Fattoriale(n-1)

In poche parole questa funzione si propone di utilizzare type per controllare se il parametro è di tipo intero e positivo (altrimenti il fattoriale sfocerebbe in una funzione ricorsiva infinita.

Potreste spiegarmi che funzione ha in questo caso il return, e perchè è seguito nei primi due casi da "-1" e nell'ultimo elif da "1"?

Vi ringrazio in anticipo :)


EDIT:
No lasciate stare credo di aver capito x|
La prossima volta ci penso meglio prima di chiedere qui, mi scusi chi avesse già letto il messaggio e fosse in procinto di rispondermi.
Potreste cancellare questo post? Direi che è abbastanza inutile :omfg:
 
Stato
Discussione chiusa ad ulteriori risposte.