Stringhe: lavorare con il testo
Python conta le lettere di "Python" da 0, quindi "Python"[5] è l'ultima lettera, n, e "Python"[6] è un errore.
Un cartellino con il nome richiede testo costruito a pezzi
Pensa ai cartellini con il nome di un evento scolastico o di una riunione di club. Ogni cartellino ha la stessa disposizione e un nome diverso, quindi un programma può stamparli tutti da un unico modello. Il testo in Python è una stringa, e il modo più rapido di costruirne una a pezzi è una f-string: metti la lettera f davanti alle virgolette di apertura e scrivi i nomi delle variabili tra parentesi graffe. Python sostituisce ogni {name} con il valore di quella variabile.
name = "Mina"
club = "Robotics"
print(f"Hello, {name}!")
print(f"{name} joined {club}.")Hello, Mina!
Mina joined Robotics.Ci sono due modi più vecchi di unire il testo. L'operatore + incolla le stringhe una dopo l'altra, e * ripete una stringa. Entrambi i lati di + devono essere stringhe, quindi un numero va prima trasformato in testo con str(). Le f-string fanno quella conversione per te, ed è uno dei motivi per cui sono la scelta abituale.
item = "gimbap"
count = 2
print(item + " x " + str(count))
print("-" * 12)
print(f"{item} x {count}")gimbap x 2
------------
gimbap x 2Ogni carattere ha un numero di posizione, che parte da 0
Una stringa è una fila di caratteri, e ciascuno ha un indice. Il primo carattere ha indice 0, non 1. Le parentesi quadre scelgono un carattere: word[0] è il primo. Gli indici negativi contano dalla fine, quindi word[-1] è sempre l'ultimo carattere, qualunque sia la lunghezza. len() dà il numero di caratteri, spazi e punteggiatura compresi.
word = "Python"
print(word[0], word[5], word[-1])
print(len(word))
print(word[0:2], word[2:])P n n
6
Py thonword[0:2] è una porzione (slice): parte dall'indice 0 e si ferma subito prima dell'indice 2, dando "Py". Se lasci fuori la fine, come in word[2:], la porzione arriva fino alla fine della stringa. La regola dello stop prima sembra strana all'inizio, ma significa che word[0:2] + word[2:] restituisce sempre l'intera parola.
I metodi delle stringhe restituiscono una nuova stringa
Le stringhe hanno strumenti incorporati chiamati metodi, scritti dopo un punto. upper() e lower() cambiano tra maiuscole e minuscole, replace(old, new) scambia ogni copia di un pezzo di testo con un altro, e strip() toglie gli spazi da entrambe le estremità, utile quando qualcuno scrive uno spazio in più in un modulo. La parola chiave in controlla se una stringa compare dentro un'altra e dà True o False. Nessuno di questi cambia la stringa originale. Una stringa non si può cambiare dopo che è stata creata; ogni metodo restituisce una nuova stringa, e la conservi assegnandola a un nome.
menu = " tteokbokki "
clean = menu.strip()
print(clean.upper())
print(clean.replace("k", "K"))
print("bok" in clean, len(menu), len(clean))TTEOKBOKKI
tteoKboKKi
True 14 10Per mettere un segno di virgolette dentro una stringa, usa l'altro tipo di virgolette attorno ad essa: "It's fine". Una barra rovesciata inizia una sequenza di escape: \n dentro una stringa significa «vai a capo qui», quindi un solo print può mostrare due righe.
print("It's lunch time.")
print("Line one\nLine two")It's lunch time.
Line one
Line two| f-string | f"...{name}..." mette valori nel testo |
| indice | Numero di posizione di un carattere, che parte da 0 |
| porzione (slice) | s[a:b]: dall'indice a fino a b escluso |
| len() | Numero di caratteri di una stringa |
| metodo | Uno strumento scritto dopo un punto, come s.upper() |
| \n | Sequenza di escape per andare a capo |
| in | "a" in "cat" dà True |
- Cosa stampa questo codice?
word = "banana" print(word[1]) - Cosa stampa questo codice?
word = "banana" print(word[-2]) - Cosa stampa questo codice?
print(len("Hi there!")) - Cosa stampa questo codice?
word = "school" print(word[1:4]) - Cosa stampa questo codice?
name = "Jun" print(f"Hi {name}, you are {13 + 1}.") - Cosa stampa questo codice?
print("ab" * 3) - Cosa stampa questo codice?
s = "hello" s.upper() print(s)HELLOhelloHelloAn error
- Cosa stampa questo codice?
print("rice" in "fried rice") - Cosa stampa questo codice?
name = "Mina" print(f"{name}") print("{name}")Mina
MinaMina
{name}{name}
Mina{name}
{name}
- Cosa stampa questo codice?
print("Total: " + str(3 * 1000))Total: 3000Total: 3 * 1000Total: 31000An error
- «La prima lettera è word[1].» Gli indici partono da 0, quindi word[1] è la seconda lettera. L'ultimo indice valido è len(word) - 1; "Python"[6] si ferma con IndexError: string index out of range.
- «"Age: " + 15 stampa Age: 15» Una stringa e un int non si possono unire con +. Python si ferma con TypeError: can only concatenate str (not "int") to str. Usa str(15) o una f-string.
- «Posso correggere una lettera con word[0] = "J".» Le stringhe non si possono cambiare sul posto: TypeError: 'str' object does not support item assignment. Costruisci invece una nuova stringa, per esempio "J" + word[1:].
- f"...{x}..." mette valori nel testo.
- Gli indici partono da 0; -1 è l'ultimo carattere.
- s[a:b] va da a fino a b escluso.
- Metodi come upper() restituiscono una nuova stringa; l'originale non cambia.
- "\n" è un a capo dentro una stringa.
Fonti di questo corso (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Consultato il: 2026-10-19