Ema76 ha scritto:
2. il punto chiave é l’incremento di “b” (qualora il primo risultato della funzione sia “float”) fino a trovare il primo “Int” successivo..
Questa frase, secondo me, non ha alcun senso, né informatico, né logico, né matematico.
In Python, come altri linguaggi, float e int sono due tipi numerici differenti. Un float può rappresentare numeri compresi tra 1.7976931348623157e+308 e 2.2250738585072014e-308, mentre un int non ha un vero e proprio limite. Tecnicamente, quando si supera la soglia di 2^63-1 (massimo signed int su 64 bit), Python inizia a memorizzare gli interi con altre tecniche.
Quindi, la tua funzione, se riceve un tipo int come parametro ritornerà un int, se riceve un float ritornerà un float. Se il parametro
a è float, la funzione ritornerà un tipo float, anche se
a vale 10.0 (che è un tipo float, anche se matematicamente è un intero).
Una cosa interessante: se fai (anche interattivamente) un calcolo tipo 765**983 ti verrà fuori un numero int kilometrico. Se fai 765.0**983.0 ti verrà OverflowError.
Torniamo alla tua funzione: c = a + b**2 dipende da
a, quindi se vuoi un int in uscita,
a deve essere int. Se
a non è int, lo fai diventare int:
a = int(a)
in modo che eventuali parti decimali vengano troncate. In conclusione la tua funzione diventa:
def esercizioventitre(a):
a = int(a)
c = a + (a-1) ** 2
return c