Для цикла, не добавляющего итерации нет в списке

-6

Я начинающий Python. Я пытаюсь решить эту проблему с алгоритмом.

Вам задан массив целых чисел. Вы должны найти сумму элементов с четными индексами (0-й, 2-й, 4-й...), а затем умножить это суммированное число и конечный элемент массива вместе. Не забывайте, что первый элемент имеет индекс 0. Для пустого массива результат всегда будет 0 (ноль).

Примечание: все это функция, и вход автоматически вызывается в нее в списке, называемом массивом.

length = len(array) / 2
if len(array) % 2 == 1 :
length = length + 1
a= length
q= 0
for x in xrange (length):
if x % 2 == 0 :
q = q + a[x] #This may have the problem.

sum = q

answer = sum * array[len(array)]

return answer

Он дает эту ошибку: TypeError: объект 'int' не имеет атрибута ' getitem ' checkio, 13, 23

13 относится к прокомментированной строке.

Спасибо за помощь.

спросил(а) 2014-08-29T10:29:00+04:00 5 лет, 5 месяцев назад
0
49

Спасибо Матиасу и Тархею за решение моей проблемы. Это решение, а простота - ум boggling-

if len(array) == 0:
return 0
else:
return sum(array[::2]) * array[-1]

ответил(а) 2014-08-29T10:55:00+04:00 5 лет, 5 месяцев назад
50

Прежде всего, вы назначаете целочисленную length переменной a. Естественно, вы не можете использовать индексные обозначения для этого целого. Я думаю, что это только опечатка с вашей стороны, вы, вероятно, хотели сказать a = array.

Более интересно, вы можете решить всю проблему гораздо проще, используя нотацию Python slice. Например,

def alternate_summiply(array):
return sum(array[::2]) * array[-1]

было бы компактным способом его решения. (Срезами отмечен array[start:end:step] а индекс -1 является последним элементом в последовательности.)

Edit: Кроме того, поскольку вы пытаетесь получить доступ к array[len(array)] вы получите IndexError. Помните, что "первый элемент имеет индекс 0", что означает, что конечный элемент имеет индекс len(array) - 1.

ответил(а) 2014-08-29T10:41:00+04:00 5 лет, 5 месяцев назад
50

Вы должны использовать массив вместо a. a - int. И вы должны использовать array[-1] вместо array[len(array)], который укажет вам индекс вне диапазона.

Попробуй это:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

array = [1,2,3,4,5,6,7,8,9, 10]

length = len(array) / 2
if len(array) % 2 == 1 :
length = length + 1
a= length
q= 0
for x in xrange (length):
if x % 2 == 0 :
q = q + array[x] #This may have the problem.

sum = q

answer = sum * array[-1]

print answer

Скажите мне, соответствует ли это вашим требованиям.

ответил(а) 2014-08-29T10:34:00+04:00 5 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема