Come convertire String in Int in Python (casting sicuro e basi)

Scopri come convertire una stringa in un numero intero in Python utilizzando la funzione int(). Gestisci gli errori in modo sicuro e converti i numeri da binario, ottale o esadecimale.

Prova questa soluzione nell'editor

Panoramica

La conversione della rappresentazione di stringa di un numero in un numero intero effettivo è un'attività frequente nello sviluppo di applicazioni. Questo processo, spesso definito casting, è essenziale quando si ha a che fare con input grezzi dell'utente, leggendo file di configurazione, analizzando argomenti da interfacce a riga di comando o recuperando dati dal web. Poiché Python è un linguaggio fortemente tipizzato, non è possibile eseguire operazioni matematiche su rappresentazioni di numeri in formato stringa senza prima eseguirne il cast.

Il costruttore `int()` integrato di Python è lo strumento principale per questa conversione. Nella sua forma più semplice, passare una stringa numerica (come `"42"`) a `int()` restituisce il suo equivalente intero. Tuttavia, il passaggio di una stringa non numerica (come `"ciao"`) o di una stringa che rappresenta un numero a virgola mobile (come `"3.14"`) solleverà un `ValueError`. Per scrivere applicazioni robuste, è pratica standard racchiudere le operazioni di casting in un blocco "try-Exception" per gestire con garbo input imprevisti.

Oltre alla conversione standard in base 10, la funzione `int()` accetta un argomento `base` facoltativo. Ciò consente di analizzare facilmente stringhe che rappresentano numeri in diversi sistemi numerici, come binario (base 2), ottale (base 8) o esadecimale (base 16). Ad esempio, `int("1010", 2)` analizza correttamente la stringa binaria nell'intero decimale "10", rendendolo uno strumento versatile per la programmazione matematica specializzata o di livello inferiore.

Codice e output di esecuzione

Questo script dimostra la conversione di una stringa in un numero intero, la gestione delle eccezioni e la conversione di diverse rappresentazioni di base.

convert_int.py
Prova nell'editor
# 1. Standard base-10 conversion
num_str = "123"
num = int(num_str)
print(f"Standard conversion: {num} (Type: {type(num).__name__})")

# 2. Handling invalid input gracefully
invalid_str = "abc"
try:
    result = int(invalid_str)
except ValueError:
    print(f"Could not convert '{invalid_str}' to an integer.")

# 3. Converting from different bases (binary and hex)
binary_str = "1011"
hex_str = "ff"
print("Binary '1011' to decimal:", int(binary_str, 2))
print("Hex 'ff' to decimal:", int(hex_str, 16))
Uscita terminale
Standard conversion: 123 (Type: int)
Could not convert 'abc' to an integer.
Binary '1011' to decimal: 11
Hex 'ff' to decimal: 255

Implementazione passo dopo passo

  • Passa la stringa numerica alla funzione incorporata int().
  • Racchiudi le tue operazioni di casting in try...eccetto i blocchi ValueError per gestire formati non validi.
  • Fornire un secondo argomento (ad esempio base=16) per convertire i valori di stringa scritti in altre basi.

Domande frequenti

Come posso convertire una stringa float come "12.34" in un numero intero?

Devi prima convertirlo in float, poi in int: int(float("12.34")). La chiamata a int("12.34") solleva direttamente un ValueError.

Come posso verificare se una stringa può essere convertita in sicurezza in un int?

Puoi utilizzare il metodo stringa .isdigit(), ma tieni presente che restituisce False per segni negativi o spazi bianchi. Un blocco try-eccetto è il modo più robusto.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.