调用函数并返回一个值

时间:2018-12-04 12:04:54

标签: python function return call

我有以下代码:

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 :(得分:0)

您的代码中有两个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)