python
1import random 2import os 3import time 4 5os.system("CLS") 6 7開始時間 = time.monotonic() 8 9for ループ数 in range(10): 10 value1 = random.randint(0, 9) 11 value2 = random.randint(0, 9) 12 x=int(input(str(value1) + "+" + str(value2) + "\n")) 13 14 if value1+value2 == x: 15 print("正解!") 16 else: 17 print("不正解...") 18 19 time.sleep(0.5) 20 os.system("CLS") 21 22終了時間 = time.monotonic() 23print(str(int(終了時間-開始時間)) + "秒")
1桁と1桁の足し算を出題していくプログラムなのですが、
回答までにかかった時間だけではなく、
一問毎に時間制限をアニメーション的に表示したいと考えています
またinput入力待ち最中に同時並行的にカウントダウンを表示したいと思っています
自分なりに考えた結果、マルチスレッドを使えばいいのかなという結論に至りました
しかし、カウントダウンのアニメーションとinputがどうしても競合してしまいます...
python
1import random 2import os 3import time 4import multiprocessing 5 6os.system("CLS") 7 8def カウントダウン(): 9 for ループ数 in range(10): 10 print(str(ループ数), end = "\r") 11 time.sleep(1) 12 13if __name__ == "__main__": 14 開始時間 = time.monotonic() 15 for ループ数 in range(10): 16 value1 = random.randint(0, 9) 17 value2 = random.randint(0, 9) 18 19 n = multiprocessing.Process(target = カウントダウン) 20 n.start() 21 22 x = int(input(str(value1) + "+" + str(value2))) 23 24 if value1+value2 == x: 25 print("正解!") 26 else: 27 print("不正解...") 28 29 n.terminate() 30 time.sleep(0.5) 31 os.system("CLS") 32 33 終了時間 = time.monotonic() 34 print(str(int(終了時間-開始時間)) + "秒")
このコードですと、アニメーション的な表示をするために使ったキャベッジリターンが、inputを邪魔してしまいますし、
下のコードのようにos.system("CLS")を使ってもやはりinputを打ち消してしまいます...
python
1def カウントダウン(): 2 for ループ数 in range(10): 3 print(str(ループ数)) 4 time.sleep(1) 5 os.system("CLS")
アイデアの問題なのか、それとも方法が悪いのかわかりませんが
この問題を解決するヒントでもいいので、ご教授お願いします><
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/09 15:33