try を while ループに入れる。
何処を実行していて、次に実行されるのは何処か、考えましょう。tryの中のmugenが実行され、インターラプトが発生し、exceptに入ります。ここにwhileがあって、mugenが呼ばれます。このmugenはtryされていないので(それを抜けたあとなので)、割り込みを処理するものがありません。
追記
program は、 pro と gram の合成語です。pro は「あらかじめ」、gram は「書かれたもの」です。何をあらかじめ書いてあるのか。「a set of instructions given to a computer to make it perform an operation(コンピュータに何らかの操作をするように与えられる命令の組み合わせ)」です(ロングマン英英辞典より)。つまり、コンピュータに対する動作の指示書です。あなたは、コンピュータに、どのような指示を出したのでしょうか。指示した内容を理解していますか?それに対して、あなたは、コンピュータに、どのような指示を出したいのでしょうか。
Python
1import time
2import re
3import sys
4from retry import retry
5
6# def は「定義」なので、mugen というメソッドを定義する。
7@retry
8def mugen():
9 while True:
10 time.sleep(1)
11 print('loading...')
12
13# そしてここが実行される。つぎのブロック内を試してみる。
14# 試してみて、何らかのエラーになると except されないものはエラー報告する。
15try:
16 # 定義した mugen を呼び出す。
17 mugen()
18
19except KeyboardInterrupt:
20 # KeyboardInterrupt の場合は通常ルートから除いて以下のブロックを実行する。
21 # この種のものは、try-except で除外されない限り、エラー報告される。
22 while True:
23 x = input('終了しますか?')
24 if x == 'yes':
25 print('end')
26 sys.exit()
27 elif x == 'no':
28 # try の下の mugen でキーボード割り込みが発生し、ここに来ている。
29 # では、この次に実行される mugen でキーボード割り込みが発生したら、どこへ行く?
30 mugen()
31 else:
32 continue
本当にしたいことは、次のようなことではないですか?
while True:
try:
mugen()
except KeyboardInterrupt:
繰り返すか、問い合わせる
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/23 09:25