Задачи с оригами python
5. Напишите функцию Python для вычисления факториала числа (неотрицательное целое число). Функция принимает число в качестве аргумента. Перейти к редактору
Нажмите меня, чтобы увидеть образец решения
6. Напишите функцию Python, чтобы проверить, находится ли число в заданном диапазоне. Перейти к редактору
Нажмите меня, чтобы увидеть образец решения
8. Напишите функцию Python, которая берет список и возвращает новый список с уникальными элементами первого списка. Перейти к редактору
Список образцов: [1,2,3,3,3,3,4,5]
Уникальный список: [1, 2, 3, 4, 5]
Нажмите меня, чтобы увидеть образец решения
9. Напишите функцию Python, которая принимает число в качестве параметра и проверяет, является ли число простым или нет. Перейти к редактору
Примечание. Простое число (или простое число) - это натуральное число, большее 1, которое не имеет положительных делителей, кроме 1 и самого себя.
Нажмите меня, чтобы увидеть образец решения
10. Напишите программу на Python для печати четных чисел из заданного списка. Перейти к редактору
Список образцов : [1, 2, 3, 4, 5, 6, 7, 8, 9]
Ожидаемый результат : [2, 4, 6, 8]
Нажмите меня, чтобы увидеть образец решения
11. Напишите функцию Python, чтобы проверить, является ли число совершенным или нет. Перейти к редактору
Согласно Википедии: в теории чисел совершенное число - это положительное целое число, равное сумме его собственных положительных делителей, то есть сумме его положительных делителей, исключая само число (также известное как его аликвотная сумма). Эквивалентно, идеальное число - это число, которое составляет половину суммы всех его положительных делителей (включая себя).
Пример : первое совершенное число равно 6, потому что 1, 2 и 3 являются его собственными положительными делителями, а 1 + 2 + 3 = 6. Эквивалентно, число 6 равно половине суммы всех его положительных делителей: (1 + 2 + 3 + 6) / 2 = 6. Следующее совершенное число - 28 = 1 + 2 + 4 + 7 + 14. За ним следуют совершенные числа 496 и 8128.
Нажмите меня, чтобы увидеть образец решения
12. Напишите функцию Python, которая проверяет, является ли переданная строка палиндромом или нет. Перейти к редактору
Примечание. Палиндром - это слово, фраза или последовательность, которые читаются так же, как и вперёд, например, бегут мадам или медсестры.
Нажмите меня, чтобы увидеть образец решения
13. Напишите функцию Python, которая печатает первые n строк треугольника Паскаля. Перейти к редактору
Примечание. Треугольник Паскаля - это арифметическая и геометрическая фигура, впервые представленная Блезом Паскалем.
Образец треугольника Паскаля:
15. Напишите программу на языке Python, которая принимает в качестве входных данных последовательность слов, разделенных дефисами, и печатает слова в последовательности, разделенной дефисами, после сортировки по алфавиту. Перейти к редактору
Образцы элементов : зеленый-красный-желтый-черный-белый
Ожидаемый результат : черный-зеленый-красный-бело-желтый
Нажмите меня, чтобы увидеть образец решения
16. Напишите функцию Python, чтобы создать и распечатать список, значения которого представляют собой квадрат чисел от 1 до 30 (оба включены). Перейти к редактору
Нажмите меня, чтобы увидеть образец решения
17. Напишите программу на Python, чтобы создать в Python цепочку декораторов функций (полужирный, курсив, подчеркивание и т. Д.). Перейти к редактору
Нажмите меня, чтобы увидеть образец решения
18. Напишите программу на Python для выполнения строки, содержащей код Python. Перейти к редактору
Нажмите меня, чтобы увидеть образец решения
19. Напишите программу на Python для доступа к функции внутри функции. Перейти к редактору
Нажмите меня, чтобы увидеть образец решения
20. Напишите программу на Python для определения количества локальных переменных, объявленных в функции. Перейти к редактору
Нажмите меня, чтобы увидеть образец решения
Редактор кода Python:
Еще не все !
Не отправляйте решение вышеупомянутых упражнений здесь, если вы хотите внести вклад, перейдите на соответствующую страницу упражнения.
Python — это процедурно-ориентированный и одновременно объектно-ориентированный язык программирования.
Процедурно-ориентированный
Объектно-ориентированный
Синтаксис для написания нового класса:
- Для создания класса пишется ключевое слово class , его имя и двоеточие (:). Первая строчка в теле класса описывает его. (По желанию) получить доступ к этой строке можно с помощью ClassName.__doc__
- В теле класса допускается объявление атрибутов, методов и конструктора.
Атрибут:
Атрибут — это элемент класса. Например, у прямоугольника таких 2: ширина ( width ) и высота ( height ).
Метод:
- Метод класса напоминает классическую функцию, но на самом деле — это функция класса. Для использования ее необходимо вызывать через объект.
- Первый параметр метода всегда self (ключевое слово, которое ссылается на сам класс).
Конструктор:
- Конструктор — уникальный метод класса, который называется __init__ .
- Первый параметр конструктора во всех случаях self (ключевое слово, которое ссылается на сам класс).
- Конструктор нужен для создания объекта.
- Конструктор передает значения аргументов свойствам создаваемого объекта.
- В одном классе всегда только один конструктор.
- Если класс определяется не конструктором, Python предположит, что он наследует конструктор родительского класса.
Что происходит при создании объекта с помощью класса?
При создании объекта класса Rectangle запускается конструктор выбранного класса, и атрибутам нового объекта передаются значения аргументов. Как на этом изображении:
Конструктор с аргументами по умолчанию
В других языках программирования конструкторов может быть несколько. В Python — только один. Но этот язык разрешает задавать значение по умолчанию.
Все требуемые аргументы нужно указывать до аргументов со значениями по умолчанию.
Согласно модели данных Python, язык предлагает три вида методов: статические, класса и экземпляра класса. Давайте посмотрим, что же происходит за кулисами каждого из видов методов. Понимание принципов их работы поможет в создании красивого и эффективного кода. Начнём с самого простого примера, в котором демонстрируются все три вида методов.
Задача 1. Необходимо реализовать код, показанный в примерах выше. Создать класс Rectangle и класс ToyClass. Для ToyClass необходимо добавить три атрибута, и метод который устанавливает их.
Задача 2. Напишите программу с классом Student, в котором есть три атрибута: name, groupNumber и age. По умолчанию name = Ivan, age = 18, groupNumber = 10A. Необходимо создать пять методов: getName, getAge, getGroupNumber, setNameAge, setGroupNumber. Метод getName нужен для получения данных об имени конкретного студента, метод getAge нужен для получения данных о возрасте конкретного студента, vетод setGroupNumberнужен для получения данных о номере группы конкретного студента. Метод SetNameAge позволяет изменить данные атрибутов установленных по умолчанию, метод setGroupNumber позволяет изменить номер группы установленный по умолчанию. В программе необходимо создать пять экземпляров класса Student, установить им разные имена, возраст и номер группы.
Задача 3. Напишите программу с классом Math. Создайте два атрибута — a и b. Напишите методы addition — сложение, multiplication — умножение, division — деление, subtraction — вычитание. При передаче в методы параметров a и b с ними нужно производить соответствующие действия и печатать ответ.
Попробуйте решить эти задачи самостоятельно, а потом проверьте себя по готовым ответам.
Подсказка: У всех задач есть нечто общее. Так что если разобраться в решении первой задачи, то решать остальные будет гораздо проще.
Представьте, что у вас есть несколько переменных:
Какой результат вам даст вывод l и s ?
Давайте определим простую функцию:
Что произойдет при вызове:
Давайте определим две простые функции:
Какой результат вы получите при выполнении следующих команд?
Насколько вы уверены в своих ответах? Давайте узнаем правильное решение.
Почему второй список реагирует на изменение своего первого элемента a.append(5) , а первый список полностью игнорирует похожее изменение x+=5 ?
Да в айте узнаем, что произойдет:
Стоп, а разве последний вывод не должен быть ?
Результаты будут следующими:
Но почему g_inner(2) не выводит 3 ? Как так вышло, что внутренняя функция f() запоминает свою внешнюю область видимости, а внутренняя функция g() — нет? Они же практически одинаковые!
Что, если я скажу вам, что столь странное поведение обусловлено разницей между изменяемыми и неизменяемыми объектами в Python?
Объяснение задачи 1
Поскольку x является неизменяемым объектом, операция x+=5 не меняет исходный объект, а создает новый. Первый элемент списка все еще указывает на первоначальный объект, поэтому его значение остается прежним.
Объяснение задачи 2
Первые два результата очевидны: сначала значение 7 добавляется к пустому множеству по умолчанию, и в результате получается . Потом значение 6 добавляется к набору , и на выходе получается .
Но затем происходит нечто странное: значение 2 добавляется не к стандартному пустому множеству, а к набору . Почему? Стандартное значение необязательного параметра s вычисляется только один раз, ведь только при первом вызове s запускается как пустое множество. А поскольку s является изменяемым объектом, то после вызова f(7) он изменяется на месте. Второй вызов f(6, ) не влияет на исходный параметр, поскольку представленное множество скрывает его. Иначе говоря, является другой переменной. Третий вызов f(2) использует ту же переменную s , которая была в первом вызове. Но в этот раз s вызывается не как пустое множество, а со своим предыдущим значением .
Вот почему вам не следует использовать изменяемые аргументы по умолчанию. В таком случае функция будет изменяться следующим образом:
Объяснение задачи 3
В этой задаче мы имеем дело с замыканием, при котором внутренние функции запоминают, как выглядело их внешнее пространство имен в момент определения. По крайней мере, они должны это делать. А вторая функция с завидной невозмутимостью делает вид, что никогда не слышала про внешнюю область видимости.
Почему так? Когда мы выполняем l.append(x) , изменяемый объект, созданный в момент определения, изменяется, но переменная продолжает указывать на тот же адрес в памяти. Однако попытка изменить неизменяемую переменную во второй функции y += x приводит к тому, что y начинает указывать на другой адрес в памяти. Исходная y больше не запоминается, и возникает ошибка UnboundLocalError .
В Python очень важно разграничивать изменяемые и неизменяемые объекты. Во избежание странного поведения кода (как в примерах выше) нужно помнить о главном:
x1=int(input())
y1=int(input())
x2=int(input())
y2=int(input())
if ((x1-x2)==(y1-y2)):
print(‘YES’)
elif ((x1-x2)==(y2-y1)):
print(‘YES’)
else:
print(‘NO’)
x1 = int(input())
x2 = int(input())
y1 = int(input())
y2 = int(input())
if x1 == y1 or x2 == y2 or (x1 + x2 == y1 + y2) or (x1 — x2 == y1 — y2):
print(‘YES’)
else:
print(‘NO’)
x1 = int(input())
x2 = int(input())
y1 = int(input())
y2 = int(input())
if (x1 == y1 + 2 or x1 == y1 — 2) and (x2 == y2 + 1 or x2 == y2 — 1):
print(‘YES’)
elif (x1 == y1 + 1 or x1 == y1 — 1) and (x2 == y2 + 2 or x2 == y2 — 2):
print(‘YES’)
else:
print(‘NO’)
n = int(input())
m = int(input())
k = int(input())
if k m:
n, m = m, n
if x >= n / 2:
x = n — x
if y >= m / 2:
y = m — y
if x Нравится Загрузка.
Читайте также: