通过迭代添加

时间:2018-11-01 23:18:52

标签: python iteration add

我想接受用户输入并将每个数字加到0。例如,user inputs 9我想加9 + 8 + 7 + 6 .... + 1并输出总数。我的代码

def main(*args):
    sum = 0
    for i in args:
        sum = i + (i - 1)
    return sum

result = main(9)
print(result)

即将结束,但是直到0之前我都无法迭代它。我尝试了几种方式添加范围,但没有运气。我被卡住了。

3 个答案:

答案 0 :(得分:2)

假设用户输入已分配给x,那么最简单的答案是:

sum(range(int(x)+1))

请注意,range()会生成一个列表(实际上是Python 3中的不可变序列类型),其数字最多为但不包括x,因此为+1

就您的原始代码而言,存在一些问题。首先,应避免使用与Python内置变量相同的变量命名,例如sum。其次,您尝试遍历输入参数的元组(例如args = (9,)),这将执行9 + (9-1),否则执行17,然后将该和作为输出。

相反,您可以执行以下操作:

def main(*args):
    mysum = 0
    for i in range(args[0]+1):
        mysum = mysum + i
    return mysum

result = main(9)

print(result)

这两个解决方案都将返回45

答案 1 :(得分:2)

第N个三角形数字。无需迭代。

def calculate_nth_triangle_number(value):
    return value * (value + 1) / 2

答案 2 :(得分:0)

您的代码滥用了Python的一个相对高级的功能,即参数打包,其中提供给函数的所有参数都打包在一个元组中。

致电main(9)会发生什么?进入循环一次(因为使用单个参数调用该函数等效于函数主体中的args = (9, )i仅采用一个值i = 9,而您拥有{{1 }}。

就您而言,我不喜欢sum = 9+8 = 17循环,可以使用for循环吗?使用while,您的函数将完全遵循任务的定义!

while

请注意,求和和递减的顺序对于正确的结果至关重要……还请注意,def my_sum(n): result = 0 while n>0: result = result + n n = n - 1 return result 是内置函数的名称,重载内置名称被认为是不好的味道带着你的表情。