我有以下代码:
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值。只需运行它即可了解我的意思。感谢您的协助。
答案 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)