Задачи с оригами python

Добавил пользователь Владимир З.
Обновлено: 18.09.2024

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 очень важно разграничивать изменяемые и неизменяемые объекты. Во избежание странного поведения кода (как в примерах выше) нужно помнить о главном:

Снимок

Hõiva

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’)

Hõiva

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’)

Hõiva

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 Нравится Загрузка.

Читайте также: