Vai al contenuto principale

Come convertire una stringa in un intero in Python

Scopri come convertire le stringhe Python in interi in questo breve tutorial.
· 5 min leggi

Scopri con l'IA

Gli errori di tipo di dato sono tra gli ostacoli più comuni in Python, soprattutto per chi inizia. Un errore frequente si verifica quando i numeri sono formattati come stringhe, con conseguenti calcoli errati, interpretazioni sbagliate o messaggi di errore veri e propri.

In questo tutorial, ti mostrerò come gestire questi errori e come convertire le stringhe di Python in interi.

La risposta rapida: come convertire una stringa Python in un intero

Se la tua stringa rappresenta un numero intero (cioè, 12), usa la funzione int() per convertirla in un intero. Se la tua stringa rappresenta un numero decimale (cioè, 12.5), usa la funzione float() per convertirla in un float. Trovi alcuni esempi qui sotto:

# Converting a string into an integer 
number_str = "10"
number_int = int(number_str)
print(number_int)  # Output: 10

# Converting a string into a float 
decimal_str = "10.5"
decimal_float = float(decimal_str)
print(decimal_float)  # Output: 10.5

Tipi di dato in Python

Python è un linguaggio dinamicamente tipizzato, con una varietà di tipi di dato che vanno da stringhe e interi a numeri in virgola mobile e booleani. Capirli è fondamentale per programmare in modo efficace. Di seguito, un elenco non esaustivo dei tipi di dato in Python:

  • Stringa (str): Dati testuali racchiusi tra virgolette. Ad es., greeting = "Hello, World!"
  • Intero (int): Numeri interi senza componente frazionaria. Ad es., age = 25
  • Float (float): Numeri con il punto decimale. Ad es., height = 5.9
  • Booleano (bool): Rappresenta True o False
  • Lista (list): Una collezione ordinata di elementi che possono essere di tipi diversi. Le liste sono mutabili e possono essere modificate. Per esempio, colors = ["red", "blue", "green"]
  • Dizionario (dict): Una collezione di coppie chiave-valore, che ti permette di memorizzare e recuperare dati tramite chiavi. Per esempio, person = {"name": "Alice", "age": 30}

Per approfondire i tipi di dato, leggi questo tutorial su Strutture dati in Python su DataCamp.

Perché convertire una stringa in un intero?

I tipi di dato corretti sono essenziali per calcoli accurati. Considera il seguente esempio. Supponiamo di avere due numeri 5 e 10 che però sono stringhe. Se li sommiamo, il risultato sarà 510, perché vengono trattati come stringhe che vengono concatenate con l’operatore +.

Per ottenere il risultato corretto (in questo caso 15), devono essere convertiti in interi prima di calcolarne la somma. Questo è un esempio semplice, ma immagina di applicarlo a un dataset sul fatturato di un’azienda: potrebbe portare a decisioni sbagliate.

# Summing two numbers that are actually strings
'5'+'10'# This returns 510

# Converting them to integers before summing them
int('5') + int('10') # This returns 15

Come convertire stringhe in interi in Python

Quando lavori con dati numerici formattati come stringhe, spesso è necessario convertirli in interi per effettuare calcoli o altre operazioni numeriche. Python offre un modo semplice per farlo usando la funzione int(). Questa funzione prende una stringa in ingresso e restituisce la sua rappresentazione intera, a patto che la stringa rappresenti un numero intero valido.

# Convert a string to an integer
numeric_string = "42"
converted_integer = int(numeric_string)
print(converted_integer)  # Output: 42

Come convertire stringhe in float in Python

Quando la stringa rappresenta un numero con la virgola (punto decimale), convertirla direttamente in un intero non è appropriato e genererà un errore. Invece, puoi convertire queste stringhe in float usando la funzione float() in Python. Usare i tipi float è fondamentale soprattutto quando lavori con dati ad alta precisione, come dati finanziari o misurazioni di sensori.

# Convert a string to a float
decimal_string = "3.14"
converted_float = float(decimal_string)
print(converted_float)  # Output: 3.14

Problemi nella conversione di stringhe in numeri in Python

Quando converti stringhe in numeri, alcuni tranelli possono causare errori o risultati inattesi.

Conversione di stringhe non numeriche

Provare a convertire una stringa non numerica, come 'hello world', in un numero genererà un errore. Se vuoi intercettare in modo programmatico le stringhe che non possono essere convertite in interi, prova a usare un blocco try/except per gestire questi casi in modo elegante.

try:
    invalid_number = int("hello world")
except ValueError:
    print("This is not a number.")

Conversione di stringhe float in interi

Convertire direttamente in intero una stringa che rappresenta un float produce un ValueError. Mentre puoi convertire una stringa che rappresenta un intero in un float, non vale il contrario. Ecco un esempio dell’errore che puoi ottenere:

string_decimal = '13.5'
# Convert string_decimal into an integer
int(string_decimal) 
# Returns ValueError: invalid literal for int() with base 10: '13.5'

Stringhe con basi diverse

Quando parliamo di "basi" nei numeri, ci riferiamo al sistema di numerazione in cui il numero è espresso. La base più comune è 10, nota anche come sistema decimale, che è quello che usiamo nella vita quotidiana. È composto da 10 cifre, da 0 a 9.

Tuttavia, esistono altre basi usate in vari ambiti, in particolare nell’informatica. Per esempio:

  • Binario (Base 2): Usa solo 0 e 1. È il linguaggio fondamentale dei computer.
  • Ottale (Base 8): Usa le cifre da 0 a 7. Oggi è meno comune, ma era usato nei sistemi informatici più datati.
  • Esadecimale (Base 16): Usa le cifre da 0 a 9 e le lettere da A a F (dove A=10 e F=15). È ampiamente utilizzato in informatica, soprattutto per i codici colore nel web design e per gli indirizzi di memoria.

Quando hai una stringa che rappresenta un numero in una base diversa da 10, devi specificare la base affinché Python possa interpretarla correttamente. Ecco un esempio con un numero esadecimale:

# Convert a hexadecimal string to an integer
hex_string = "1A"  # In base 16, 1A represents the decimal number 26
converted_int = int(hex_string, 16)  # The '16' tells Python it's in base 16
print(converted_int)  # Output: 26

Conclusione

Orientarsi tra tipi di dato e conversioni in Python è una competenza fondamentale per programmare. Capendo come convertire correttamente le stringhe in interi e float, puoi evitare errori comuni e assicurarti che la tua manipolazione dei dati sia corretta. Se vuoi saperne di più su Python, dai un’occhiata al nostro Python Cheat Sheet per principianti, alla nostra guida su Come imparare Python e ai nostri Corsi di Python.

Adel Nehme

Autore

Adel Nehme

Adel è un formatore e speaker in Data Science, nonché VP dei Media presso DataCamp. Adel ha pubblicato diversi corsi e sessioni di formazione live su analisi dei dati, machine learning e data engineering. È appassionato di diffondere competenze e alfabetizzazione sui dati all'interno delle organizzazioni e di esplorare l'intersezione tra tecnologia e società. Ha un MSc in Data Science and Business Analytics. Nel tempo libero, lo trovi spesso in compagnia del suo gatto Louis.

FAQ

Come verificare se una stringa è un intero in Python?

Per verificare se una stringa rappresenta un intero, puoi usare il metodo str.isdigit() se la stringa contiene solo cifre e non ha segno (+/-) o decimali:

string = "42"
if string.isdigit():
    print("The string is an integer.")
else:
    print("The string is not an integer.")

Per stringhe che possono includere un segno (+/-), puoi usare un metodo più robusto:

string = "-42"
try:
    int(string)
    print("The string is an integer.")
except ValueError:
    print("The string is not an integer.")
Come convertire un intero in una stringa in Python?

Usa la funzione str() per convertire un intero in una stringa. Per esempio:

number = 42
string_number = str(number)
print(string_number)  # Output: "42"
Cosa devo fare se la stringa contiene un numero decimale e voglio convertirla in un intero?

Prima converti la stringa in un float usando la funzione float(), poi effettua il cast a intero usando int(). Per esempio:

decimal_string = "13.5"
converted_integer = int(float(decimal_string))
print(converted_integer)  # Output: 13

Argomenti

Correlato