Python整数list.append()操作问题

时间:2018-12-02 11:55:51

标签: python list loops integer local-variables

我认为我在理解为什么附加到列表中的整数仅保留在循环中而在列表之外为空时遇到了一些问题。

对于本练习,我试图创建一个使用数字并使用 递归 函数输出西勒鸠斯序列的程序。

import sys

def syracuse(nr):
    ''' syracuse function '''

    nr = int(nr)
    seq = []
    if nr != 1:
        if (nr % 2 != 0):
            n =  3*nr+1
        else:
            n = nr // 2
        seq.append(n)
        print(seq)
        syracuse(n)
    else:
        return seq

def main(argv):
    ''' main function '''
    if len(argv) == 2:
        print(syracuse(argv[1]))

    else:
        print("Error! One number should be included in the query."
        .format(argv[0]), file = sys.stderr)

if __name__ == '__main__':
    main(sys.argv)

输入“ 5”时,我的输出是:

[16]
[8]
[4]
[2]
[1]
None

所以我的问题是:如果变量n在nr!= 1循环中确实附加到列表中,那么列表seq为何输出为None。如何从循环中提取变量?这是我不理解的东西还是其他东西?

我希望我的问题是连贯的。预先感谢。

请注意,尽管我知道Python对于 递归 函数不太适用,但这是练习,我必须实现它。

1 个答案:

答案 0 :(得分:1)

每次调用该函数时,都会重置列表。 为防止这种情况,请将该列表用作参数:

WeakReference<TextView>