Le due funzioni che rendono interattivo il tuo programma
La maggior parte dei primi programmi Python segue la stessa forma: chiedere qualcosa all'utente con input(), farci qualcosa, e rispondere con print(). Queste due funzioni integrate sono il modo in cui il tuo codice parla con il mondo.
Vediamole una alla volta.
print(): scrivere l'output
Nella forma più semplice, print() scrive una riga di testo nel terminale:
Stampa la parola hello seguita da un a capo. È l'a capo a separare sullo schermo una chiamata a print dalla successiva.
Puoi passare più valori in una sola chiamata, e Python metterà uno spazio tra l'uno e l'altro:
Output:
Name: Ada Age: 36
I valori non devono essere per forza stringhe. print chiama str() su ogni argomento, quindi puoi mescolare i tipi liberamente:
Cambiare il separatore
Se non vuoi uno spazio tra i valori, usa sep:
Cambiare il fine riga
Per impostazione predefinita print aggiunge un a capo. Usa end per cambiarlo, per esempio per restare sulla stessa riga:
end="" è il trucco per costruire una riga un pezzo alla volta.
print scrive su stdout
Per impostazione predefinita, print scrive su stdout (lo standard output), cioè il posto normale in cui compare l'output del terminale. Puoi reindirizzarlo su stderr, su un file o su qualsiasi altro oggetto simile a un file con l'argomento file:
Per un output formattato (due decimali, colonne allineate, separatori nei numeri grandi) usa le f-string dentro print:
input(): leggere dall'utente
input(prompt) ferma il programma, mostra il prompt all'utente e aspetta. Tutto quello che l'utente scrive, fino a quando preme invio, torna indietro come stringa.
Tre cose di input che fregano chi inizia:
Restituisce sempre una stringa
Anche se l'utente scrive 42, quello che ottieni è la stringa "42". Non puoi farci direttamente dei calcoli:
Ecco perché vedrai spesso int(input(...)) o float(input(...)) sulla stessa riga. Se l'utente scrive qualcosa che non è un numero valido, int() solleva ValueError, che gestiremo come si deve nel capitolo sulle eccezioni.
Il prompt è facoltativo
Se non passi una stringa di prompt, input() aspetta in silenzio, che è quasi sempre una pessima scelta: l'utente non ha idea di cosa gli stai chiedendo. Passa sempre un prompt chiaro:
Non toglie niente
Qualsiasi cosa scriva l'utente, compresi gli spazi all'inizio e alla fine, torna indietro così com'è. Se per la tua logica conta, chiama .strip():
Un piccolo programma completo
Mettiamo tutto insieme: poche righe che chiedono all'utente i suoi dati e stampano un piccolo resoconto:
Dodici righe. Si leggono dall'alto in basso come istruzioni, non come codice. È lo stile che queste pagine cercano di incoraggiare.
E il debug con print?
A volte sentirai dire che "i veri sviluppatori usano un debugger, non i print". È un'esagerazione. Print è un ottimo strumento di debug, soprattutto per piccoli script ed esperimenti veloci. Spargi chiamate a print in abbondanza mentre cerchi di capire qualcosa, e toglile quando hai finito.
Due piccoli trucchi che semplificano la vita:
L'= dentro una f-string stampa sia il nome sia il valore, e ti risparmia un sacco di print("name =", name) ripetitivi.
Andiamo avanti
print e input ti danno un ciclo di conversazione completo: chiedi, leggi, rispondi. Il prossimo capitolo inizia ad aggiungere le condizioni: l'istruzione if e gli operatori che decidono cosa fa il tuo programma in base ai valori che incontra.
Domande frequenti
Cosa fa print() in Python?
Scrive dei valori nel terminale. print("hello") stampa hello seguito da un a capo. Puoi passare più valori separati da virgole, e per impostazione predefinita print() mette uno spazio tra l'uno e l'altro.
Come funziona input() in Python?
input(prompt) mette in pausa il programma, mostra il prompt all'utente, aspetta che scriva qualcosa e prema invio, e restituisce quello che ha scritto come stringa. Sempre una stringa: se vuoi un numero, avvolgi la chiamata in int(...) o float(...).
Come stampo sulla stessa riga in Python?
Passa end="" a print. Per impostazione predefinita print aggiunge un a capo dopo l'output; impostare end a una stringa vuota (o a qualsiasi altro carattere) sostituisce quell'a capo.