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

Reply via email to