


Задача 3. Универсальная программа
помогите пожалуйста
только до этого додумался... дальше тупик
string = input('Ввести строку: ') # Ввел строку
sym = []
for i, x in enumerate(string): # разбивка на индекс и значение
if i % 2 == 0: # Ищу это значение
sym.append(x)
# print(x,end='') # Вывод индекс, значения выше в строку
print(sym)
Один заказчик попросил нас написать небольшой скрипт для своих криптографических нужд. При этом он заранее предупредил, что скрипт должен уметь работать с любым итерируемым типом данных.
Напишите функцию, которая возвращает список из элементов итерируемого объекта (кортежа, строки, списка, словаря), у которых индекс чётный.
Пример 1:
Допустим, есть такая строка: 'О Дивный Новый мир!'
Результат: ['О', 'Д', 'в', 'ы', ' ', 'о', 'ы', ' ', 'и', '!']
Пример 2:
Допустим, есть такой список: [100, 200, 300, 'буква', 0, 2, 'а']
Результат: [100, 300, 0, 'а']
Примечание: для проверки типа можно использовать функцию
isinstance(<элемент>, <тип данных>), которая возвращает True, если элемент принадлежит к этому типу данных, и возвращает False в противном случае.
def result(data):
if isinstance(data, dict):
return [data[item] for idx, item in enumerate(data) if idx % 2 == 0]
else:
return [item for idx, item in enumerate(data) if idx % 2 == 0]
user_data = [100, 200, 300, 'буква', 0, 2, 'а']
#ser_data = 'О Дивный Новый мир!
print(result(user_data))
data_tuple = tuple(user_data)
print(result(data_tuple))
data_list = list(user_data)
print(result(data_list))
data_dict = dict((idx, sym) for idx, sym in enumerate(user_data))
print(result(data_dict))
Здесь подрузамевается, что пользователь вводит это не через input, а просто есть какая-то переменная со значением, например res = 'Какой хороший день' или res = [110, 50](для того, чтобы инициализировать тип данных и потом проверить его с помощью isinstance) , я сам очень долго с этим мучался, пробовал методы endswith и startswith(это если пробовать делать с input), но там такое условие получается, что код становится просто нечитаемым, плюс к этому, если использовать в цикле for enumerate(), когда тип данных res будет dict, то эта ф-ция вернет лишь индекс пары key:value + key, то есть для value придется что-то другое придумывать, мне кажется это просто недоработка, ведь если убрать словарь из условия, то и проверка на тип данных не потребуется.