Задачи по Python 3 для начинающих от Tproger и GeekBrains
Вместе с факультетом Python-разработки GeekUniversity собрали для вас несколько простых задач по Python для обучения и тренировки. Их можно решать в любом порядке.
Обратите внимание, что у любой задачи по программированию может быть несколько способов решения. Чтобы посмотреть добавленный нами вариант решения, кликните по соответствующей кнопке. Все приведённые варианты написаны на Python 3.
***
Задача 1
Есть список a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89].
Выведите все элементы, которые меньше 5.
Самый простой вариант, который первым приходит на ум — использовать цикл for:
for elem in a:
if elem < 5:
print(elem)
Также можно воспользоваться функцией filter, которая фильтрует элементы согласно заданному условию:
print(list(filter(lambda elem: elem < 5, a)))
И, вероятно, наиболее предпочтительный вариант решения этой задачи — списковое включение:
print([elem for elem in a if elem < 5])
Задача 2
Даны списки:
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89];
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13].
Нужно вернуть список, который состоит из элементов, общих для этих двух списков.
Можем воспользоваться функцией filter:
result = list(filter(lambda elem: elem in b, a))
Или списковым включением:
result = [elem for elem in a if elem in b]
А можно привести оба списка к множествам и найти их пересечение:
result = list(set(a) & set(b))
Однако в таком случае каждый элемент встретится в результирующем списке лишь один раз, т.к. множество поддерживает уникальность входящих в него элементов. Первые два решения (с фильтрацией) оставят все дубли на своих местах.
Задача 3
Отсортируйте словарь по значению в порядке возрастания и убывания.
result = {}
for d in (dict_a, dict_b, dict_c):
result.update(d)
А можно с помощью «звёздочного» синтаксиса:
result = {**dict_a, **dict_b, **dict_c}
О звёздочном синтаксисе можно прочитать в нашей статье.
Задача 5
Найдите три ключа с самыми высокими значениями в словаре my_dict = {'a':500, 'b':5874, 'c': 560,'d':400, 'e':5874, 'f': 20}.
Можно воспользоваться функцией sorted:
result = sorted(my_dict, key=my_dict.get, reverse=True)[:3]
Аналогичный результат можно получить с помощью функции nlargest из модуля heapq:
from heapq import nlargest
result = nlargest(3, my_dict, key=my_dict. get)
Читайте также: Всё о сортировке на Python
Задача 6
Напишите код, который переводит целое число в строку, при том что его можно применить в любой системе счисления.
Второй аргумент функции int отвечает за указание основания системы счисления:
print(int('ABC', 16))
Задача 7
Нужно вывести первые n строк треугольника Паскаля. В этом треугольнике на вершине и по бокам стоят единицы, а каждое число внутри равно сумме двух расположенных над ним чисел.
def pascal_triangle(n):
row = [1]
y = [0]
for x in range(max(n, 0)):
print(row)
row = [left + right for left, right in zip(row + y, y + row)]
pascal_triangle(6)
Задача 8
Напишите проверку на то, является ли строка палиндромом. Палиндром — это слово или фраза, которые одинаково читаются слева направо и справа налево.
Тут всё просто, достаточно сравнить строку с её обратной версией, для чего можно использовать встроенную функцию reversed:
Напишите программу, которая принимает имя файла и выводит его расширение. Если расширение у файла определить невозможно, выбросите исключение.
def get_extension(filename):
filename_parts = filename.split('.')
if len(filename_parts) < 2: # filename has no dots
raise ValueError('the file has no extension')
first, *middle, last = filename_parts
if not last or not first and not middle:
# example filenames: . filename, filename., file.name.
raise ValueError('the file has no extension')
return filename_parts[-1]
print(get_extension('abc.py'))
print(get_extension('abc')) # raises ValueError
print(get_extension('.abc')) # raises ValueError
print(get_extension('.abc.def.')) # raises ValueError
Задача 13
При заданном целом числе n посчитайте n + nn + nnn.
Напишите программу, которая принимает текст и выводит два слова: наиболее часто встречающееся и самое длинное.
import collections
text = 'lorem ipsum dolor sit amet amet amet'
words = text.split()
counter = collections.Counter(words)
most_common, occurrences = counter.most_common()[0]
longest = max(words, key=len)
print(most_common, longest)
***
Хотите вырасти от новичка до профессионала? Факультет Python-разработки GeekUniversity даёт год опыта для вашего резюме. Обучайтесь на практических заданиях, по-настоящему освойте Python и станьте ближе к профессии мечты.
Узнать больше
Сборники задач. Часть 1 | PyNSK
Теория без практики — это ничто. Предлагаем ссылки на сборники задач.
http://acm.timus.ru/
Timus Online Judge — это крупнейший в России архив задач по олимпиадному программированию с автоматической проверяющей системой (по заверению сайта).
Что решать: Первые задачи олимпиад можно решить без подготовки. Для решения остальных задач требуется математическая подготовка.
Тип задач: математические, алгоритмические
Сложность: средняя, высокая
Оба сервиса обучают практике программирования через игру. Вы играете в игру, а шаги в ней — это решение задач по программирования.
Что решать: все задачи, от начала до конца. Сначала простые задачи, а дальше все сложнее и сложнее.
Тип задач: математические, на синтаксис
Сложность: низкая, средняя.
http://codeforces.com/
Codeforces — русскоязычный проект, объединяющий людей, которые интересуются и участвуют в соревнованиях по программированию. С одной стороны Codeforces является социальной сетью, посвященной программированию и соревнованиям по программированию. С другой стороны — это площадка, где регулярно проводятся соревнования.
Что решать: проект существует давно, поэтому архив задач огромный. Можно выбирать на свой вкус и погружаться.
Тип задач: алгоритмические
Сложность: средняя, высокая
https://www.topcoder.com
Наверное, самая известная платформа задач. Возможно слышали об ней, как об олимпиадной системе. Регулярно проводятся соревнования с призовым фондом.
Рейтинг в этой системе катируется у некоторых работодателей.
Что решать: все что найдете в разделе https://www.topcoder.com/challenges/develop/active/?pageIndex=1
Тип задач: алгоритмические
Сложность: средняя, высокая
https://www. codechef.com/
Задач на сайте достаточно. Все по принципу олимпиадного программирования (вход, выход, время исполнения). Задачи можно фильтровать по сложности.
В wiki есть разбор нескольких задач.
Тип задач: алгоритмические
Сложность: низкая, средняя
https://projecteuler.net
Известный сборник небольших математических задач. На сервисе более 500 задач. Довольно часто добавляют задачи еще.
Хоть и запрещено правилами, но на github выкладывают решение задач.
Что решать: двигаться от самых простых, как только не сможете решить, то браться за математику. Сервис позволяет подтянуть основы математики.
Тип задач: математические
Сложность: низкая, средняя, высокая
http://opk.nsu.ru/
Сборник задач для вводного курса по программированию на ФФ НГУ. Каждая задача имеют свою сложность.
Задачи не сложные, позволяют начать программировать, а не читать теорию.
Что решать: все задачи
Тип задач: на синтаксис
Сложность: низкая
Date
Categories
Учебные материалы
Tags
Share on Twitter
Share on Facebook
Предлагаем почитать:
Сможете ли вы решить эти 3 «простые» задачи на Python? | by Olga Sayfudinova | NOP::Nuances of Programming
Правильное решение вас удивит
Попробуйте решить эти задачи самостоятельно, а потом проверьте себя по готовым ответам.
Подсказка: У всех задач есть нечто общее. Так что если разобраться в решении первой задачи, то решать остальные будет гораздо проще.
Представьте, что у вас есть несколько переменных:
x = 1 y = 2 l = [x, y] x += 5a = [1] b = [2] s = [a, b] a.append(5)
Какой результат вам даст вывод l и s?
Давайте определим простую функцию:
def f(x, s=set()): s.add(x) print(s)
Что произойдет при вызове:
>>f(7) >>f(6, {4, 5}) >>f(2)
?
Давайте определим две простые функции:
def f(): l = [1] def inner(x): l.append(x) return l return innerdef g(): y = 1 def inner(x): y += x return y return inner
Какой результат вы получите при выполнении следующих команд?
Насколько вы уверены в своих ответах? Давайте узнаем правильное решение.
>>print(l) [1, 2]>>print(s) [[1, 5], [2]]
Почему второй список реагирует на изменение своего первого элемента a.append(5), а первый список полностью игнорирует похожее изменение x+=5?
Давайте узнаем, что произойдет:
>>f(7) {7}>>f(6, {4, 5}) {4, 5, 6}>>f(2) {2, 7}
Стоп, а разве последний вывод не должен быть {2}?
Результаты будут следующими:
>>f_inner = f() >>print(f_inner(2)) [1, 2]>>g_inner = g() >>print(g_inner(2)) UnboundLocalError: local variable ‘y’ referenced before assignment
Но почему g_inner(2) не выводит 3? Как так вышло, что внутренняя функция f() запоминает свою внешнюю область видимости, а внутренняя функция g() — нет? Они же практически одинаковые!
Что, если я скажу вам, что столь странное поведение обусловлено разницей между изменяемыми и неизменяемыми объектами в Python?
Изменяемые объекты (списки, наборы или словари) могут изменяться (мутировать) на месте.Неизменяемые объекты (целые числа, строки и кортежи) не могут изменяться. «Изменение» таких объектов приводит к созданию нового объекта.
Объяснение задачи 1
x = 1 y = 2 l = [x, y] x += 5a = [1] b = [2] s = [a, b] a.append(5)>>print(l) [1, 2]>>print(s) [[1, 5], [2]]
Поскольку x является неизменяемым объектом, операция x+=5 не меняет исходный объект, а создает новый. Первый элемент списка все еще указывает на первоначальный объект, поэтому его значение остается прежним.
a — это изменяемый объект. Поэтому a.append(5) изменяет исходный объект, а список s «видит» эти изменения.
Первые два результата очевидны: сначала значение 7 добавляется к пустому множеству по умолчанию, и в результате получается {7}. Потом значение 6 добавляется к набору {4, 5}, и на выходе получается {4, 5, 6}.
Но затем происходит нечто странное: значение 2 добавляется не к стандартному пустому множеству, а к набору {7}. Почему? Стандартное значение необязательного параметра s вычисляется только один раз, ведь только при первом вызове s запускается как пустое множество. А поскольку s является изменяемым объектом, то после вызова f(7) он изменяется на месте. Второй вызов f(6, {4, 5}) не влияет на исходный параметр, поскольку представленное множество {4, 5} скрывает его. Иначе говоря, {4, 5} является другой переменной. Третий вызов f(2) использует ту же переменную s, которая была в первом вызове. Но в этот раз s вызывается не как пустое множество, а со своим предыдущим значением {7}.
Вот почему вам не следует использовать изменяемые аргументы по умолчанию. В таком случае функция будет изменяться следующим образом:
def f(x, s=None): if s is None: s = set() s.add(x) print(s)
Объяснение задачи 3
def f(): l = [1] def inner(x): l.append(x) return l return innerdef g(): y = 1 def inner(x): y += x return y return inner>>f_inner = f() >>print(f_inner(2)) [1, 2]>>g_inner = g() >>print(g_inner(2)) UnboundLocalError: local variable ‘y’ referenced before assignment
В этой задаче мы имеем дело с замыканием, при котором внутренние функции запоминают, как выглядело их внешнее пространство имен в момент определения. По крайней мере, они должны это делать. А вторая функция с завидной невозмутимостью делает вид, что никогда не слышала про внешнюю область видимости.
Почему так? Когда мы выполняем l. append(x), изменяемый объект, созданный в момент определения, изменяется, но переменная продолжает указывать на тот же адрес в памяти. Однако попытка изменить неизменяемую переменную во второй функции y += x приводит к тому, что y начинает указывать на другой адрес в памяти. Исходная y больше не запоминается, и возникает ошибка UnboundLocalError.
В Python очень важно разграничивать изменяемые и неизменяемые объекты. Во избежание странного поведения кода (как в примерах выше) нужно помнить о главном:
не используйте изменяемые аргументы по умолчанию;
не пытайтесь изменять неизменяемые замкнутые переменные во внутренних функциях.
Читайте также:
Читайте нас в телеграмме, vk и Яндекс.Дзен
Задачи на цикл while на Python (Питон) – тестирование от Skills4U
Наш интерактивный тренажер поможет подготовиться к ЕГЭ по информатике. Среди предложенных платформой тем имеется раздел, содержащий задачи на цикл while Python. Он состоит примерно из 20 заданий, в каждом из которых вам нужно будет написать ответ на заданный вопрос.
В настоящее время Python считается одним из самых перспективных и востребованных языков программирования. Освоив основные правила, вы сможете с легкостью решать задачи, а впоследствии получить профессию программиста. Известно, что цикл while в Питоне – один из самых универсальных. Он выполняет свою задачу медленно, но уверенно, пока условие цикла не изменится.
Для того чтобы быстро освоить Питон, цикл while, задачи необходимо решать последовательно. По итогам тестирования система формирует рейтинг ученика и предлагает один из вариантов дальнейших занятий. Обращаем ваше внимание, что первичный входной тест вы можете пройти бесплатно, но для регулярных занятий потребуется зарегистрироваться и внести небольшую плату.
Вам предстоит ответить на 19 вопросов, написав ответы в указанной графе. Если ответ верный, вам сразу предлагается следующий вопрос. В случае ошибки вы увидите на экране правильный ответ. Это очень важно, так как экономит массу времени. Образовательная платформа Skills4u предоставляет задачи на цикл while Python с решением. Верный результат появляется сразу после введения неправильного ответа, и вы имеете возможность исправить ошибку.
В программировании оператор цикла while Python предназначен для организации циклического процесса в программе. Он используется в тех случаях, когда количество повторений цикла заранее неизвестно (в отличие от оператора for). В операторе while следующий шаг итерации цикла определяется на основе истинности некоторого условия.
Общее время выполнения теста на цикл while в Python – примерно 5-10 минут. Получив доступ после регистрации, высможете заниматься в любое удобное время. Наш интерактивный тренажер принимает к сведению результаты ответов и формирует следующие задания с учетом уровня вашей подготовки. Мы рекомендуем пройти тест повторно в этот же день через несколько часов, а затем оттачивать навык нахождения правильных решений в течение следующих 4-5 дней.
"""Комплексная задача.
Главный модуль.
"""
import json
import csv
import database
import employee
# Это пример кода, он может быть произвольно усложнен
# в рамках ограничений темы
#
# Требования:
#
# - функции сохранения и загрузки перенесите в отдельный модуль;
# - вычисления и фильтры - в отдельный модуль;
# - импортируйте новые модули, скорректируйте main.py;
# - добавьте if __name__ == "__main__" в main.py.
# Каждый модуль должен иметь наименование, соответствующее
# выбранному варианту
if __name__ == "__main__":
try:
db = database.load_db("data.json")
while True:
print("\n-----")
print("Меню")
print("-----")
print("1. Список сотрудников.")
print("2. Фильтр по языку программирования.")
print("3. Средний рост сотрудников, моложе указанного г. р.")
print("\nВыберите пункт меню или нажмите ENTER для выхода: ",
end="")
answer = input()
if answer == "1":
print("Содержимое базы данных ({}):".format(len(db)))
for i, item in enumerate(db, start=1):
print("{}.".format(i))
employee.print_employee(item)
elif answer == "2":
lang = input("Введите язык программирования: ")
# "Нормализация" наименования языка на случай ошибки при вводе
lang = lang.capitalize()
res = employee.employees_filter(db, lang)
if len(res) > 0:
print("Список сотрудников со знанием "
"языка программирования {} ({}):".
format(lang, len(res)))
for i, item in enumerate(res, start=1):
print("{}. ".format(i))
employee.print_employee(item)
# Сохранение результата в файл
try:
database.save_db(res, "filter_result.csv")
print("Результат поиска сохранен в файл.")
except (IOError, csv.Error):
print("Не удалось сохранить результат поиска в файл.")
else:
print("Таких сотрудников нет.")
elif answer == "3":
try:
younger_than = int(
input("Введите год рождения сотрудника: "))
try:
res = employee.employee_avg_height(db, younger_than)
print("Средний рост сотрудников, {} г.р. и моложе: "
"({:.1f}) см.".
format(younger_than, res))
except ValueError:
print("Таких сотрудников нет. ")
except ValueError:
print("Год рождения должен быть целым числом.")
else:
break
except (IOError, json.decoder.JSONDecodeError) as err:
print("Ошибка при чтении файла с данными:", err)
except Exception as err:
print("Произошла ошибка!")
print("Тип:", type(err))
print("Описание:", err)
# --------------
# Пример вывода:
#
# -----
# Меню
# -----
# 1. Список сотрудников.
# 2. Фильтр по языку программирования.
# 3. Средний рост сотрудников, моложе указанного г.р.
#
# Выберите пункт меню или нажмите ENTER для выхода: 1
# Содержимое базы данных (3):
# 1.
# Имя: Иванов Иван
# День рождения: 01/12/2000
# Рост (см.): 170
# Вес (кг.): 70.5
# Есть машина: True
# Языки программирования: ['С++', 'Python']
# 2.
# Имя: Сергеев Сергей
# День рождения: 01/06/2001
# Рост (см. ): 180
# Вес (кг.): 110.4
# Есть машина: False
# Языки программирования: ['Pascal', 'Delphi']
# 3.
# Имя: Николаева Мария
# День рождения: 14/07/1998
# Рост (см.): 180
# Вес (кг.): 66.9
# Есть машина: True
# Языки программирования: ['C#', 'C++', 'C']
#
# -----
# Меню
# -----
# 1. Список сотрудников.
# 2. Фильтр по языку программирования.
# 3. Средний рост сотрудников, моложе указанного г.р.
#
# Выберите пункт меню или нажмите ENTER для выхода: 2
# Введите язык программирования: Python
# Список сотрудников со знанием языка программирования Python (1):
# 1.
# Имя: Иванов Иван
# День рождения: 01/12/2000
# Рост (см.): 170
# Вес (кг.): 70.5
# Есть машина: True
# Языки программирования: ['С++', 'Python']
# Результат поиска сохранен в файл.
#
# -----
# Меню
# -----
# 1. Список сотрудников.
# 2. Фильтр по языку программирования.
# 3. Средний рост сотрудников, моложе указанного г.р.
#
# Выберите пункт меню или нажмите ENTER для выхода: 3
# Введите год рождения сотрудника: 2000
# Средний рост сотрудников, 2000 г.р. и моложе: (175.0) см.
Решение на Python задач на программирование из демо егэ
Решение на Python задачи 25 на программирование из демоверсии егэ по информатике за 2019 год
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, не делящихся нацело на 6, а затем заменяет каждый элемент, не делящийся нацело на 6, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки. Например, для исходного массива из шести элементов: 14 6 11 18 9 24 программа должна вывести следующий массив 9 6 9 18 9 24
Организуем ввод массива заданной длины с клавиатуры. Подробно о работе с массивами в Python a = []
n=30
for i in range(0, n):
a.append(int(input()))
Введем переменную для определения минимума для числа не делящегося на 6, вначале программы присвоим ей максимально возможное значение min=10000
В цикле for переберем все элементы массива. С помощью оператора условия If определим делится ли данный элемента на 6 (чтобы элемент не делился на 6 необходимо выполнение условии a[i]%6!=0 )и является ли он меньше текущего минимума(a[i]<min). Если данное двойное условие выполняется, то текущему минимуму присваиваем значение данного элемента массива (min=a[i]). Чтобы двойное условие в If выполнялось необходимо использовать логическую операцию and min=10000
for i in range(0, n):
if a[i]%6!=0 and a[i]<min:
min=a[i]
Чтобы заменить все элементы массива не кратные 6 на найденный минимум в новом цикле for перебираем все элементы массива и с помощью оператора If проверяем не делится ли на 6 данный элемент, если делится то заменяем его на min, в этом же цикле и выводим на экран элементы массива for i in range(0, n):
if a[i]%6!=0:
a[i]=min
print(a[i]) Полная программа на python для задачи 25 из демо версии егэ по информатике за 2019 год a = []
n=30
for i in range(0, n):
a. append(int(input()))
min=10000
for i in range(0, n):
if a[i]%6!=0 and a[i]<min:
min=a[i]
for i in range(0, n):
if a[i]%6!=0:
a[i]=min
print(a[i])
Решение на Python задачи 25 на программирование из демоверсии егэ по информатике за 2018 год
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит количество элементов массива, больших 100 и при этом кратных 5, а затем заменяет каждый такой элемент на число, равное найденному количеству. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести измененный массив, каждый элемент массива выводится с новой строчки. Например, для массива из шести элементов: 4 115 7 195 25 106 программа должна вывести числа 4 2 7 2 25 106
Организуем ввод массива заданной длины с клавиатуры a = []
n=30
for i in range(0, n):
a. append(int(input()))
Введем переменную k в которую будем записывать количество элементов массива делящихся на 5 и которые больше 100. Изначально k=0
В цикле for переберем все элементы массива. С помощью оператора условия If определим делится ли данный элемента на 5(чтобы элемент делился на 5, необходимо выполнение условия a[i]%5==0 )и больше ли данный элемент 100 (a[i]>100) Чтобы выполнялись оба условия одновременно , необходимо использовать в условном операторе if логическую операцию and. Если оба условия выполняются, то увеличиваем количество счетчик элементов на 1 (k=k+1) k=0
for i in range(0, n):
if (a[i]%5==0 and a[i]>100):
k=k+1
Чтобы заменить все элементы массива кратные 5 на определенное количество k ,в новом цикле for перебираем все элементы массива и с помощью оператора If проверяем, чтобы данный элемент массива делился на 5 и был больше 100. Если оба условия выполняются, то заменяем данный элемент массива на k.
for i in range(0, n):
if (a[i]%5==0 and a[i]>100):
a[i]=k
print(a[i])
Полная программа на python для задачи 25 из демо версии егэ по информатике за 2018 год a = []
n=30
for i in range(0, n):
a.append(int(input()))
k=0
for i in range(0, n):
if (a[i]%5==0 and a[i]>100):
k=k+1
for i in range(0, n):
if (a[i]%5==0 and a[i]>100):
a[i]=k
print(a[i]) Решение на Python задачи 25 на программирование из демоверсии егэ по информатике за 2017 год
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых десятичная запись хотя бы одного числа оканчивается на 2. В данной задаче под парой подразумевается два подряд идущих элемента массива. Например, для массива из пяти элементов: 16 3 142 55 22 – ответ: 3.
Организуем стандартный ввод массива заданной длины с клавиатуры в python a = []
n=40
for i in range(0, n):
a.append(int(input()))
Введем переменную k — счетчик нужных нам пар элементов массива
В цикле for в диапазоне от 1 до n-1 будем перебирать пары элементов массива . Пара соседних элементов это a[i] и a[i+1]
Чтобы получить последнюю цифру в десятичной записи числа нужно найти остаток от деления на 10 данного числа. В python для определения остатка числа используется операция %
последняя цифра числа=число % 10
Нам необходимо проверить для каждой пары элементов массива оканчивается ли хотя бы одно число из пары на 2. Чтобы проверить выполнение хотя бы одного условия в операторе if, используется логическая операция or (ИЛИ). Если хотя бы одно условие выполняется, то увеличиваем счетчик пар на 1 k=0
for i in range(1, n-1):
if (a[i]%10==2 or a[i+1]%10==2):
k=k+1 Полная программа на python для задачи 25 из демо версии егэ по информатике за 2017 год a = []
n=40
for i in range(0, n):
a. append(int(input()))
k=0
for i in range(1, n-1):
if (a[i]%10==2 or a[i+1]%10==2):
k=k+1
print(k)
Вернуться к содержанию круса по Python
Полезно почитать по теме решение задач егэ по информатике на массивы
Задачи егэ по информатике на пары элементов массива Задачи егэ по информатике на массивы с накопителем Задачи егэ по информатике на поиск максимального элемента Задачи егэ по информатике на поиск минимального элемента
Поделиться:
IT Novella — Задачи по программированию на Python с решениями
March 27, 2019, 4:53 a.m.
Задачи по программированию на языке Python
1. Ввод, вывод. Работа с целыми числами.
Задание 1.Электронные часы — 1. Дано число N. С начала суток прошло N минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент.Решение.
Задание 2.Симметричное число.Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Решение.
Задание 3.Электронные часы — 2. Электронные часы показывают время в формате h:mm:ss, то есть сначала записывается количество часов (число от 0 до 23), потом обязательно двузначное количество минут, затем обязательно двузначное количество секунд. Количество минут и секунд при необходимости дополняются до двузначного числа нулями. С начала суток прошло N секунд. Выведите, что покажут часы. Решение.
Задание 4. Улитка. Улитка ползет по вертикальному шесту высотой H метров, поднимаясь за день на A метров, а за ночь спускаясь на B метров. На какой день улитка доползет до вершины шеста? Решение.
Задание 5. Максимум из двух. Напишите программу, которая считывает два целых числа A и B и выводит наибольшее значение из них. Числа — целые от 1 до 1000. Примечание. При решении задачи можно пользоваться только целочисленными арифметическими операциями. Нельзя пользоваться нелинейными конструкциями: ветвлениями, циклами, функциями. Решение.
2. Условный оператор
Задание 1. Максимум из трех. Даны три целых числа. Найдите наибольшее из них (программа должна вывести ровно одно целое число). Решение.
Задание 2. Високосный год. Дано натуральное число. Требуется определить, является ли год с данным номером високосным.
Если год является високосным, то выведите YES, иначе выведите NO. Напомним, что в соответствии с григорианским календарем,
год является високосным, если его номер кратен 4, но не кратен 100, или же если он кратен 400.. Решение.
3. Цикл while
4. Вещественные числа
5. Функции
6. Цикл for и функция range
7. Последовательности (Строки, кортежи, цикл for, списки)
8. Множества и словари
9. Элементы функционального программирования
10. Объектно-ориентированное программирование
11. Разработка приложений с графическим интерфейсом с использованием PyQT.
упражнений Python, практика, решение — w3resource
Что такое язык Python?
Python — это широко используемый высокоуровневый интерпретируемый динамический язык программирования общего назначения. Его философия дизайна подчеркивает удобочитаемость кода, а его синтаксис позволяет программистам выражать концепции в меньшем количестве строк кода, чем это возможно на таких языках, как C ++ или Java.
Python поддерживает несколько парадигм программирования, включая объектно-ориентированное, императивное и функциональное программирование или процедурные стили. Он имеет систему динамического типа и автоматическое управление памятью, а также большую и всеобъемлющую стандартную библиотеку
.
Лучший способ узнать что-либо — это практика и упражнения. Мы начали этот раздел для тех (от начального до среднего уровня), кто знаком с Python.
Надеюсь, эти упражнения помогут вам улучшить свои навыки программирования на Python. В настоящее время доступны следующие разделы, мы прилагаем все усилия, чтобы добавить больше упражнений …. Удачного кодирования!
Список упражнений Python:
Проблемы Python:
Python Мини-проекты:
Графический интерфейс Python tkinter
Python NumPy:
Python Панды:
Python BeautifulSoup:
Веб-скрапинг Python:
Набор средств естественного языка Python:
Python Arrow Module:
Python GeoPy Пакет:
Подробнее. ..
Примечание. Загрузите Python с https://www.python.org/ftp/python/3.2/ и установите в своей системе для выполнения программ Python. Вы можете прочитать нашу установку Python в Fedora Linux и Windows 7, если вы не знакомы с установкой Python. Вы можете выполнить одну и ту же задачу (решение упражнений) разными способами, поэтому описанные здесь способы — не единственные способы сделать что-то. Скорее было бы здорово, если бы это все-таки помогло вам выбрать собственные методы.
Список упражнений с решениями:
HTML CSS Упражнения, практика, решение
Упражнения для JavaScript, практика, решение
Упражнения jQuery, практика, решение
Упражнения jQuery-UI, практика, решение
CoffeeScript Упражнения, практика, решение
Twitter Bootstrap Упражнения, практика, решение
Упражнения по программированию на C, практика, решение
Упражнения по программированию на C # Sharp, практика, решение
Упражнения PHP, практика, решение
Упражнения Python, практика, решение
R Упражнения по программированию, практика, решение
Упражнения для Java, практика, решение
Упражнения по SQL, практика, решение
Упражнения MySQL, практика, решение
PostgreSQL Упражнения, практика, решение
Упражнения по SQLite, практика, решение
Упражнения MongoDB, практика, решение
Эйлер пр.
Популярность языка программирования
Во всем мире, в марте 2021 г. по сравнению с прошлым годом:
.
Источник: http: // pypl.github.io/PYPL.html
Индекс TIOBE за февраль 2021 г.
Источник: https://www.tiobe.com/tiobe-index/
[Хотите участвовать в упражнениях на Python? Отправьте нам свой код (прикрепленный с файлом .zip) по адресу w3resource [at] yahoo [dot] com. Пожалуйста, избегайте материалов, защищенных авторским правом.]
Проверьте свои навыки Python с помощью викторины w3resource
Python: советы дня
Python: проверка объекта в Python
Пример:
test_obj = [1, 3, 5, 7]
печать (каталог (test_obj))
С помощью Python можно автоматизировать практически все. От отправки электронных писем и заполнения PDF- и CSV-файлов (если вы не знакомы с этим форматом файлов, я советую проверить его, например, он используется Excel) до взаимодействия с внешними API-интерфейсами и отправки HTTP-запросов.Какой бы ни была ваша идея, более чем вероятно, что вы сможете реализовать ее, используя Python вместе с его модулями и инструментами.
тонн библиотек, созданных для Python, делают этот язык действительно мощным, позволяя разработчикам решать все, от машинного обучения и веб-скрапинга до управления операционной системой вашего компьютера.
Где Python находит применение
Сильные стороны
Python также включают достойную структуру поддержки и большое сообщество энтузиастов. Популярность языка продолжает расти, и статьи, охватывающие практически все концепции, лежащие в основе языка, продолжают появляться в Интернете — беглый поиск обязательно приведет к довольно интересным сообщениям в блогах или StackOverflow, а если нет, вы всегда можете опубликуйте свой вопрос или проблему на любом из форумов Python в Интернете.Поверьте, вы не останетесь один на один со своей проблемой.
У Python большое сообщество, и сам язык постоянно развивается. Кроме того, постоянно появляются новые сторонние библиотеки.
Далеко не любимец сообщества разработчиков программного обеспечения, Python нашел применение во многих профессиях и отраслях, включая науку, анализ данных, математику, сети и многое другое.
Хотите использовать Python в своем проекте?
Python хорош не только для автоматизации.Мы знаем, как заставить его работать на ваши цели.
См. Пример проекта.
Что можно автоматизировать с помощью Python?
Практически все! Приложив немного усилий, практически любую повторяющуюся задачу можно автоматизировать.
Для этого вам понадобится только Python на вашем компьютере (все примеры здесь написаны на Python 3.7) и библиотеки для данной задачи. Я не собираюсь учить вас Python, просто покажу, что с ним легко автоматизировать. В приведенных ниже примерах я использовал iPython — инструмент, который помогает поэтапно писать код в интерактивном режиме.
Для простой автоматизации достаточно встроенных библиотек Python. В остальных случаях я дам вам знать, что нужно установить.
Чтение и запись файлов
Чтение и запись файлов — это задача, которую можно эффективно автоматизировать с помощью Python. Для начала вам нужно только знать расположение файлов в вашей файловой системе, их имена и какой режим следует использовать для их открытия.
В приведенном ниже примере я использовал с оператором для открытия файла — подход, который я настоятельно рекомендую.После завершения работы с блочным кодом файл автоматически закрывается, и очистка выполняется за нас. Подробнее об этом можно прочитать в официальной документации.
Загрузим файл с помощью метода open () . Open () принимает путь к файлу в качестве первого аргумента, а режим открытия — в качестве второго. По умолчанию файл загружается в режиме только для чтения (« r »). Чтобы прочитать все содержимое файла, используйте метод r ead () .
В [1]: с open («text_file.txt ») как f:
...: печать (f.read ())
...:
Простой текстовый файл.
С несколькими строками.
И несколько слов.
Чтобы прочитать содержимое построчно, попробуйте метод readlines () — он сохраняет содержимое в список.
В [2]: с open («text_file.txt») как f:
...: print (f.readlines ())
...:
[«Простой текстовый файл. \ N», «Несколько строк. \ N», «И несколько слов. \ N»]
Вы также можете изменить содержимое файла.Один из способов сделать это — загрузить его в режиме записи ( ‘w’) . Режим выбирается вторым аргументом метода open () . Но будьте осторожны, так как это перезаписывает исходное содержимое!
В [3]: с open («text_file.txt», «w») как f:
...: f.write («Некоторое содержание»)
...:
В [4]: с open («text_file.txt») как f:
...: печать (f.read ())
...:
Некоторое содержание
Отличное решение — открыть файл в режиме добавления ( ‘a’ ), что означает, что новое содержимое будет добавлено в конец файла, а исходное содержимое останется нетронутым.
В [5]: с open («text_file.txt», «a») как f:
...: f.write («\ nДругая строка содержимого»)
...:
В [6]: с open («text_file.txt») как f:
...: печать (f.read ())
...:
Некоторое содержание
Еще одна строка содержания
Как видите, читать и писать файлы с Python очень просто. Не стесняйтесь читать больше по этой теме, особенно о режимах открытия файлов, потому что их можно смешивать и расширять! Комбинация записи в файл со сканированием веб-страниц или взаимодействием с API предоставляет вам множество возможностей автоматизации! В качестве следующего шага вы также можете проверить отличную библиотеку csv , которая помогает с чтением и записью файлов CSV.
Отправка писем
Еще одна задача, которую можно автоматизировать с помощью Python, — это отправка электронных писем. Python поставляется в комплекте с великолепной библиотекой smtplib , которую вы можете использовать для отправки электронных писем через простой протокол передачи почты (SMTP). Прочтите, чтобы узнать, насколько просто отправить электронное письмо с помощью библиотеки и SMTP-сервера Gmail. Естественно, вам понадобится учетная запись электронной почты в Gmail, и я настоятельно рекомендую вам создать отдельную учетную запись для целей этого скрипта. Почему? Потому что вам нужно будет установить для параметра Разрешить менее безопасные приложения значение ВКЛ, и это упростит другим доступ к вашим личным данным.Настройте учетную запись сейчас, и давайте перейдем к коду, как только вы закончите.
Прежде всего, нам нужно установить SMTP-соединение.
В [1]: import getpass
В [2]: import smtplib
В [3]: HOST = «smtp.gmail.com»
В [4]: PORT = 465
В [5]: username = «username @ gmail. com »
В [6]: password = getpass.getpass («Укажите пароль Gmail:«)
Укажите пароль Gmail:
В [7]: server = smtplib.SMTP_SSL (HOST, PORT)
Необходимые встроенные модули импортируются в начале файла, мы используем getpass для безопасного запроса пароля и smtplib для установления соединения и отправки электронных писем. На следующих шагах устанавливаются переменные. И HOST, и PORT требуются Gmail — это константы, поэтому они пишутся в верхнем регистре.
Затем вы указываете имя своей учетной записи Gmail, которое будет сохранено в переменной username , и вводите пароль. Рекомендуется вводить пароль с помощью модуля getpass . Он запрашивает у пользователя пароль и не выводит его обратно после того, как вы его введете. Затем сценарий запускает безопасное соединение SMTP, используя метод SMTP_SSL () . Объект SMTP хранится в переменной сервера.
В [8]: server.login (имя пользователя, пароль)
Out [8]: (235, b’2.7.0 Принято »)
В [9]: server. sendmail (
...: «[email protected]»,
...: «[email protected]»,
...: «Электронное письмо от Python!»,
... :)
Выход [9]: {}
В [8]: server.quit ()
Out [8]: (221, b’2.0.0 закрытие соединения s1sm24313728ljc.3 - gsmtp ’)
Наконец, вы аутентифицируете себя с помощью метода login () и… готово! С этого момента вы сможете отправлять электронные письма с помощью метода sendmail () . Не забудьте после этого выполнить очистку с помощью метода quit () .
Веб-скрапинг
Веб-скрапинг позволяет извлекать данные с веб-страниц и сохранять их на жестком диске. Представьте, что ваш рабочий день включает сбор данных с веб-сайта, который вы посещаете каждый день. В таком случае может быть очень полезен парсинг, поскольку после написания кода его можно запускать много раз, что делает его особенно полезным при обработке больших объемов данных. Извлечение информации вручную занимает много времени, много щелчков и поиска.
С Python очень легко извлекать данные из Интернета. Но для анализа и извлечения данных из HTML-кода сначала необходимо загрузить целевую страницу. Библиотека запрашивает библиотеку , но сначала вам нужно установить ее. Просто введите в консоль следующее:
запросов на установку pip
(подробнее см. В официальной документации: https://requests.readthedocs.io/en/master/user/install/#install)
После загрузки страницы мы можем извлечь нужные данные.Здесь на помощь приходит BeautifulSoup . Библиотека помогает при синтаксическом анализе и извлечении данных из структурированных файлов. Естественно, сначала необходимо установить и библиотеку. Как и раньше, введите в консоль следующее:
pip install beautifulsoup4
(подробнее см. В официальной документации: https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-beautiful-soup)
Давайте рассмотрим довольно простой пример, чтобы увидеть, как здесь работает автоматизация. HTML-код веб-страницы, которую мы выбрали для анализа, действительно краток, и это неудивительно, учитывая, что его цель — показать, какая это неделя в году. Смотрите здесь: Какая сегодня неделя. Чтобы проверить HTML-код, просто щелкните правой кнопкой мыши в любом месте страницы и выберите Просмотреть исходный код страницы . Затем запустите интерактивный Python (просто набрав в консоли ipython ) и давайте начнем получать страницу, используя запросов :
В [1]: запросы на импорт
В [2]: ответ = запросы.получить ("https://whatweekisit.com/")
В [3]: response.status_code
Вых [3]: 200
После этого страница загружается и сохраняется в переменной ответа. Если вы хотите увидеть его содержимое, введите response.content в интерактивном терминале. Код состояния HTTP 200 сообщает нам, что запрос выполнен успешно.
Пришло время для BeautifulSoup сделать свою работу. Мы начинаем с импорта библиотеки, а затем создаем объект BeautifulSoup с именем soup . Создается объект soup с полученными данными в качестве входных. Мы также сообщаем библиотеке, какой парсер следует использовать, очевидно, с html.parser для HTML-страниц.
В [4]: из bs4 импортировать BeautifulSoup
В [5]: soup = BeautifulSoup (response.content, "html.parser")
В [6]: суп
Из [6]:
HTML-документ теперь сохранен в объекте soup .Он представлен в виде вложенной структуры (ее фрагмент напечатан выше). Есть несколько способов перемещаться по структуре. Некоторые из них показаны ниже.
В [7]: soup.title
Out [7]: Какая сейчас неделя в году?
В [8]: soup.title.string
Out [8]: 'Какая сейчас неделя в году?'
В [9]: soup.find_all ("p")
Из [9]:
[
Это одноразовое приложение рассчитывает неделю года и день года для текущего дня и для любого указанного вами дня.Выберите дату в календаре, чтобы увидеть это в действии.
,
Обратите внимание, что на этом сайте используется система недельных дат ISO. Это используется в основном для финансового и государственного хронометража. Для мор
Чтобы получить дополнительную информацию, обратитесь к этой статье в Википедии .
]
Вы можете легко извлечь заголовок страницы или найти все теги
в данных. Лучший способ почувствовать это — повозиться с объектом самостоятельно.
Попробуем извлечь ту информацию, которую мы хотели в самом начале. Какая сейчас неделя в году? Изучив HTML-код, мы увидим, что информация скрыта в таблице под тегом
. Мы можем извлечь таблицу из объекта soup и сохранить ее в переменной с помощью функции find () . После сохранения таблицы очень легко получить все теги
, в которых хранится информация. Вызов find_all () для table_content возвращает список тегов
.А чтобы распечатать их в красивом формате, просто перебирайте список и get_text () от каждого элемента.
В [10]: table = soup.find ("table")
В [11]: таблица
Из [11]:
Информация о текущей дате
Сегодняшняя дата:
среда, 15 апреля 2020 г.
Неделя года:
16 из 53
День года:
106 из 366
В [12]: table_content = table.find_all ("тд")
В [13]: для тега в table_content:
...: печать (tag.get_text ())
...:
Сегодня:
Среда, 15 апреля 2020 г.
Неделя года:
16 из 53
День года:
106 из 366
С помощью чудесной библиотеки BeautifulSoup и нескольких простых шагов мы смогли извлечь интересный контент со страницы, используя всего несколько команд. Я настоятельно рекомендую вам узнать больше о библиотеке! Это действительно мощный инструмент, особенно при работе с большими и более вложенными HTML-документами.
Взаимодействие с API
Взаимодействие с API дает вам суперсилы! В качестве простого примера этого конкретного приложения давайте попробуем получить обновления данных о качестве воздуха из Интернета.
Доступно несколько API, но Open AQ Platform API кажется самым лучшим вариантом, в основном потому, что он не требует аутентификации (соответствующую документацию можно найти здесь: Open AQ Platform API). При запросе API предоставляет данные о качестве воздуха для данного местоположения.
Я использовал библиотеку запросов для получения данных так же, как мы это делали в предыдущем примере.
В [1]: запросы на импорт
В [2]: response = requests.get ("https://api.openaq.org/v1/measurements?city=Paris¶meter=pm25")
В [3]: response.status_code
Вых [3]: 200
В [4]: response_json = response.json ()
Приведенный выше код извлекает данные о качестве воздуха для Парижа, ища только значение PM25. Вы можете настроить поиск по своему усмотрению — просто обратитесь к документации API, если вы хотите глубже погрузиться в этот вопрос.
Затем сценарий сохранил извлеченные данные в формате JSON «ключ-значение», который более чистый и удобочитаемый. Это было достигнуто благодаря методу j son () , вызванному к объекту ответа. Вы можете увидеть часть ответа ниже.
Точные извлеченные значения скрыты под ключом results , причем последние извлечения находятся в верхней части списка, что означает, что мы можем получить самое последнее значение, обратившись к первому элементу списка с нулевым индексом. Приведенный ниже код дает нам концентрацию PM25 в воздухе в Париже 5 мая 2020 года.
Надеюсь, потратив несколько минут своей жизни на чтение этой статьи, вы поймете, что множество повседневных задач можно легко автоматизировать, даже без обширных знаний в области программирования.
Если вам этого недостаточно и вы хотите создать еще немного автоматизации, в Интернете есть несколько источников, которые предложат вам более глубоко погрузиться в предмет. Я настоятельно рекомендую одну книгу Эла Свигарта «Автоматизируйте скучные вещи с помощью Python: Практическое программирование для начинающих ». Он предоставляет отличный набор примеров автоматизации, за которыми стоит намек на теорию. Это даст вам более глубокое представление о возможностях Python и в то же время улучшит ваши знания языка.
И помните — никогда не тратьте драгоценное время на повторяющиеся, утомительные задачи, которые можно легко автоматизировать!