Qiita初投稿とプログラム



title:Qiita初投稿とタイマープログラム

author:The_ren

初投稿です

 本日初投稿いたしましたThe_renと申します。大学で本格的にpythonを学ぶようになってからアウトプットの場が足りていないと感じ、Qiitaを利用することにしました。
 ここでは自作したプログラムの質問の場として投稿をしていく予定なので、質問に答えられるQiitaの先輩方々はどんどん私にご指摘頂ければなと思います。また、Javaも今夏からやる予定なので、就職に繋げていきたいです。

タイマーコード

学校の課題でプログラムをpythonで自作する課題が出たので、5分まで対応のカップ麺用のキッチンタイマーを作りたいと思います。以下は試作したコードです。

from time import sleep
import time
import pygame.mixer

minute_to_second=60

def alert():
    print("時間です")
    Sound()
    exit()

def Sound():
    pygame.mixer.init()
    pygame.mixer.music.load("Onmtp-Ding04-2.mp3")
    pygame.mixer.music.play(-1)
    input()
    pygame.mixer.music.stop()

while True:
    print("タイマーを設定する時間を指定してください")
    minute=int(input("何分に設定するか選択してください。:"))
    second=int(input("何秒に設定するか選択してください:"))
    if minute==0 and second==0:
        print("設定を終了しました。")
        break

    try:
        if 0<=minute<=5:
            wait_time=(minute*minute_to_second)+second
        else:
            if 0>minute or 5<minute:
                print("入力できる数字は0から5までです。")
                continue
    except ValueError:
        print("数字以外は入力しないでください。")

    else:
        try:
            if 0<=second<=59:
                print(str(minute)+"分"+str(second)+"秒にタイマーをセットしました。")
                sleep(wait_time)
            else:
                 if 0>second or 59<second:
                    print("入力できる数字は0から59までです。")
                    continue
        except ValueError:
            print("数字以外は入力しないでください。")

    alert()

最終目標としては、時間になったらmp3から音楽を鳴らして知らせるだけでなく、tkinterで制限時間の表示も行いたいと考えています。

質問内容

その1

try文を使用することでエラー処理を行いたいと思っています。コードを見ていただければ分かると思いますが、なぜかエラー処理後のprint処理を実行してくれません。例えば、inputで読み取った値が「d」や何も押さずにENTERを押した場合の処理がループされずにpythonの既存のエラー処理で返されます。どのようにコードを変えれば良いでしょうか?

その2

本来は5分までのタイマーにしたかったのですが、秒針の上限を59までに設定しているため、最大で5分59秒まで設定できてしまう状況になっています。どのようにコードを変えれば良いでしょうか?

その3

この処理をtkinterのデジタル時計でカウントダウン形式で表示させたいのですがコンパクトなコードの書き方を是非ご教授してほしいです。