sagantaf

なんでも自分の思ったこと、経験したことを書いて生きます。

【Python】倍数チェックプログラムを作成してみた

現在、オライリー社の「Pythonからはじめる数学入門(Amit Saha著)」を読んで数学とPythonを勉強しています。
 
この本には各章の末尾に問題が用意されています。
その各問題にアレンジを加えてみました。
 
 問題1−1は以下のような内容でした。(問題文は大幅に要約しています。)
 
問題1−1 奇数偶数自動判別プログラム
 
「入力された数が奇数か偶数かを判定せよ。またその入力された数とその後に9つの奇数または偶数を続けて表示せよ。なお、整数ではない数値が入力されたときはエラーメッセージを表示せよ。」
 
 
この問題自体は、if文でa % 2 などを判定して、rangeで9つprintすればよいと思いますが、これを以下のようにアレンジしてみました。
 
「1番目に入力した数値が2番目に入力した数値の倍数かどうか判定せよ。また、
入力が整数以外だった場合には、エラーとして終了するのではなく、整数が入力されるまでinputし続けられるようにせよ。」

 

どうせだから実用的にするために、想定している値が入力されるまでinputできるようにしたい、と思い、こんな問題にしてみました。

 

自分なりの解答は↓です。

 

"""
Check 1st input number can be divided by 2nd input number.
"""
def check(first,second): #倍数判定する関数作成
    if first % second == 0:
        print("{0} can be divided by {1}.".format(int(first), int(second)))
    else:
        print("{0} can NOT be divided by {1}.".format(int(first), int(second)))
 
 
if __name__=="__main__":
    while True:
        f = input("Please enter 1st number:")
        try:
            f = int(f)  #inputはstr型で格納されるのでintに変換
            break     #intに変換できればwhileループを抜け出す
        except ValueError: #intに変換できない場合は、ValueErrorが発生する
            print("Please enter an integer.") #breakがないので、ループの最初に戻る
 
 
    print("-----")
    while True:
        s = input("Please enter 2nd number:")
        try:
            s = int(s)
            break
        except ValueError:
            print("Please enter an integer.")
 
    check(f,s)
 

 

倍数判定は、「first % second == 0」で実現してます。
 
また、整数が入力されるまでinputを表示させるために、「while True と break」「tryとexcept」を組み合わせて実現しました。
 
これで、整数が入力されたら倍数チェックを実施し、小数や文字列が入力されたらもう一度inputを促す文言が出力されるようになりました。
 
 
#倍数判定
#入力エラー処理