Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:active_目录模块:检查用户名_Python_Active Directory - Fatal编程技术网

python:active_目录模块:检查用户名

python:active_目录模块:检查用户名,python,active-directory,Python,Active Directory,在使用active_目录模块时出现了一个奇怪的问题,顺便说一句,这是令人惊讶的。。。很棒的包装 无论如何,我需要确保用户名是唯一的。。。这是我的职责: import active_directory def creative_name(fname, lname, n=1): uname = fname[:n] + lname x = active_directory.find_user(uname) if x: creative_name(fname, lname, n

在使用active_目录模块时出现了一个奇怪的问题,顺便说一句,这是令人惊讶的。。。很棒的包装

无论如何,我需要确保用户名是唯一的。。。这是我的职责:

import active_directory

def creative_name(fname, lname, n=1):
    uname = fname[:n] + lname
    x = active_directory.find_user(uname)
    if x: creative_name(fname, lname, n+1)
    else: return uname

if __name__=='__main__':
    print creative_name("Sarah", "Smith")
它总是没有结果。。。我希望它能返回uname。。。或

fname[:n+1] + lname
这很奇怪,因为如果我像这样运行函数:

def creative_name(fname, lname, n=1):
    uname = fname[:n] + lname
    x = active_directory.find_user(uname)
    if x: creative_name(fname, lname, n+1)
    else: print uname

>>>
SaSmith
>>>
萨斯米特回来了。。。为什么它不返回值?!?!打印uname有效,但返回uname不返回任何值

请帮忙

谢谢大家


兰迪

哦,天哪。。。容易多了

import active_directory

def creative_name(fname, lname):
    for i in range(1,len(fname)):
        uname = fname[:i] + lname
        x = active_directory.find_user(uname)
        if not x: return uname

if __name__=='__main__':
    print creative_name("Sarah", "Smith")

它没有返回
SaSmith
,因为没有返回递归部分,因此如果
x
为true,则函数返回
None
。添加一个
return
应该可以修复:

def creative_name(fname, lname, n=1):
    if n > len(fname): return None
    uname = fname[:n] + lname
    x = active_directory.find_user(uname)
    if x: return creative_name(fname, lname, n+1)
    else: return uname

注意:如果
active\u目录,则第一行阻止无限循环。对于每个
n
,find\u user(fname[:n]\u lname)
都是真的

我同意@Randall的观点,使用
for
循环可能更具可读性,在上述情况下,它返回
None