我该如何解决这个问题?
程序应包含函数sumTri(cutOff)
的定义。该函数将三个数字添加到总和中。
三位数是第三个数字:1, 4, 7, 10,
....只要三位数小于cutOff,该函数就会将连续的三位数1, 4, 7,
...添加到总和中。该函数返回这些数字的总和。
答案 0 :(得分:5)
很简单:
def sumTri(cutOff):
return sum(range(1,cutOff,3))
或者,当你需要它低级时:
def sumTri(cutOff):
sum = 0
tri = 1
while tri < cutOff:
sum += tri
tri += 3
return sum
我会试着稍微解释两个灵魂。
在第一种情况下,您使用Python的两个“高级”功能,这些功能可以让您完成所有工作:sum
和range
。 range(a,b,c)
函数会生成从a
到b
的数字列表,其中包含步骤c
。 E.g:
In [1]: range(1,10,3)
Out[1]: [1, 4, 7]
In [2]: range(1,22,3)
Out[2]: [1, 4, 7, 10, 13, 16, 19]
您必须在此注意range
生成数字,直到列表中的数字小于b
,而不是小于或等于。正是您的任务所需。
sum
显然会计算并返回列表中数字的总和作为参数:
In [3]: sum([1])
Out[3]: 1
In [4]: sum([1,2])
Out[4]: 3
In [5]: sum([1,2,3])
Out[5]: 6
现在你需要结合这两个功能:
return sum(range(1,cutOff,3))
第二种解决方案更“低级”和“算法”。你在这里没有使用特殊的python函数,而是自己做所有事情。
您使用两个变量来计算总和:
sum
- 存储金额的变量tri
- 具有您逐步添加的当前数字值的变量当你写下这样的东西时:
a = a + 5
这意味着:“现在我希望a
等于a
之前加5”或“增加a
5”。你可以写得更短:
a += 5
这两种形式是等效的。
但你不需要简单地添加一些东西。你需要做很多次,直到发生了什么事。在python中,您可以使用while
:
while someting-is-true:
do-something
每次while
检查something-is-true
条件,并且当它为真时,它会生成while
(缩进)下的命令,即do-something
。
现在您知道编写解决方案所需的一切:
def sumTri(cutOff):
sum = 0 # we start the sum from 0
tri = 1 # and the first number to add is 1
while tri < cutOff: # next number to add < cutOff?
sum += tri # than add it to sum
tri += 3 # and increase the number by 3
return sum # now you have the result, return it
这就是完成工作的功能。现在您可以使用该功能。 你是怎么做到的?
def sumTri(cutOff):
...
# anywhere in you program:
# presuming a is the cutOff
print sumTri(a)
如果要运行该函数并使用其结果,只需编写function_name(args)
。
答案 1 :(得分:4)