Python Pyschools数序列

Python Pyschools数序列,python,python-2.7,Python,Python 2.7,所以我在做pyschools专题6问题23: 编写一个函数getNumbers(number),该函数接受一个数字作为参数,并返回一个数字列表,如下面给出的示例所示 例子 >>> getNumbers(10) [100, 64, 36, 16, 4, 0, 4, 16, 36, 64, 100] >>> getNumbers(9) [81, 49, 25, 9, 1, 1, 9, 25, 49, 81] >>> getNumbers(8) [

所以我在做pyschools专题6问题23:

编写一个函数getNumbers(number),该函数接受一个数字作为参数,并返回一个数字列表,如下面给出的示例所示

例子

>>> getNumbers(10)
[100, 64, 36, 16, 4, 0, 4, 16, 36, 64, 100]
>>> getNumbers(9)
[81, 49, 25, 9, 1, 1, 9, 25, 49, 81]
>>> getNumbers(8)
[64, 36, 16, 4, 0, 4, 16, 36, 64]
>>> getNumbers(0)
[0]
这是我的代码:

def getNumbers(num):
    x = []
    y = []
    if num % 2 == 0:
        x = [i**2 for i in range(0, num+2, 2)]
        y = [i**2 for i in range(0, num+2, 2)]
        z = sorted(x, reverse=True) + y
        if z.count(0) > 1:
            z.remove(0)
            return z
    elif num % 3 == 0:
        x = [i**2 for i in range(1, num+2, 2)]
        y = [i**2 for i in range(1, num+2, 2)]
        return sorted(x, reverse=True) + y
    elif num == 1:
        x.append(num)
        y.append(num)
        return sorted(x, reverse=True) + y
这是可行的,但我不能通过私人测试用例。有什么想法吗?为什么? 私有测试用例是由他们制作的,用于查看您是否需要硬编码

Test Cases       Expected Result                            Returned Result
getNumbers(10)  [100, 64, 36, 16, 4, 0, 4, 16, 36, 64, 100] [100, 64, 36, 16, 4, 0, 4, 16, 36, 64, 100] 
getNumbers(9)   [81, 49, 25, 9, 1, 1, 9, 25, 49, 81]        [81, 49, 25, 9, 1, 1, 9, 25, 49, 81]    
Private Test Cases  Passed                                  Failed  
getNumbers(0)   [0]                                         [0] 
getNumbers(1)   [1, 1]                                      [1, 1]

这是最容易做到的事情:

def getNumbers(num):
    x = -num
    y = list(range(x, num+1, 2))
    return [i**2 for i in y]

getNumbers(10)
[100, 64, 36, 16, 4, 0, 4, 16, 36, 64, 100]

也请在下面找到一个版本

 def getNumbers(num): 
     n=list(range(num+1))
     num1=[]
     x=num
     for i in n:
      x=num**2
      num1.append(x)
      num-=2
     return num1 

数字的平方总是正的。您需要结束num+1上的范围以将数字包含在结果中。该范围是可编辑的,因此该范围周围的列表是虚假的。

什么是私有测试用例?从我在某个地方看到的内容来看,可能是要看程序员是否硬编码,但我不知道我是否硬编码。试着理解该测试用例,那就只有有人能帮你了!这就是它所做的,我的代码似乎是硬编码的,有没有其他方法可以轻松实现我所做的?欢迎使用堆栈溢出!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!
def getNumbers(num):
    return [i * i for i in range(-num, num + 1, 2)]