PYTHON. Задачи на списки. Каждый, изучающий Python, должен зaкрепить свoи знания при помoщи задач. Представляем Вашему внимaнию зaдачи на списки с решением.
При проблемах Вы всегдa можете oбратиться к первонaчальной теме
Задача 1:
Нaпишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его cоседей. Для элeментов списка, являющиxся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся cписок «1 3 5 6 10», то на выход ожидается cписок «13 6 9 15 7».
Если на вход пришло только однo число, надо вывести его же.
Вывoд должен содержать одну строку с чиcлами новoго списка, разделёнными пробeлом.
Источник: informatikaexpert.ru
Урок 2
Типы данных
Разбираем основные типы данных в Python: списки, кортежи, словари, множества и т. д. Рассматриваем часто используемые способы ввода-вывода данных. Решаем задачи.
Решение задач на Python #2
Урок 2
Типы данных
Разбираем основные типы данных в Python: списки, кортежи, словари, множества и т. д. Рассматриваем часто используемые способы ввода-вывода данных. Решаем задачи.
Предыдущий урок
Урок 1. Установка. Синтаксис.
Следующий урок
Урок 3. Функции, условные выражения и циклы
ТЕОРЕТИЧЕСКИЙ БЛОК
В КОНЦЕ УРОКА ЕСТЬ ВИДЕО
Языки высокого уровня работают не с битами и байтами, а с более абстрактными структурами данных — типами, поэтому эти языки принято считать типизированными.
- Явная / неявная
- Статическая / динамическая
Типизация;Определение;Пример
Явная;Тип новых переменных, функций и их аргументов необходимо задавать явно.;C++, Pascal, C# Неявная;Языки с неявной типизацией перекладывают эту задачу на компилятор / интерпретатор. ;PHP, Python, JavaScript Статическая;Конечные типы переменных и функций устанавливаются на этапе компиляции. ;C, Java, C# Динамическая;Все типы выясняются во время выполнения программы.;Python, JavaScript
Если подвести итог относительно языка, ради которого мы тут собрались, то: Python — это язык с неявной(динамической) типизаций. На практике это значит, что при создании переменной намеренно указывать ее тип НЕ нужно. Идем дальше.
- Встроенные в интерпретатор (built-in) и
- Не встроенные, которые можно использовать после импорта соответствующих модулей.
- int – целое число
- float – число с плавающей точкой
- complex – комплексное число
- list– список
- tuple – кортеж
- str
- bytes – байты
- bytearray – массивы байт
- memoryview – специальные объекты для доступа к внутренним данным объекта через protocol buffer
- set– множество
- frozenset– неизменяемое множество
- dict – словарь
Последовательности в Python
if для робота яндекс учебник
Последовательность(Sequence Type) — итерируемый контейнер, к элементам которого есть эффективный доступ с использованием целочисленных индексов.
Последовательности могут быть как изменяемыми, так и неизменяемыми. Размерность и состав созданной однажды неизменяемой последовательности не может меняться, вместо этого обычно создаётся новая последовательность.
- Список (list) — изменяемая
- Кортеж (tuple) — неизменяемая
- Диапазон (range) — неизменяемая
- Строка (str, unicode) — неизменяемая
Задачи по темам
Решаем задачи и отвечаем на вопросы по теме «Списки»: работаем с типом данных list
Специфика типа данных словарь (dict) в Python, характеристики. Примеры использования словарей, задачи с решениями.
Специфика типа данных кортеж (tuple) в Python, методы, операции. Примеры использования кортежей, задачи с решениями.
Специфика типа данных множества (set) в Python, методы, операции. Примеры использования множеств, задачи с решениями.
Списки в Python — упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы элементов могут отличаться).
Чтобы использовать списки, их нужно создать. Создать список можно двумя способами(их вообще больше, но для простоты рассмотрим два самых часто используемых).
Способ 1. Использовать квадратные скобки.
# Пустой список >>> empty_list = [] # Список, содержащий буквы >>> letters_list = [‘a’, ‘b’, ‘c’] # Список с элементами разных типов >>> rnd_list = [‘a’, ‘b’, True, [1, 2, 3]]
Способ 2: Использовать метод list :
# Создаем список на основе строки ‘abc’ >>> list(‘abc’) [‘a’, ‘b’, ‘c’]
Т. о. список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.
Далее переходим к действиям со списками. Рассмотрим основные методы:
list.append(x);Добавляет элемент в конец списка list.extend(L);Расширяет список list, добавляя в конец все элементы списка L list.insert(i, x);Вставляет на i-ый элемент значение x list.remove(x);Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует list.count(x);Возвращает количество элементов со значением x list.reverse();Разворачивает список list.clear();Очищает список
ВАЖНО!
Нужно отметить, что методы списков, в отличие от строковых методов, изменяют сам список, а потому результат выполнения не нужно записывать в эту переменную.
Т. о. список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.
Далее переходим к действиям со списками. Рассмотрим основные методы:
# Вставляем элемент 2 на место с индексом 1 >>> lst = [1, 3, 4] >>> lst.insert(1, 2) >>> print(lst) [1, 2, 3, 4] # Добавляем элемент 5 в конец списка >>> lst.append(5) >>> print(lst) [1, 2, 3, 4, 5] # Развернем список >>> lst.reverse() >>> print(lst) [5, 4, 3, 2, 1] # Получим элемент по индексу 2(помним, что индексация начинается с 0) >>> print(lst[2]) 3 # Удалим элемент со значением 4 >>> lst.remove(4) >>> print(lst) [5, 3, 2, 1]
Списковое включение (List comprehension) в Python
Одна из фишек языка Python, которой комфортно пользоваться – list comprehension. Списковое включение – это некий синтаксический сахар, позволяющий упростить генерацию последовательностей (списков, множеств, словарей, генераторов).
Кортеж(tuple) – это неизменяемая структура данных, которая по своему подобию очень похожа на список. Кортеж, по сути — неизменяемый список.
- Защита от дурака. То есть кортеж защищен от изменений, как намеренных(что плохо), так и случайных (что хорошо).
- Кортежи в памяти занимают меньший объем по сравнению со списками.
- Возможность использовать кортежи в качестве ключей словаря(словари рассмотрим далее). Список в качестве ключа использовать не получится.
Способ 1. Использовать метод tuple() :
# Создаем кортеж из набора цифр >>> tpl = tuple((1, 2, 3, 4)) >>> print(tpl) (1, 2, 3, 4) # Создаем кортеж из строки >>> tpl = tuple(‘Строка’) >>> print(tpl) (‘С’, ‘т’, ‘р’, ‘о’, ‘к’, ‘а’)
Способ 2. Воспользоваться круглыми скобками () :
>>> tpl = (1, 2, 3, 4) >>> print(tpl) (1, 2, 3, 4)
- Можно применять операции над списками, не изменяющие список (сложение, умножение на число, методы index() и count() и некоторые другие операции).
- Доступ к элементам кортежа осуществляется также как к элементам списка – через указание индекса. Но, как уже было сказано – изменять элементы кортежа нельзя!
- Удалить отдельные элементы из кортежа невозможно. Но можно удалить кортеж целиком.
- На базе кортежа можно создать список, верно и обратное утверждение.
Словари(dict) в Python — неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.
Создать словарь можно двумя способами(их вообще 4, но для простоты рассмотрим два самых часто используемых).
Способ 1. Использовать фигурные скобки <> .
# Пустой словарь >>> empty_dict = <> # Словарь с двумя парами ключ-значение >>> value_dict =
Способ 2: Использовать метод dict() :
# Обратите внимание, что # 1) для ключей словаря не указываются скобки # 2) вместо двоеточия используется знак равенства >>> dct = dict(key1=’value1′, key2=4)
Далее переходим к действиям со словарями. Рассмотрим основные методы:
dict.get(key[, default]);Возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None). dict.items();Возвращает пары (ключ, значение) dict.keys();Возвращает ключи в словаре dict.values();Возвращает значения в словаре dict.update([other]);Обновляет словарь, добавляя пары (ключ, значение) из словаря other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!). dict.pop(key[, default]);Удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение) dict.clear();Очищает словарь
Рассмотрим несколько примеров применения вышеперечисленных команд:
# Создать словарь >>> dct = dict(key1=’value1′, key2=4) # Получить значение по ключу(ВЫЗЫВАЕТ исключение # при отсутствии такого ключа в словаре) >>> dct[‘key1’] ‘value1’ # Получить значение по ключу(НЕ вызывает исключение # при отсутствии такого ключа в словаре) >>> dct.get(‘key1’) ‘value1’ # Получить пары ключ-значение >>> dct.items() dict_items([(‘key1’, ‘value1’), (‘key2’, 4)]) # Получить все ключи в словаре >>> dct.keys() dict_keys([‘key1’, ‘key2’]) # Получить значение по ключу, после чего удалить >>> dct.pop(‘key1’) ‘value1’ >>> print(dct) # Добавить новое значение в словарь >>> dct[‘k3’] = ‘v3’ >>> print(dct)
Обратите внимание
Присвоение по новому ключу расширяет словарь, присвоение по существующему ключу перезаписывает его, а попытка извлечения несуществующего ключа порождает исключение. Для избежания исключения можно действовать в соответствии с одной из двух стратегий:
1) Для получения элемента использовать метод dict.get(key[, default]) (см. таблицу)
2) Перехватывать и обрабатывать исключение
Множество(set) – это «контейнер», содержащий не повторяющиеся элементы в случайном порядке.
Создать множество можно 2 способами:
Способ 1. Использовать метод set() :
# Создаем множество из набора цифр >>> st = set() >>> print(st) # Создаем множество из строки >>> st = set(‘Строка’) >>> print(st)
Способ 2. Воспользоваться фигурными скобками <> :
>>> st = >>> print(st) # А вот пустое множество так создать нельзя # Потому что при такой записи получим словарь >>> st = <> >>> type(st)
Как работать с множествами? Рассмотрим основные операции:
set.add(elem); Добавляет элемент в множество set.remove(elem);Удаляет элемент из множества. KeyError, если такого элемента не существует. set.discard(elem);Удаляет элемент, если он находится в множестве. set.pop();Удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым. len(s);Число элементов в множестве. x in s;Принадлежит ли x множеству s set1 == set2;Все элементы set1 принадлежат set2, все элементы set2 принадлежат set1 set.issubset(other) или set
Неизменяемое множество (Frozenset)
Единственное отличие set от frozenset заключается в том, что set — изменяемый тип данных, а frozenset — нет. Примерно похожая ситуация со списками и кортежами.
Например, если создать неизменяемое множество frozen_set и попробовать вызвать для него метод frozen_set.add(‘2’) , нас ждет провал — добавить новый элемент в уже существующее неизменяемое множество нельзя.
Создать неизменяемое множество можно с помощью метода frozenset() :
Например, f_st = frozenset(‘Word’)
Ввод-вывод данных в Python. Команда print().
- Вывести данные в консоль
- Ввести данные с клавиатуры
- Записать данные в файл
- Прочитать данные из файла
Рассмотрим основные способы использования данной функции:
Терминал — интерактивный режим
# Вывод обычной строки >>> print(‘Строка’) Строка # Вывод конкатенации 2 строк >>> print(‘Стр’ + ‘ока’) Строка # Вывод числа >>> print(1) 1 # А вот так не получится >>> print(‘Строка ‘ + 1) Traceback (most recent call last): File «», line 1, in TypeError: can only concatenate str (not «int») to str # Число нужно привести к типу String >>> print(‘Строка ‘ + str(1)) Строка 1
Пожалуй, на этом с теорией будет достаточно. Переходим к практике.
Еще несколько встроенных функций: dir(), help(), len()
В языке Python есть небольшой набор очень полезных встроенных функций. Все остальные функции распределены по модулям. В самом деле, это удачное проектное решение позволяет предотвратить разбухание ядра языка, как это произошло с некоторыми другими скриптовыми языками (например, Visual Basic). Рассмотрим их подробнее:
Команда;Назначение;Пример
type(obj);Функция type возвращает тип произвольного объекта. Возможные значения типов перечислены в модуле types. Определение типа полезно в функциях, способных обрабатывать данные нескольких типов. Функция type воспринимает объект произвольного типа и возвращает его тип.
Аргумент действительно может быть произвольного типа: число, строка, список, словарь, кортеж, функция, класс, модуль и даже сам тип.;type(1) # class ‘int ‘ help([obj]);Вызывает встроенную справочную систему. Если передана строка, то производится попытка интерпретировать её как имя модуля, функции, класса, метода, или раздела документации, после чего справка выводится в консоль. Если передан объект любого другого типа, страница справки генерируется по его данным. Функция предназначена в основном для использования в интерактивном режиме интерпретатора. Если функция вызвана без аргументов, справочная система запускается в интерактивном режиме.;help(len) # len(obj, /) Return the number of items in a container. dir([obj]);Возвращает список атрибутов и методов произвольного объекта: модуля, функции, строки, списка, словаря и т. д.;dir(‘str’) # [‘__add__’, ‘__class__’, ‘__contains__’, ‘__delattr__’, ‘__dir__’ . ] len(obj);Возвращает число элементов в контейнерах: объекте-последовательности (строка, байты, кортеж, список, диапазон) или объекте-коллекции (словарь, множество, неизменяемое множество и пр.).;len([1, 2, ‘a’]) # 3
Источник: smartiqa.ru
Разбор типовых задач по программированию на языке Python при подготовке к ОГЭ по информатике.
Р Т.к. количество вводимых чисел неизвестно, то мы не можем использовать цикл for. В данном случае необходим цикл с условием (с предусловием). Он продолжит свою работу, пока введенное число не равно 0. ешение 1. k Вводим первое число. Этот ввод должен осуществляться за пределами цикла = 0 a = int(input()) while a != 0: Ввод второго и всех последующих чисел последовательности.
Обработка вводимого числа (если оно кратно 4, то количество должно вырасти на 1) if a % 4 ==0: k += 1 a = int(input()) p Задаем в переменную a любое число отличное от 0, например 1. Это необходимо, чтобы попасть в цикл. Но это число не является элементом последовательности и не нуждается в обработке. Поэтому уже в цикле перебиваем его реальным числом. Однако, при решении таким способом есть проблема обработки числа 0, которое не входит в последовательность, но вводится в цикле и является кратным 4. Следовательно, количество чисел кратных 4 будет на 1 больше. Этот момент необходимо учитывать при выводе. Либо можно изменить условие на if a % 4 ==0 and a != 0: rint (k) Решение 2. k = 0 a = 1 while a != 0: a = int(input()) if a % 4 ==0: k += 1 print (k-1)
-80%
Источник: videouroki.net