Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Dubbio program.02.py (numero di cifre e rappresentazione interi)

o
orlandoalessio1998 (7730 points)
7 24 36
in Es2 by (7.7k points)
edited by
Nella traccia fornita dal professore ci viene detto di convertire i numeri da 1 a "mille miliardari"-1. Il problema è che python prende numeri fino a 2^36 (≈68miliardi).
Come dovrei gestire questa situazione? Cambio il limite di python?, Faccio un controllo?(quest'ultima non avrebbe molto senso.. andrei in contrasto con la traccia)
556 views
closed

3 Answers

Best answer
l
ldifuccia (720 points)
1 4 11
by (720 points)
selected by

In python3 è stato rimosso il limite sulla grandezza di un INT.
DOCS

o
orlandoalessio1998 (7730 points)
7 24 36
by (7.7k points)
O.o e io quello ho. Btw oggi proverò a reinstallarlo grazie per la risposta
l
ldifuccia (720 points)
1 4 11
by (720 points)
Ma ti scatena un errore nel tentativo di inizializzare un int enorme? Sicuro di usare python3?
o
orlandoalessio1998 (7730 points)
7 24 36
by (7.7k points)
Si, sono sicuro di avere la versione.3.xx però quando chiamo il grader non uso python3 grader0x.py ma solo python
l
ldifuccia (720 points)
1 4 11
by (720 points)
Perfetto, risolto il problema!! ;-)
Auron (15880 points)
50 126 194
by (15.9k points)
Ciao Orlando... O Alessio?
Scherzi a parte, a me non ha riscontrato alcun problema sul discorso "limite dei numeri"... Anzi, ti dirò di più, per fare l'idiota inizialmente non ho messo un cap a mille miliardi -1 e ho provato a scrivere un numero enorme, nell'ordine di milioni di miliardi... E non ho avuto problemi neanche con quello... Sicuro che non sia un problema solo tuo?
o
orlandoalessio1998 (7730 points)
7 24 36
by (7.7k points)
Non saprei, nella descrizione dell'int dice chiaramente che base 10 con 2^36
francesco.dev (33560 points)
21 51 129
by (33.6k points)
Ciao orlandoalessio,
Hai ragione! C'è un limite alla rappresentazione dei numeri interi.

Ma, come sappiamo, Python assegna il tipo alla variabile in maniera automatica e dinamica (quindi può cambiare il tipo di una variabile durante l'esecuzione del codice).

Fatta questa premessa risolvo il tuo caso:
Quando si devono rappresentare numeri più grandi del limite del tipo int, Python assegna a quella variabile il tipo long! Questo tipo non ha limite di rappresentazione.

Quindi il risultato che vediamo, come dicono i tuoi colleghi, è che il tipo int non ha limite. Ma questo non è vero se usiamo versioni più vecchie! Int ha eccome un limite nelle versioni precedenti, per questo viene usato un tipo int molto più grande (long).

Ecco la documentazione:
http://docs.python.it/html/ref/integers.html

Infine aggiungo che con l'ultimo aggiornamento il tipo long è essenzialmente il nuovo tipo int che troviamo nella versione! Ma in passato essi erano due tipi diversi.

Sperando di aver chiarito ogni dubbio, buona giornata
- Francesco Pio Scognamiglio