我获得了一项任务,找到前n个奇数的平方和,其中n由用户给出。
作业是;
The script only takes one input, so do not
# include any input command below. The print commands below are already given.
# Do not alter the print commands. Do not add any other prints commands.
r = range(1, n + 1) # prepare the range
result = 0 # initialise the result
for k in r: # iterate over the range
result = result + k # update the result
compute the sum of the squares of the first n odd numbers, and print it
这是我到目前为止所做的事情;
r = range(1, n ** n, 2)
result = 0
for k in r:
result = result + k
我知道范围是错误的,因为当我运行它时,我使用5作为n我希望答案是165,因为前5个奇数的平方是165但是我得到144。
请帮忙
答案 0 :(得分:1)
r = range(1, n + 1,2)
print r
result = 0
for k in r:
result = result + k ** 2
print result
如果你传递n = 5那么它将打印35因为范围是1,3,5并且在迭代期间它跳过步骤2,4..你正在考虑像1,3,5,7,9 = 165但是实际结果将是35因此而不是n = 5你可以传递n = 7所以当你传递n = 7时,范围将是[1,3,5,7,9]并且输出将是165
答案 1 :(得分:1)
我们想要迭代奇数,所以如果我们想要做n个奇数,我们需要达到2 * n。例如,5个奇数将是1,3,5,7,9和2 * 5 = 10,但我们只想要所有其他数字,所以我们有命令r = range(1, n * 2, 2)
然后我们从零开始并添加到它,因此result = 0
现在我们迭代我们的范围(r)并将迭代器平方加到我们的结果中,因此result = result = (k * k)
总的来说,我们有:
r = range(1, n * 2, 2)
result = 0
for k in r:
result = result + (k * k)
print result
答案 2 :(得分:0)
n**n
是n次幂。因此,对于n=5
,您的范围是1到3125之间的所有奇数。它应该是1到10之间的奇数。
r = range(1, n ** n, 2)
# ^ replace n**n by ...
你想要求平方,所以你应该计算平方:
result = result + k
# ^ something is missing here