This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Сборник задач и решений на python
Объектно ориетированное программирование
Level-11 ООП Классы
Level-12 Простое наследование
Level-13 Множественное наследование (MRO)
Level-14 Миксины
Level-15 Абстактные классы
Level-16 Дескрипторы данных
Level-17 Ввод и вывод классов, сериализация, packing
Level-18 Метаклассы
Level-19 Магические методы
Level-20 Все есть объекты
Level-21 datetime
Level-22 os.path
Level-23 Аргументы командной строки
Level-24 Регулярные выражения
Level-25 Логирование
Level-26 Мультизадачность
Level-27 Аргументы командной строки
Level-28 Форматы данных CSV, JSON, XML
Level-29 socket
Level-30 request
Level-31 Тестирование
Level-31 Синглтон
Level-32 Адаптер
Level-33 Враппер
Level-34 Наблюдатель
Level-35 Стратегия
Level-36 Команда
Level-37 Машина состояний
About
Сборник задач и решений на python
Источник: github.com
Дополнительные задачи анализ программ и решение задач python
Решение
n, m = map(int, input().split()) matrix = [[0] * m for _ in range(n)] dx, dy, x, y = 0, 1, 0, 0 for i in range(1, n * m + 1): matrix[x][y] = i if matrix[(x + dx) % n][(y + dy) % m]: dx, dy = dy, -dx x += dx y += dy for line in matrix: print(*(f» for i in line), sep=»)
n, m = (int(i) for i in input().split()) spiral = [] x, y, dx, dy, k = 0, 0, 1, 0, 1 spiral = [[0]* n for _ in range(m)] for i in range(1, n * m + 1): spiral[x][y] = i nx, ny = x + dx, y + dy if 0
n, m = [int(i) for i in input().split()] spiral = [[0] * m for _ in range(n)] c = 1 for k in range(min(n // 2 + 1, m //2 + 1)): for j in range(k, m — k): if spiral[k][j] == 0: spiral[k][j] = c c += 1 for i in range(1 + k, n — k): if spiral[i][m — k — 1] == 0: spiral[i][m — k — 1] = c c += 1 for j in range(m — k — 2, k — 1, -1): if spiral[n — k — 1][j] == 0: spiral[n — k — 1][j] = c c += 1 for i in range(n — k — 2, k, -1): if spiral[i][k] == 0: spiral[i][k] = c c += 1 for i in range(n): for j in range(m): print(str(spiral[i][j]).ljust(3), end=’ ‘) print()
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
2. Единственный выживший
Это вариант классической задачи Иосифа Флавия . В кругу стоят n человек, пронумерованных числами от 1 до n. Начинается расчет, при котором каждый k-й по счету человек выбывает из круга, после чего счет продолжается со следующего за ним человека. Напишите программу, определяющую номер человека, который останется в кругу последним.
Входные данные:
Числа n и k на отдельных строках.
#Пример ввода 9 3
Выходные данные:
Номер последнего оставшегося человека.
#Пример вывода 1
Решение
n, k = int(input()), int(input()) last = 0 for i in range(1, n + 1): last = (last + k) % i print(last + 1)
Способ 2 – рекурсия:
def lastSurvivor(n, k): if n == 1: return 1 elif n > 1: return (1 + (lastSurvivor(n — 1, k) + k — 1) % n) n, k = int(input()), int(input()) print(lastSurvivor(n, k))
3. Определение магического квадрата
Магические квадраты издавна интриговали воображение людей: дата изготовления древнейшей сохранившейся таблицы относится к 2200 г. до н.э.
Магический квадрат – это квадратная таблица размера n х n, составленная из всех чисел 1, 2, 3 … n 2 таким образом, что суммы по каждому столбцу, каждой строке и каждой диагонали равны между собой. Напишем программу, которая определяет, можно ли считать матрицу магическим квадратом.
Входные данные:
Число n, затем n строк с n цифр в каждой.
#Пример ввода 3 8 1 6 3 5 7 4 9 2
Выходные данные:
YES, если введенная матрица является магическим квадратом, и NO в обратном случае.
#Пример вывода YES
Решение
n = int(input()) matrix = [list(map(int, input().split())) for _ in range(n)] if all(i in sum(matrix,[]) for i in range(1, n**2 + 1)): print(‘YES’ if all(sum(i) == sum(j) == sum([matrix[i][i] for i in range(n)]) == sum([matrix[n-i-1][i] for i in range(n)]) for i in matrix for j in list(map(list, zip(*matrix)))) else ‘NO’) else: print(‘NO’)
Способ 2 – с магической константой и множествами:
n = int(input()) square = [[*map(int, input().split())] for _ in range(n)] m_const = n * (1 + n ** 2) // 2 print((‘NO’, ‘YES’)[all(sum(el) == m_const for x in (((square[i][i] for i in range(n)),(square[i][~i] for i in range(n))), square, zip(*square)) for el in x) and set(sum(square, [])) == set(range(1, n ** 2 + 1))])
4. Разделение списка на подсписки
На вход подается строка чисел, из которой формируется список. Напишите программу, создающую вложенный список, элементами которого являются все возможные подсписки исходного списка, включая пустой.
Пример ввода:
Пример вывода:
Решение
lst = input().split() def sub_lists(lst): lists = [[]] for i in range(len(lst) + 1): for j in range(i): lists.append(lst[j:i]) lists = sorted(lists, key=len) return lists print(sub_lists(lst))
print([[]] + [lst[j:i + j + 1] for lst in [input().split()] for i in range(len(lst)) for j in range(len(lst) — i)])
st, lst = input().split(), [[]] for i in range(1, len(st) + 1): for j in range(len(st) — i + 1): lst += [st[j:j+i]] print(lst)
5. Ходы шахматного ферзя
На шахматной доске 8 х 8 стоит ферзь.
Отметьте положение ферзя на доске и все клетки, которые бьет ферзь. Клетку, где стоит ферзь, отметьте буквой Q, клетки, которые бьет ферзь, отметьте звездочками *, остальные клетки заполните точками. Шахматный ферзь может ходить по вертикали, горизонтали и по диагоналям.
Входные данные:
Координаты ферзя на шахматной доске в формате номер столбца (буква от a до h, слева направо) и номер строки (цифра от 1 до 8, снизу вверх).
Пример ввода:
Выходные данные:
Программа выводит стилизованное изображение шахматной доски со схемой возможных передвижений ферзя.
Пример вывода:
Решение
x, y, board = *(‘abcdefgh87654321’.index(i) % 8 for i in input()), range(8) [print(*[‘?Q**.'[len()] for j in board]) for i in board]
x, y = (‘abcdefgh87654321’.index(i) % 8 for i in input()) directions = lambda i, j: (j — i == x — y) + (j + i == x + y) + ((j == x) != (i == y)) [print(*[‘.*Q'[directions(i, j)] for j in range(8)]) for i in range(8)]
coor = input() board = [[‘.’] * 8 for _ in range(8)] y, x = 8 — int(coor[1]), ord(coor[0]) — 97 for i in range(8): for j in range(8): if (y == i) or (x == j) or abs(y — i) == abs(x — j): board[i][j] = ‘*’ board[y][x] = ‘Q’ for line in board: print(*line)
Материалы по теме
- Задача об определении латинского квадрата
- Задача о поврежденной XML-строке
- Словари в Python: 12 задач для начинающих с решениями
Источник: proglib.io
Задачи по Python
Каждому изучающему Python нужно писать код для закрепления. Вашему вниманию предлагаются несколько задач для реализации (не слишком простых (кроме первой) и не слишком сложных).
Для выполнения заданий крайне рекомендуется пройти самоучитель.
Также для этих задач есть репозиторий с тестами и моими решениями (чтобы проверить себя).
Для запуска тестов для вашей функции проще всего будет добавить код из папки с тестами в конец файла с функцией.
А теперь, собственно, задачи:
Простейшие арифметические операции (1)
Написать функцию arithmetic, принимающую 3 аргумента: первые 2 — числа, третий — операция, которая должна быть произведена над ними. Если третий аргумент +, сложить их; если —, то вычесть; * — умножить; / — разделить (первое на второе). В остальных случаях вернуть строку «Неизвестная операция».
Високосный год (2)
Написать функцию is_year_leap, принимающую 1 аргумент — год, и возвращающую True, если год високосный, и False иначе.
Квадрат (3)
Написать функцию square, принимающую 1 аргумент — сторону квадрата, и возвращающую 3 значения (с помощью кортежа): периметр квадрата, площадь квадрата и диагональ квадрата.
Времена года (4)
Написать функцию season, принимающую 1 аргумент — номер месяца (от 1 до 12), и возвращающую время года, которому этот месяц принадлежит (зима, весна, лето или осень).
Банковский вклад (5)
Пользователь делает вклад в размере a рублей сроком на years лет под 10% годовых (каждый год размер его вклада увеличивается на 10%. Эти деньги прибавляются к сумме вклада, и на них в следующем году тоже будут проценты).
Написать функцию bank, принимающая аргументы a и years, и возвращающую сумму, которая будет на счету пользователя.
Простые числа (6)
Написать функцию is_prime, принимающую 1 аргумент — число от 0 до 1000, и возвращающую True, если оно простое, и False — иначе.
Правильная дата (7)
Написать функцию date, принимающую 3 аргумента — день, месяц и год. Вернуть True, если такая дата есть в нашем календаре, и False иначе.
XOR-шифрование (8)
Написать функцию XOR_cipher, принимающая 2 аргумента: строку, которую нужно зашифровать, и ключ шифрования, которая возвращает строку, зашифрованную путем применения функции XOR (^) над символами строки с ключом. Написать также функцию XOR_uncipher, которая по зашифрованной строке и ключу восстанавливает исходную строку.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv — чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Источник: pythonworld.ru