Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2017, 17:23   #1
Young_programmer
Пользователь
 
Регистрация: 25.01.2017
Сообщений: 27
Вопрос Python. генератор списка, ошибка - Failed test #1. Runtime error, TypeError: object of type 'generator' has no len()

Напишите программу, которая считывает список чисел lst из первой строки и число x из второй строки, которая выводит все позиции, на которых встречается число x в переданном списке lst.
Позиции нумеруются с нуля, если число x не встречается в списке, вывести строку "Отсутствует" (без кавычек, с большой буквы).
Позиции должны быть выведены в одну строку, по возрастанию абсолютного значения.

Код:
Код:
lst=(int[i] for i in input().split())
x=int(input())
for i in range(len(lst)-1):
    if x == lst[i]:
        lst[i]=lst[i+1]
        i=i.sort()
        print(i)
    if x != lst[i]:
        print ('Отсутствует')
        break

Показывает ошибку: Failed test #1. Runtime error:
Traceback (most recent call last):
File "jailed_code", line 4, in <module>
for i in range(len(lst)-1):
TypeError: object of type 'generator' has no len()

Пример правильного входа и выхода:
Sample Input 1:
5 8 2 7 8 8 2 4
8

Sample Output 1:
1 4 5

Последний раз редактировалось Alex11223; 12.02.2017 в 17:30.
Young_programmer вне форума Ответить с цитированием
Старый 12.02.2017, 17:33   #2
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Код:
lst = [int(s) for s in input().split()]
генератор списка выглядит примерно так.
И код нормально оформляйте.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 12.02.2017, 18:19   #3
Young_programmer
Пользователь
 
Регистрация: 25.01.2017
Сообщений: 27
По умолчанию

Хорошо.
Young_programmer вне форума Ответить с цитированием
Старый 12.02.2017, 18:37   #4
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

А вообще задача решается так:
Код:
lst=[int(i) for i in input().split()]
x=int(input())
f = True
for i,e in enumerate(lst):
    if e==x:
        print(i, end=' ')
        f = False
if f: print('Отсутствует')
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 12.02.2017, 18:42   #5
Young_programmer
Пользователь
 
Регистрация: 25.01.2017
Сообщений: 27
По умолчанию

Спасибо. Но можете сказать по поводу этого кода?
Прошу прощения, не ясно, как вставить код нормально )

Код:

Код:
lst=[int(i) for i in input().split()]
x=int(input())
for i in range(0, len(lst)-1):
    if x==lst[i]:
        i+=1
        print(i, end=' ')
    if x not in lst:
        print ('Отсутствует')
        break
Результат:
Вход:
5 8 2 7 8 8 2 4
8
Мой выход:
2 5 6
Правильный выход:
1 4 5

Я так понимаю, у меня считывается с единицы, почему не с нуля?

Последний раз редактировалось Alex11223; 12.02.2017 в 19:10.
Young_programmer вне форума Ответить с цитированием
Старый 12.02.2017, 19:10   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что не ясно? Даже картинку уже 2 раза показал:

Выделить код и нажать кнопку.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.02.2017, 22:32   #7
Young_programmer
Пользователь
 
Регистрация: 25.01.2017
Сообщений: 27
По умолчанию

Хорошо! А что можете сказать по поводу кода?
Young_programmer вне форума Ответить с цитированием
Старый 13.02.2017, 22:41   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так подумайте о том, что происходит на каждой итерации цикла в каждой строке по-очереди (и какие значения в переменных) и все станет понятно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка: TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType' Как исправить? Новичок Эл Python 2 07.07.2016 21:25
ошибка Run-time error - 217417848 (80010108): Method resize of object ListObject failed. Как исправить?!! andreptobts Microsoft Office Excel 0 11.01.2016 16:31
Run-time error 1004: Method Range of object Global failed failed sa920 Microsoft Office Excel 8 01.07.2012 22:40
Runtime error (test 1) Nikita++ Помощь студентам 1 30.11.2010 19:53
Runtime Error '1004': Range of Object '_Global' Failed panuta Microsoft Office Excel 6 17.05.2010 17:04