Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2016 20:31:49

Nemovok
От: Москва
Зарегистрирован: 2016-12-09
Сообщения: 1
Репутация: +  0  -
Профиль   Адрес электронной почты  

Не получается манипулировать элементами списка.

Здравствуйте. Я изучаю питон второй день. Знаком с c++, а тут не могу понять, как работать с элементами списка. Почему компилятор выдает ошибку?

 #!/usr/bin/python
peopleSum = int(input())
peopleInfo = []
average = None
if (peopleSum >= 1 and peopleSum <= 100):
  for i in range(peopleSum):
    peopleInfo.append(raw_input().split())
    average = (int(peopleInfo[2]) + int(peopleInfo[3]) + int(peopleInfo[4])) / 3
for i in range(len(peopleInfo)):
  print (peopleInfo[i])
print (average)

Офлайн

#2 Дек. 9, 2016 22:32:08

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Не получается манипулировать элементами списка.

в третьем питоне нет raw_input
только во втором - это навскидку. Или покажите трейс ошибки



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Дек. 10, 2016 03:13:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Не получается манипулировать элементами списка.

Nemovok
Почему компилятор выдает ошибку?
У тебя неправильно выравнена строка с average, из-за этого она оказывается в цикле и обращается к элементам списка, которых ещё нет в списке.

Так что разберись, на каком питоне ты пишешь - 2 или 3. Это либо везде raw_input(), либо везде input(). И сделай все отступы точно, потому что они играют роль фигурных скобок.



Офлайн

#4 Дек. 10, 2016 08:31:46

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Не получается манипулировать элементами списка.

учтя все замечания выше опять будет ошибка. дело в том что в список peopleInfo ты добавляешь не просто элемент а список из элементов peopleInfo.append(input().split()) а далее пытаешься превести к типу инт

 average = (int(peopleInfo[2]) + int(peopleInfo[3]) + int(peopleInfo[4]))
по индексу ( которых кстати может и не быть столько сколько индексов ты указал) и получается что ты список хочешь преобразовать в число

Отредактировано marvellik (Дек. 10, 2016 08:34:31)

Офлайн

#5 Дек. 10, 2016 19:48:31

python335
Зарегистрирован: 2016-10-19
Сообщения: 88
Репутация: +  -8  -
Профиль   Отправить e-mail  

Не получается манипулировать элементами списка.

Зачем писать average = None? Параметры переменной задаются позже тобой.

Офлайн

#6 Дек. 10, 2016 19:53:30

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не получается манипулировать элементами списка.

python335
Зачем писать average = None? Параметры переменной задаются позже тобой.
Если вы внимательно посмотрите на код в стартовом посте, то узрите, что присваивание переменной average происходит в блоке if, а использование вне блока. То есть если блок не выполнится, то вы получите исключение - обращение к необъявленой переменной.



Отредактировано FishHook (Дек. 10, 2016 19:53:41)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version