原因
- コンソールが出ている
- 黒い部分をクリック(止まる。タイトルの先頭に「選択」が加わる)
- キーボード入力(再開)
対策
フールプルーフ設計です。
pyinstaller
を利用してexe化する際、オプションに--noconsole
または-W
を付けて、コンソールを出さないようにしましょう。
どうしても画面にログ出力が欲しい場合は、PyQt5とかTkinterを利用するとか。
あとは単にログファイル出力って言うてもありますね。
手動で止めるときにタスクマネージャとかを利用しないといけないのが面倒です。もしくは自動終了とか?
実験
以下のコードをコンソールありでexe化していじってみるとわかると思います。
na_beats_u.py
import time
# 数字をひらがなにするための辞書
number_dict = {'0':'','1':'いぃち','2':'にぃ','3':'さぁん','4':'よぉん',
'5':'ごぉ','6':'ろぉく','7':'なぁな','8':'はぁち','9':'きゅ~'}
digit_dict = {1:'', 2:'じゅ~', 3:'ひゃぁく', 4:'せん', 5:'まぁん', 6:'じゅうまぁん', 7:'ひゃくまぁん'}
def aho(msg: str) -> str:
'''数字(文字列型)をアホにする'''
result = ''
length = len(msg)
for i in range(length):
if msg[i] != '1' or i == length-1:
result += number_dict[msg[i]]
result += digit_dict[length - i]
result += '!'
return result
if __name__ == '__main__':
print('「3の倍数と3が付く数字のときだけアホになります!」')
i = 1
while True:
time.sleep(1)
# 数字に3が入っている、または3の倍数の時にアホになる
msg = str(i)
if(i % 3 == 0):
print(aho(msg))
elif '3' in msg:
print(aho(msg))
else:
print(msg)
i += 1