2013-12-20 3 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(), потому что это быстрее питона v2, чем диапазон().

+0

google «функциональное программирование», чтобы узнать немного больше о том, что он пытается сделать. Это не обязательно лучший способ * для этой конкретной задачи *, но для других это может быть. – MattDMo

+0

Я пытался распечатать «сумму первых X целых чисел Y» для первых 100 чисел, как упражнение без цели. Также имейте в виду, что есть более простые способы суммирования последовательности чисел, которые быстрее, чем использование грубой силы. – spitfiredd

Смежные вопросы