我正在尝试使用python的一些函数编程部分,并且为了测试我认为我会打印出1到100之间所有数字的前n个整数的总和。
for i in map(lambda n: (n*(n+1))/2, range(1,101)):
print "sum of the first %d integers: %d" % (i,i)
最后一行打印为:
sum of the first 5050 integers: 5050
它应该是“前100个整数的总和是5050(我可能有一个错误,但我会修复它)。
我的问题是保存索引的变量是什么?
答案 0 :(得分:4)
您的代码未定义包含索引的变量。在最外层的范围内,只有变量(在谈论Python时有时称为“名称”)“i”。
如果您想要索引,可以使用内置函数enumerate()
for i,x in enumerate([5,10,15]):
print i, x
答案 1 :(得分:2)
你可以从lambda返回带有(index,value)的元组,就像那样:
for i,s in map(lambda n: (n,(n*(n+1))/2), range(1,101)):
print "sum of the first %d integers: %d" % (i,s)
答案 2 :(得分:1)
或者你可以试试这个:
for ind, val in enumerate(map(lambda n: (n*(n+1))/2, range(1,101)), 1):
print "sum of the first %d integers: %d" % (ind, val)
答案 3 :(得分:0)
Mayby我不明白你的目的但是你不能只使用print
print "sum of the first %d integers: %d" %(100,sum(xrange(1,101)))
如果您想要用户输入...
i = input("Enter the upper range to sum: ")
print "sum of the first %d integers: %d" %(i,sum(xrange(1,i+1)))
我也使用xrange()因为它在python v2中比range()更快。