edubun
Italiano

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}.")
Output
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}")
Output
gimbap x 2
------------
gimbap x 2

Ogni 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.

Numeri di indice per "Python": da 0 a 5 dall'inizio, da -6 a -1 dalla fine. Una porzione word[0:2] si ferma prima dell'indice 2.
word = "Python"
print(word[0], word[5], word[-1])
print(len(word))
print(word[0:2], word[2:])
Output
P n n
6
Py thon

word[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))
Output
TTEOKBOKKI
tteoKboKKi
True 14 10

Per 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")
Output
It's lunch time.
Line one
Line two
f-stringf"...{name}..." mette valori nel testo
indiceNumero 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
metodoUno strumento scritto dopo un punto, come s.upper()
\nSequenza di escape per andare a capo
in"a" in "cat" dà True
  1. Cosa stampa questo codice?
    word = "banana"
    print(word[1])
  2. Cosa stampa questo codice?
    word = "banana"
    print(word[-2])
  3. Cosa stampa questo codice?
    print(len("Hi there!"))
  4. Cosa stampa questo codice?
    word = "school"
    print(word[1:4])
  5. Cosa stampa questo codice?
    name = "Jun"
    print(f"Hi {name}, you are {13 + 1}.")
  6. Cosa stampa questo codice?
    print("ab" * 3)
  7. Cosa stampa questo codice?
    s = "hello"
    s.upper()
    print(s)
    • HELLO
    • hello
    • Hello
    • An error
  8. Cosa stampa questo codice?
    print("rice" in "fried rice")
  9. Cosa stampa questo codice?
    name = "Mina"
    print(f"{name}")
    print("{name}")
    • Mina
      Mina
    • Mina
      {name}
    • {name}
      Mina
    • {name}
      {name}
  10. Cosa stampa questo codice?
    print("Total: " + str(3 * 1000))
    • Total: 3000
    • Total: 3 * 1000
    • Total: 31000
    • An error
Errori comuni
  • «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:].
Nota per l'insegnanteContare da 0 richiede un'immagine, non una regola. Disegna le caselle con numeri sopra e sotto, come nella figura, e fai indicare a chi impara word[2] e word[-2] prima di scrivere qualsiasi cosa. Le porzioni sono più facili quando si vedono i numeri come recinti tra le caselle invece che come etichette sulle caselle. La trappola di upper() (chiamare un metodo senza conservare il risultato) ritorna con le liste, quindi dedicale un minuto adesso. Con alcuni caratteri tipografici di Windows in coreano la barra rovesciata può comparire come il simbolo del won; è lo stesso tasto e lo stesso carattere per Python.
Punti chiave
  • 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