Sfida tra input() e sys.stdin
Perché il semplice input() penalizza nei test grandi
Sfida tra input() e sys.stdin è una lezione Coding Interview Prep gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Coding Interview Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Coding Interview Prep include 4 lezioni in totale.
Il costo nascosto di input()
Ogni chiamata a input() svolge del lavoro aggiuntivo dietro le quinte. Su poche righe va bene, ma nelle gare possono arrivare migliaia di righe. ⏱️
Perché si accumula
Il rallentamento dipende dall'overhead per chiamata: richieste, svuotamento del buffer e controlli di codifica si ripetono per ogni riga letta.
Ecco sys.stdin
Il percorso più veloce consiste nel leggere da sys.stdin, il flusso di input grezzo. In questo modo si evitano le comodità aggiuntive che input() offre.
import sys
data = sys.stdinLegga rapidamente una riga
Utilizzi sys.stdin.readline() per acquisire rapidamente una singola riga. Si comporta come input(), ma con un overhead molto inferiore a ogni chiamata.
import sys
line = sys.stdin.readline()Attenzione al ritorno a capo
readline() conserva il carattere newline finale. Chiami .strip() per rimuoverlo prima di analizzare il valore.
n = int(sys.stdin.readline().strip())Legga tutto in una volta
Per ottenere la massima velocità di lettura, acquisisca tutto l'input in un'unica operazione con sys.stdin.read(), quindi elabori personalmente il testo.
data = sys.stdin.read()Divida tutto il blocco
Dopo read(), chiami .split() per trasformare tutti i token in un'unica lista piatta. Spazi bianchi e ritorni a capo vengono gestiti insieme.
tokens = sys.stdin.read().split()Riassegni input per aumentare la velocità
Un trucco comune consiste nel fare puntare input a readline, così il vecchio codice resta invariato ma viene eseguito più velocemente.
import sys
input = sys.stdin.readlineQuando input() va benissimo
Se il problema legge solo poche righe, il semplice input() va benissimo. Riservi il percorso veloce agli input di grandi dimensioni.
Anche print ha un overhead
Lo stesso principio vale per l'output: molte chiamate a print() sono lente. Risolveremo questo problema in una lezione successiva dedicata all'elaborazione in blocco.
Scelga lo strumento giusto
La regola generale è: input piccolo, utilizzi input(); input grande, passi a sys.stdin. Adattare lo strumento a N può farle risparmiare tempo prezioso.
Verifica rapida
Una rapida verifica intuitiva sulla velocità di lettura.
Riepilogo: lettura veloce
Ha visto sys.stdin come alternativa veloce a input(): readline() per ogni riga oppure read().split() per leggere tutto. Adatti lo strumento alle dimensioni dell'input. ⚡
Domande Frequenti
La lezione «Sfida tra input() e sys.stdin» è gratuita?
Sì — il testo completo di «Sfida tra input() e sys.stdin» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Coding Interview Prep, passa a CoddyKit PRO. Il corso Coding Interview Prep include 4 lezioni in totale.
Cosa imparerò in «Sfida tra input() e sys.stdin»?
Perché il semplice input() penalizza nei test grandi Eserciti Coding Interview Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Coding Interview Prep?
Non è richiesta alcuna esperienza precedente. Coding Interview Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Sfida tra input() e sys.stdin»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Coding Interview Prep?
Sì. Ogni lezione Coding Interview Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Sfida tra input() e sys.stdin
- Analizzare molti numeri su una riga
- Produrre l’output in batch nel modo corretto
- Leggere N righe e gestire i casi limite