python - 当我返回的变量有一个与之关联的字符串时,我的函数返回 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”。
我知道这不是最有效的,但一旦它从根本上发挥作用,我就可以让它更有效率。
解决方案
在您的条件下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
推荐阅读
- bash - 如何基于公共字段合并列集
- flutter - 编译flutter项目时出现Gradle错误
- reactjs - 将道具传递给反应中的不同组件
- html - HTML 图像在 Karma 之上呈现
- android - 带有gridlayoutmanager的Recyclerview中的行之间的空间被弄乱了
- clojure - 在这种情况下,为什么 reduce 比 recur 执行得次优?
- scala - Spark Scala 数据框将嵌套地图转换为单个数据框行?
- c# - Windbg Linq 用于托管对象
- java - Java Swing,如何创建这样的 UI?
- c# - Microsoft Graph API 授权错误:无效的受众