Try   HackMD

Практика по теме 8. Списки и массивы

На сайте http://pythontutor.ru/lessons/lists/problems/even_indices/ решить все задачи к занятию 7. Списки

Выслать архив с решениями всех задач (файлы с расширением .py) и скриншотом с сайта, на котором видно количество решенных задач и имя текущего пользователя.

Задача 1. Четные индексы

Выведите все элементы списка с четными индексами (то есть A[0], A[2], A[4], ...).

Решение
a = [int(s) for s in input().split()]
for element in a[::2]:
    print(element, end=' ')

Задача 2. Четные элементы

Выведите все четные элементы списка. При этом используйте цикл for, перебирающий элементы списка, а не их индексы!

Решение
a = [int(s) for s in input().split()]
for element in a:
    if element % 2 == 0:
        print(element, end=' ')

Задача 3. Больше предыдущего

Дан список чисел. Выведите все элементы списка, которые больше предыдущего элемента.

Решение
a = [int(s) for s in input().split()]
for i in range(1, len(a)):
    if a[i] > a[i-1]:
        print(a[i], end=' ')

Задача 4. Соседи одного знака

Дан список чисел. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет — не выводите ничего. Если таких пар соседей несколько — выведите первую пару.

Решение
a = [int(s) for s in input().split()]
for i in range(len(a) - 1):
    if a[i] * a [i+1] > 0:
        print(a[i], a[i+1])
        break

Задача 5. Больше своих соседей

Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей, и выведите количество таких элементов. Крайние элементы списка никогда не учитываются, поскольку у них недостаточно соседей.

Решение
a = [int(s) for s in input().split()]
count = 0
for i in range(1, len(a) - 1):
    if a[i-1] < a[i] > a[i+1]:
        count += 1
print(count)

Задача 6. Наибольший элемент

Дан список чисел. Выведите значение наибольшего элемента в списке, а затем индекс этого элемента в списке. Если наибольших элементов несколько, выведите индекс первого из них.

Решение
a = [int(s) for s in input().split()]
print(max(a), a.index(max(a)))

Задача 7. Шеренга

Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать. Программа получает на вход невозрастающую последовательность натуральных чисел, означающих рост каждого человека в строю. После этого вводится число X – рост Пети. Все числа во входных данных натуральные и не превышают 200.

Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Пети, то он должен встать после них.

Решение
a = [int(s) for s in input().split()]
height = int(input())
i = 0
while i < len(a) and height <= a[i]:
    i += 1
else:
    print(i + 1)

Задача 8. Количество различных элементов

Дан список, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных элементов.

Решение
a = [int(s) for s in input().split()]
count = 0
for i in range(1, len(a)):
    if a[i] > a[i-1]:
        count += 1
print(count + 1)

Задача 9. Переставить соседние

Переставьте соседние элементы списка (A[0] c A[1], A[2] c A[3] и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.

Решение
a = [int(s) for s in input().split()]
for i in range(0, len(a) - 1, 2):
    a[i], a[i+1] = a[i+1], a[i]
print(' '.join([str(i) for i in a]))

Задача 10. Переставить min и max

В списке все элементы различны. Поменяйте местами минимальный и максимальный элемент этого списка.

Решение
a = [int(s) for s in input().split()]
min_index = a.index(min(a))
max_index = a.index(max(a))
a[min_index], a[max_index] = a[max_index], a[min_index]
print(' '.join([str(i) for i in a]))

Задача 11. Удалить элемент

Дан список из чисел и индекс элемента в списке k. Удалите из списка элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k. Программа получает на вход список, затем число k. Программа сдвигает все элементы, а после этого удаляет последний элемент списка при помощи метода pop() без параметров.

Программа должна осуществлять сдвиг непосредственно в списке, а не делать это при выводе элементов. Также нельзя использовать дополнительный список. Также не следует использовать метод pop(k) с параметром.

Решение
a = [int(s) for s in input().split()]
k = int(input())
for i in range(k, len(a) - 1):
    a[i] = a[i + 1]
a.pop()
print(' '.join([str(i) for i in a]))