Python Pyschools数序列
所以我在做pyschools专题6问题23: 编写一个函数getNumbers(number),该函数接受一个数字作为参数,并返回一个数字列表,如下面给出的示例所示 例子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) [
>>> 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)]