首页 > 解决方案 > 当我返回的变量有一个与之关联的字符串时,我的函数返回 None

问题描述

database_id = []

def makeID(name, count=1):
    y = None
    x = str(name + str(count))
    if x in database_id:
        count = count + 1
        makeID(name, count)
    if x not in database_id:
        y = str(name + str(count))
        database_id.append(y)
    if y != None:
        count = 1
        return y

我正在运行这个: print(makeID('Eric'))

我没有收到。但是当我打印 database_id 时,它会显示列表 ['Eric1']。

变量 y 也是字符串“Eric1”。


我知道这不是最有效的,但一旦它从根本上发挥作用,我就可以让它更有效率。

标签: pythonpython-3.x

解决方案


在您的条件下if x in database_id:,您永远不会分配y意味着您的条件if y != None:是 False 并且不会执行(您只有在该条件下有一个 return 语句)基本上返回None。此外,您不需要对此类问题使用递归,您可以轻松地迭代解决它:

database_id = []

def makeID(name):
    count = 1
    while name + str(count) in database_id:
        count += 1
    user_id = name + str(count)
    database_id.append(user_id)
    return user_id

推荐阅读