この本には各章の末尾に問題が用意されています。
その各問題にアレンジを加えてみました。
問題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を促す文言が出力されるようになりました。
#倍数判定
#入力エラー処理