Am 18.04.17 um 08:21 schrieb Chris Angelico:
On Tue, Apr 18, 2017 at 4:06 PM, Christian Gollwitzer <aurio...@gmx.de> wrote:
Am 18.04.17 um 02:18 schrieb Ben Bacarisse:
Thanks (and to Grant). IO seems to be the canonical example. Where
some languages would force one to write
c = sys.stdin.read(1)
while c == ' ':
c = sys.stdin.read(1)
repeat
c = sys.stdin.read(1)
until c != ' '
Except that there's processing code after it.
Sorry, I misread it then - Ben's code did NOT have it, it looks like a
"skip the whitespace" loop.
while True:
c = sys.stdin.read(1)
if not c: break
if c.isprintable(): text += c
elif c == "\x08": text = text[:-1]
# etc
Can you write _that_ as a do-while?
No. This case OTOH looks like an iteration to me and it would be most
logical to write
for c in sys.stdin:
if c.isprintable(): text += c
elif c == "\x08": text = text[:-1]
# etc
except that this iterates over lines. Is there an analogous iterator for
chars? For "lines" terminated by something else than "\n"?
"for c in get_chars(sys.stdin)" and
"for c in get_string(sys.stdin, terminate=':')" would be nicely readable
IMHO. Or AWK-like processing:
for fields in get_fields(open('/etc/passwd'), RS='\n', FS=':'):
if fields[2]=='0':
print 'Super-User found:', fields[0]
Christian
--
https://mail.python.org/mailman/listinfo/python-list