python递归函数返回none而不是字符串

罗比软

下面的python函数使用print函数打印值,但如果返回字符串值则不返回任何值。任何人都可以帮助我如何从下面的函数返回字符串值。

csv_full_list = ['mycsv_0', 'mycsv_1']


def create_csv_name(comm, index):
    global csv_full_list
    if comm + '_' + str(index) in csv_full_list:
        index += 1 # increment index by 1
        create_csv_name(comm, index=index)
    else:
        print '%s_%i' % (comm, index)
        return '%s_%i' % (comm, index)


print(create_csv_name('mycsv', 0))

输出预期:

mycsv_2

但返回:

没有任何

阿克谢·阿格拉瓦尔

试试下面的代码。

csv_full_list = ['mycsv_0', 'mycsv_1']


def create_csv_name(comm, index):
    global csv_full_list
    result = True
    print "ATTEMPT: COMM: {}, INDEX: {}".format(comm, index)

    while result:
        if comm + '_' + str(index) not in csv_full_list:
            result = False

        else:
            index += 1 # increment index by 1
            #print "--> Found COMM: {}, INDEX: {}".format(comm, index)
            create_csv_name(comm, index=index)

    if not result:
        return "\n\nStopping at >> COMM: {}, INDEX: {}".format(comm, index)

# Call the def
print(create_csv_name('mycsv', 0))

第二种变化:

csv_full_list = ['mycsv_0', 'mycsv_1']


def create_csv_name(comm, index):
    global csv_full_list
    result = True
    print "ATTEMPT: COMM: {}, INDEX: {}".format(comm, index)

    if comm + '_' + str(index) not in csv_full_list:
        return "\n\nStopping at >> COMM: {}, INDEX: {}".format(comm, index)
    else:
        index += 1 # increment index by 1
        return create_csv_name(comm, index=index)

print(create_csv_name('mycsv', 0))

输出:

> python.exe .\sample.py
ATTEMPT: COMM: mycsv, INDEX: 0
ATTEMPT: COMM: mycsv, INDEX: 1
ATTEMPT: COMM: mycsv, INDEX: 2
ATTEMPT: COMM: mycsv, INDEX: 2


Stopping at >> COMM: mycsv, INDEX: 2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章