Come convertire in stringa in Python (str(), join, f-string)
Python è dinamicamente tipizzato: le variabili non hanno tipo fisso. La conversione a stringa è esplicita per strutture composte (liste, tuple, set, dizionari) o per formattazione.
1. str() - Conversione base
età = 25
s = str(età) # "25"
print(type(s)) # <class 'str'>
Funziona su qualsiasi oggetto: chiama __str__() (o __repr__()).
2. Liste/Tuple/Set → Stringa
Ciclo for + concatenazione (base)
tokens = ["Ciao", " ", "mondo", "!"]
risultato = ""
for t in tokens:
risultato += str(t)
print(risultato) # "Ciao mondo!"
str.join() - Idiomatico ed efficiente
parole = ["Ciao", "mondo"]
frase = " ".join(parole) # "Ciao mondo"
csv = ",".join(str(x) for x in [1,2,3]) # "1,2,3"
Il separatore è la stringa su cui si chiama join. Richiede iterabile di stringhe (usare map(str, ...) o generator expression per tipi misti).
3. f-string (Python 3.6+) - Formattazione moderna
nome = "Anna"
punteggio = 95
s = f"{nome} ha totalizzato {punteggio} punti" # "Anna ha totalizzato 95 punti"
# Formattazione numerica:
import math
print(f"Pi greco ≈ {math.pi:.4f}") # "Pi greco ≈ 3.1416"
4. % formatting (legacy) e .format()
# Vecchio stile
"%s ha %d anni" % ("Luca", 30)
# .format() (Py 2.6+)
"{} ha {} anni".format("Luca", 30)
"{nome} ha {eta} anni".format(nome="Luca", eta=30)
Scope delle variabili (attenzione!)
# ERRORE: variabile dichiarata nel ciclo
for g in ["pane", "latte"]:
lista_spesa += g + "\n" # NameError: lista_spesa non definita fuori scope
print(lista_spesa)
# CORRETTO: inizializzare PRIMA del ciclo
lista_spesa = ""
for g in ["pane", "latte"]:
lista_spesa += g + "\n"
print(lista_spesa) # funziona
Best practice: Usare f-string per formattazione, join() per unire liste, str() per singoli valori. Evitare
os.system per I/O.