64ビットのWindows 7でpython 2.7を実行しています。
ここに私が実行しているコードがあります:
import sys
while True:
print 'please enter a character:'
c = sys.stdin.read(1)
print 'you entered', str(c)
Eclipse の PyDev 環境では、入力 a と b に対して次の出力が得られます。
please enter a character:
a
you entered a
please enter a character:
you entered
please enter a character:
you entered
please enter a character:
b
you entered b
please enter a character:
you entered
please enter a character:
you entered
please enter a character:
入力を 1 回正しく取得してから、ユーザー入力をスキップして 2 回実行します。
ここで、入力 a および b に対して Python ターミナルで同じコードを実行すると、次の出力が得られます。
enter char
a
you entered a
enter char
you entered
enter char
b
you entered b
enter char
you entered
enter char
これは、ユーザー入力を 1 回取得し、ユーザー入力をスキップして 1 回実行されます。
この問題の原因は何ですか? Python が無限ループで一度に 1 文字ずつ読み取れるようにするにはどうすればよいですか?