Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 13, 2016 17:21:31

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно поставить условие

Здравствуйте, не могу правильно поставить условие в задаче.
Мне нужно подсчитать количество объектов в списке, делаю так:

spisok = [1, False, True, 1, 10,  4]
count = 0
for i in spisok:
    if i is spisok[i]:
        count += 1
print(count) 
ответ должен быть == 5
Знаю что условие поставлено неверно.
Выводит ошибку:
list indices must be integers or slices, not str
Помогите пожалуйста правильно поставить условие

Отредактировано osipbananov (Апрель 13, 2016 17:24:23)

Офлайн

#2 Апрель 13, 2016 17:43:10

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

Правильно поставить условие



Офлайн

#3 Апрель 13, 2016 17:48:37

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно поставить условие

Это все что вы мне можете сказать, а по делу объясните?

Офлайн

#4 Апрель 13, 2016 18:30:08

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно поставить условие

osipbananov
Это все что вы мне можете сказать, а по делу объясните?
Что никто не объяснит?

Офлайн

#5 Апрель 13, 2016 18:45:33

Vlad_Ki
Зарегистрирован: 2016-01-22
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

Правильно поставить условие

Чувак, что бы ты понимал почему тебе ни помогают - тут написан ужасный бред. И если тебе лень даже перевести то, что тебе подсказывает компилятор, то какой смысл тебе помогать? тем более ты скорее всего не гуглил. Если бы гуглил, то не написал бы такую чушь.



lol developer

Отредактировано Vlad_Ki (Апрель 13, 2016 18:46:07)

Офлайн

#6 Апрель 13, 2016 18:48:08

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно поставить условие

Vlad_Ki
list indices must be integers or slices, not str
Ok, спасибо и на этом

Офлайн

#7 Апрель 13, 2016 20:48:55

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно поставить условие

Попробую объяснить по другому.
Есть задача:
Реализуйте программу, которая будет вычислять количество различных объектов в списке.
Два объекта a и b считаются различными, если a is b равно False.

Программе доступна переменная с названием objects, которая ссылается на список, содержащий не более 100 объектов. Выведите количество различных объектов в этом списке.
Решил при помощи создания второго списка вот так:

objects = [1, 0, 50, 11, "Чтото", True, False, 1, 0]
spisok2 = []
ans = 0
for obj in range(len(objects)):
if objects[obj] not in spisok2:
spisok2.append(objects[obj])
ans += 1
print(ans)
ответ получается 5
а правильный ответ, наверно 7
Нужно решить эту задачу при помощи is, т.к. интерпретатор похоже считает что False это 0, а True это 1.
Не знаю бред я написал или чушь, но хочется выяснить. Помогите кому не трудно

Офлайн

#8 Апрель 13, 2016 21:16:36

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Правильно поставить условие

osipbananov
количество различных объектов
Это совсем не то что вы просили ранее.
Если вас просят использовать is то оператор in тут вообще ни при чем.

Надо попарно сравнивать объекты при помощи is. одним циклом тут никак не обойдешься. Нужно писать двойной цикл. Ну например посчитайте все те объекты для которых a_i is a_j встречается ровно 1 раз.



Офлайн

#9 Апрель 13, 2016 21:20:39

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильно поставить условие

doza_and
Спасибо завтра попробую как вы написали

Офлайн

#10 Апрель 13, 2016 23:04:33

Lestoroer
Зарегистрирован: 2015-12-24
Сообщения: 88
Репутация: +  5  -
Профиль   Отправить e-mail  

Правильно поставить условие

objects = [1, 0, 50, 11, "Чтото", True, False, 0, 1,1, 50,1,1,1,0,0,0,
           2,2,2,2,2,2,2,2,2,2,2,2,2,True]
x = len(objects)
y = 0
j = 0
n = 0
while y < x:
    n = y+1
    while n < x:
        if objects[y] is objects[n]:
            j += 1
            break
        n = n+1
    y = y+1
print(x-j)
Сложная задачка, я всю голову поломал. У меня уже поздно и мне сложно думать, а также оценить правильность кода, завтра отпишитесь работает ли код.

Отредактировано Lestoroer (Апрель 13, 2016 23:07:12)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version