【Python】入力を受け付けるときに数字のみ入力してほしい場合

メモとして書き記しておきます。

ちょっとした悩み

  • 数字だけしか入力させたくない!
  • 数字以外を入力されたら再入力させたい!

こんなことよくありますね?(わかりませんでした)

そんなとき、私はプログラミング初心者なので

Flag = True
while Flag:
    text = input()
    if text.isdecimal():
        Flag = False
print(text)

とかしちゃいます。

1個の入力だけだとこれでも問題ないのですが、複数入力を求めるときに結構面倒なので関数にまとめるとスッキリして見やすいことに気が付きました。

def int_input(prompt):
    while True:
        i = input(prompt)
        if i.isdecimal():
            i = int(i)
            break
        print(f"{i}はint型である必要があります")
    return i

やってることは変わらないのですが1行で数字の入力のみを受け付けることが出来ます。

使い方は数字のみの入力を受け付けたい所をinput関数の代わりにint_input関数に変えるだけです。

つよつよプログラマーさんたちには「こんなの考えなくてもできる」「こんなのクソ」とか怒られそうですけど…