(ループに入る前に)入力をループの外側に集めるだけです。あなたは本当にユーザーに1000の数字を入力させたいですか?あなたはおそらくあなたがします。一番上にループを入れ、最初に1000の数字を集めて配列に格納するだけです。
次に、下半分でループを変更して、すべての作業を行います。誰かが何もキーボードを入力しなければ、それは本当に重要ではありません。このような
何か:
def getvars(top=1000):
vars = []
for i in range(0,top):
anum = int(raw_input('%d) Please enter another number: ' % i))
vars.append(anum)
return vars
def doMagic(numbers):
top = len(numbers)
for number in numbers:
# do magic number stuff
print 'this was my raw number %s' % number
if __name__ == "__main__":
numbers = getvars(top=10)
doMagic(numbers)
が働くべきであるそれを行うための別の方法がある道の別の種類と少ないOSに依存
を発表しました。私はそれをテストするのに便利なウィンドウボックスを持っていませんが、それは私が使用していたそのテクニックとそのむしろ文書化されていません。おそらく私は秘密を譲っているのですが、基本的にはこうです:あなたのアプリがあなたの魔法計算の開始時にスクリーンセーバー機能をオンにするapiを呼び出すことによってあなたのアプリがスクリーンセーバーであると考えさせるようにします。あなたの魔法の計算の終わりに、またはあなたが再び入力を受け入れる準備ができたら、apiをもう一度呼び出して、スクリーンセーバー機能をオフにしてください。
それはうまくいくでしょう。
これを行う別の方法もあります。あなたが窓にいるので、これもうまくいくでしょう。それはかなりの仕事量ですが、あまりにも多くはありません。ウィンドウでは、(Zオーダーの最上部にある)フォアグラウンドのウィンドウがそのウィンドウに「生の入力スレッド」を取得します。生の入力スレッドは、マウスとキーボードの入力を受け取ります。したがって、すべての入力をキャプチャするには、Zオーダーの最上部にある透明または非透明のウィンドウを立ち上げる関数を作成するだけです。setWindowPosはトリックを行い、画面全体をカバーし、おそらくあなたが入力を促す準備ができたら、showwindow()を使用してウィンドウを隠し、以前の結果を表示し、入力を取得してからウィンドウを再表示し、キー/マウスをキャプチャします何度も何度も。
もちろん、これらのすべてのソリューションは、何らかのtry/exceptハンドリングや低レベルのWindows SDK呼び出しのラッピングを実装していない限り、特定のOSに接続します。
出典
2011-12-21 12:41:13
zel
あなたが使っているコードを見せたら、助けがさらに簡単になります –
私はコードを正確に表示することはできませんが、それと同等のものをお見せしましょう。 –
可能な複製http://stackoverflow.com/questions/2520893/how-to-flush-the-input-stream-in-pythonお使いのOSをお知らせください。解決策はOS固有のものです。 – Abhijit