2013-12-20 66 views
0

我想玩一些更多的函數編程部分的python和一個測試我想我會打印出所有數字之間的前n個整數的總和介於1和100之間。打印出一個地圖函數的索引

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(我可以用一個錯誤有過,但我會解決這個問題) 。

我的問題是持有索引的變量是什麼?

回答

2

你可以用(指數值)從拉姆達返回元組,這樣的:

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) 
+1

你在30秒內擊敗了我完全相同的答案。 –

+0

甚至更​​少。太好了!但你已經打了我評論。 – graphite

4

您的代碼沒有定義包含索引的變量。在最外層的範圍中,只有變量(在討論Python時有時稱爲「名稱」)「i」。

如果您想索引,您可以使用內置函數枚舉()

for i,x in enumerate([5,10,15]): 
    print i, x 
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) 
0

Mayby我不明白你要什麼,但不能你只需要使用打印

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的速度比範圍()。

+0

谷歌「函數式編程」更多地瞭解他想要做的事情。對於這個特殊的任務*不一定是最好的方式,但對於其他人來說可能是最好的。 – MattDMo

+0

我試圖打印出前100個數字的「前X個整數的總和爲Y」,就像沒有目標的練習一樣。另外請注意,有一些更簡單的方法可以用比蠻力更快的數字進行求和。 – spitfiredd