2017-08-15 23 views
0

我必須測試用戶輸入是否爲數字。否則,我需要再次詢問輸入。這聽起來很簡單,對吧?但是,檢查下列功能迭代測試Python3中的數字輸入

# 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() 

它工作正常,如果來自用戶的第一輸入實際上是一個數4111111111111111

但是,如果用戶輸入第一字符串,如asbsdl。該功能正確地再次詢問一個號碼,但即使輸入號碼,也會返回None

任何人都可以點亮一下嗎?謝謝。

+1

您忽略遞歸調用返回值。看到重複。 –

+1

但是,你真的不應該在這裏使用遞歸,請參閱[要求用戶輸入,直到他們給出有效的響應](// stackoverflow.com/q/23294658) –

+0

非常好。謝謝。這是相當長一段時間... –

回答

1

所以原因是因爲你沒有返回你的遞歸調用。要解決此問題,請將遞歸調用(最後一行)更改爲return request_number()