我该如何修复这个算法?

时间:2014-05-05 00:45:01

标签: python algorithm function

我正在尝试在Python中创建一个函数。此函数应该能够创建小于或等于提供的数字的整数列表。我创建了一个空列表,一个名为y的变量和一个while循环。在此while循环中,只要y <= x,后续等式的结果将附加到空列表中,y将增加1。但是,当我调用此函数时,我得到一个只包含一个元素的列表。我该如何解决这个问题?

def fff(x):
    numbers = []
    y = 2
    while(y <= x):
        x = x - (x - y)
        numbers.append(x)
        y += 1
    return numbers

>>> fff(10)
[2]

3 个答案:

答案 0 :(得分:4)

该功能已经存在,或多或少。

Python 2

def fff(x):
    return range(1,x+1)

Python 3

def fff(x):
    return list(range(1,x+1))

答案 1 :(得分:2)

如果您查看此行x = x - (x - y)并考虑您的输入,您将看到问题所在。如果x最初等于10,那么x - (x - y)等于2,y将等于3,因此会突破你的循环。

答案 2 :(得分:0)

如果你试图模仿范围功能,那么你就是这样做的:

def fff(x):
    numbers = []
    y = 1
    while(y <= x):
        numbers.append(y)
        y += 1
    return numbers