【问题标题】:Call function and return a value调用函数并返回一个值
【发布时间】:2018-12-04 12:04:53
【问题描述】:

我有以下代码:

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)

我想要做的就是检查用户 ID 是否在 1 到 10 之间。如果是,那么我们继续。但是由于某种原因,当调用该函数并进行检查时,不会返回 userID 的值(现在输入正确)。而是使用在函数调用之前输入的原始无效值。如果用户输入'11','11'在函数调用后仍将保留用户ID值。运行它看看我的意思。感谢您的帮助。

【问题讨论】:

  • 缩进在 Python 中很重要。如果您要发布 Python 代码,请努力准确地重现您的缩进。如果读者必须尝试猜测您的实际缩进,他们可能会错过问题或在程序中引入新问题。
  • 您接受 userID 作为 int,但您的终止条件是当 userID 为“关闭”时。如果你接受它作为一个 int,它怎么会是一个字符串?
  • @Rohan - 很好,但这不是我要处理的直接问题

标签: python function return call


【解决方案1】:

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

【讨论】:

  • 感谢@Sach ...完美运行!我尝试投票支持答案,但我的声誉不够高。
猜你喜欢
  • 2022-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 2012-04-01
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
相关资源
最近更新 更多