Форум сайта python.su
Есть такая задача:
Напишите программу, которая считывает список чисел lst из первой строки и число xx из второй строки, которая выводит все позиции, на которых встречается число xx в переданном списке lst.
Позиции нумеруются с нуля, если число x не встречается в списке, вывести строку “Отсутствует” (без кавычек, с большой буквы).
Позиции должны быть выведены в одну строку, по возрастанию абсолютного значения.
Sample Input 1:
5 8 2 7 8 8 2 4
8
Sample Output 1:
1 4 5
Встал в ступор по ней. Написал только такое:
b = [int(i) for i in input().split()] w = int(input()) y = [] if b.index(w) == 0: print('Отсутствует') if b.index(w) > 0: y += b.index(w)
Отредактировано MagentaIceberg (Март 26, 2021 15:31:43)
Офлайн
Сделай свою задачу на листке бумаги, и проследи за своими действиями,обрати внимание на свой алгоритм.Расскажи здесь как ты мыслишь
Онлайн
MagentaIcebergникак, нет волшебной комманды “вывести все индексы”, нужно в цикл пройтись по всем элементам, и записать в отдельный список все индексы если элемент равен искомому.
Как вывести все индексы?
[code python][/code]
Отредактировано PEHDOM (Март 26, 2021 15:57:21)
Офлайн
xam1816да, надо бы такую привычку завести)
Сделай свою задачу на листке бумаги, и проследи за своими действиями,обрати внимание на свой алгоритм.Расскажи здесь как ты мыслишь
Офлайн
PEHDOMмерси, обдумаю!
Офлайн
PEHDOMхватило только на такое:
b = [int(i) for i in input().split()] w = int(input()) y = [] if b.index(w) == False: print('Отсутствует') b.enumerate(w) for i in b: y += b.index(w) print (*y)
Отредактировано MagentaIceberg (Март 28, 2021 18:30:44)
Офлайн
MagentaIceberg
Напишите программу, которая считывает список чисел lst из первой строки и число xx из второй строки, которая выводит все позиции, на которых встречается число xx в переданном списке lst.
Позиции нумеруются с нуля, если число x не встречается в списке, вывести строку “Отсутствует” (без кавычек, с большой буквы).
Позиции должны быть выведены в одну строку, по возрастанию абсолютного значения.
>>> def f(): ... lst = list(map(int, input().split())) ... num = int(input()) ... out = [i for i, e in enumerate(lst) if num == e] ... if out: ... print(*out) ... else: ... print('Отсутствует') ... >>> f() 5 8 2 7 8 8 2 4 8 1 4 5 >>> f() 1 2 3 4 Отсутствует >>>
Отредактировано py.user.next (Март 29, 2021 16:14:58)
Офлайн
py.user.nextВыполняется, единственно, убрал создание функции, тк компилятор в курсе почему-то не принимал с ней.
Отредактировано MagentaIceberg (Март 29, 2021 11:09:33)
Офлайн
MagentaIcebergМожешь в книге Dive Into Python 3 прочитать про включения (comprehension)
Единственно, уточню по этой строчке: i for i, e in enumerate(lst) - не до конца понимаю работу, можете объяснить как работает синтаксис. Например, цикл на i при том, что i ни где не инициализирован, да и ‘e’ тоже не инициализирован(понимаю, что если равен num, то мы как раз и запишем индексы, но как..)?
>>> lst = ['a', 'b', 'c', 'd', 'e'] # добавь сюда буквы и перезапусти >>> >>> list(enumerate(lst)) [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')] >>> >>> for x, y in [(1, 2), (3, 4)]: # добавь сюда пары точек и перезапусти ... print(x, y) ... 1 2 3 4 >>> >>> for number, letter in enumerate(lst): # переименуй переменные number и letter и перезапусти ... print(number, letter) ... 0 a 1 b 2 c 3 d 4 e >>> >>> for i in range(3): ... print(i) ... 0 1 2 >>> [i for i in range(3)] [0, 1, 2] >>> >>> [i * i for i in range(5)] [0, 1, 4, 9, 16] >>> >>> [(i, i * i) for i in range(5)] [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)] >>>
Отредактировано py.user.next (Март 29, 2021 16:35:55)
Офлайн
py.user.nextого! Очень многогранный, конечно, синтаксис!
Офлайн