Вызовите функцию и верните значение - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть следующий код:

def checkUserId(userID):
    if userID < 1 or userID > 10:
        print(userID)
        print("You did not enter a valid ID number. Try again.")    
        userID = int(input("Enter your ID number."))
        print(userID)
        checkUserId(userID)
    else:
        return userID

userID = 0
while userID != "shutdown":
    userID = int(input("Enter your ID number."))
    checkUserId(userID)
    print(userID)

Все, что я хочу сделать, это проверить, находится ли userID между 1 и 10. Если это так, тогда мы продолжим.Но по какой-то причине, когда функция вызывается и выполняет проверку, значение userID (теперь введено правильно) не возвращается.Вместо этого используется исходное неверное значение, введенное перед вызовом функции.Если пользователь введет «11», «11» останется значением userID после вызова функции.Просто запустите его, чтобы увидеть, что я имею в виду.Спасибо за любую помощь.

1 Ответ

0 голосов
/ 04 декабря 2018

В вашем коде было две переменные UserID, и в случае значения не между 1 и 10 вы не возвращали значение UserID, следовательно, оно печатало старое значение в цикле while.

, которое можно использовать нижеупрощенный код.

def checkUserId(user_id):
    if user_id < 1 or user_id > 10:
        print(user_id)
        return "You did not enter a valid ID number. Try again."
    else:
        return user_id

user_id = 0
while True:
    user_id = input("Enter your ID number.")
    if user_id == 'shutdown':
        break
    ret_user_id = checkUserId(int(user_id))
    print(ret_user_id)
...