2017-08-15 1 views
0

ユーザの入力が数値かどうかをテストする必要があります。それ以外の場合は、もう一度入力を要求する必要があります。シンプルに聞こえるよね?しかし、ユーザーが最初なasbsdlとして文字列を、入力した場合、ユーザからの最初の入力は、実際に数4111111111111111Python3で数字である入力を反復的にテストする

ですがあればそれは立派に動作し、以下の機能

# Request number from user 
def request_number(): 
    number = input("Please, enter the card number you want to check: ") 
    if number.isnumeric(): 
     return int(number) 
    elif number.isalpha() or number.isalnum() or number.isdecimal(): 
     request_number() 

をご確認ください。この関数は2回目の数値を正しく要求しますが、数値を入力してもNoneを返します。

誰か光を当てることはできますか?ありがとう。

+1

に変更します。再帰呼び出しの戻り値は無視します。重複を参照してください。 –

+1

しかし、本当にあなたはここで再帰を使うべきではありません。[有効な応答が得られるまで入力を求める](// stackoverflow.com/q/23294658) –

+0

優れています。ありがとう。これにかなりの時間がかかっていました... –

答えて

1

です。その理由は、再帰呼び出しを返さないためです。これを修正するには、再帰呼び出し(最終行)をreturn request_number()

関連する問題