Sto cercando di ottenere più nomi separati da newline dalla console e di inserirli in una variabile. Supponiamo di voler ottenere input dal terminale per sempre (aggiungerò del codice per uscire dal ciclo successivo). So come farlo con un ciclo while e ricorsione, ma mi piacerebbe essere in grado di farlo con un ciclo for.Python esegue iterate su stdin linea per riga utilizzando input()
Nell'esempio che segue quando arrivo "peter"
come input dal terminale ottengo ogni lettera invece che di un'intera riga alla volta:
for name in input():
print(name)
Ora, se uso sys.stdin
variabile name
diventa "peter\n"
:
for name in sys.stdin:
print(name)
c'è un modo facile per ottenere input()
per dare "name"
un'intera linea, piuttosto che singoli caratteri? O semplicemente per la natura dell'uso di for in
Sto andando a scorrere tra i caratteri nell'input? Ci sono dei rischi/problemi inerenti all'entrare in questo modo? Esiste un modo "standard" per ottenere input in una situazione come questa?
Sto usando Python 3.5.1 su Ubuntu 15.10.
'input()' restituisce una stringa che è iterabile, quindi quando si prova e si itera su di esso si ottengono i singoli caratteri uno per uno. –
Ok questo ha senso. input() restituisce una stringa. Quindi sys.stdin restituisce un buffer che viene iterato riga per riga? – PeterH
Perché sys.stdin restituisce un file come oggetto che, quando viene iterato, conterrà ogni singola riga dell'input. –