From f0fdd2122673612b215fce94bc0753097eb08ab2 Mon Sep 17 00:00:00 2001 From: pablo Date: Sat, 18 Feb 2017 23:12:39 +0300 Subject: [PATCH 01/11] =?UTF-8?q?=D0=A1=D0=BA=D0=BE=D1=80=D1=80=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D1=8B=20=D0=B4?= =?UTF-8?q?=D0=BB=D0=B8=D0=BD=D1=8B=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=20?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=D1=85=20=D0=94=D0=97.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson01/home_work/hw01_easy.py | 8 ++++-- lesson01/home_work/hw01_hard.py | 7 ++++- lesson01/home_work/hw01_normal.py | 12 +++++--- lesson02/home_work/hw02_easy.py | 15 +++++++--- lesson02/home_work/hw02_hard.py | 28 +++++++++++------- lesson02/home_work/hw02_normal.py | 24 ++++++++++------ lesson03/home_work/hw03_easy.py | 7 ++--- lesson03/home_work/hw03_hard.py | 9 ++++-- lesson05/home_work/hw05_easy.py | 3 +- lesson05/home_work/hw05_hard.py | 7 +++-- lesson05/home_work/hw05_normal.py | 9 ++++-- lesson06/home_work/hw06_easy.py | 5 ++-- lesson06/home_work/hw06_hard.py | 12 ++++---- lesson06/home_work/hw06_normal.py | 16 +++++++---- lesson07/home_work/loto.py | 3 +- lesson08/home_work/openweather.py | 47 ++++++++++++++++++++----------- 16 files changed, 139 insertions(+), 73 deletions(-) diff --git a/lesson01/home_work/hw01_easy.py b/lesson01/home_work/hw01_easy.py index 4592ef2af..ddc55bf68 100644 --- a/lesson01/home_work/hw01_easy.py +++ b/lesson01/home_work/hw01_easy.py @@ -1,11 +1,15 @@ +__author__ = 'Ваши Ф.И.О.' + # Задача-1: Дано произвольное целое число, вывести поочередно цифры исходного числа # код пишем тут... # Задача-2: Исходные значения двух переменных запросить у пользователя. # Поменять значения переменных местами. Вывести новые значения на экран. -# Не нужно решать задачу так: print("a = ", b, "b = ", a) - это неправильное решение! +# Не нужно решать задачу так: +# print("a = ", b, "b = ", a) - это неправильное решение! -# Задача-3: Запросите у пользователя его возраст. Если ему есть 18 лет, выведите: "Доступ разрешен", +# Задача-3: Запросите у пользователя его возраст. +# Если ему есть 18 лет, выведите: "Доступ разрешен", # иначе "Извините, пользование данным ресурсом только с 18 лет" diff --git a/lesson01/home_work/hw01_hard.py b/lesson01/home_work/hw01_hard.py index d4d9fa7aa..4595b93d2 100644 --- a/lesson01/home_work/hw01_hard.py +++ b/lesson01/home_work/hw01_hard.py @@ -1,3 +1,6 @@ + +__author__ = 'Ваши Ф.И.О.' + # Задание-1: # Ваня набрал несколько операций в интерпретаторе и получал результаты: # Код: a == a**2 @@ -6,4 +9,6 @@ # Результат: True # Код: a > 999999 # Результат: True -# Вопрос: Чему была равна переменная a, если точно известно, что её значение не изменялось? + +# Вопрос: Чему была равна переменная a, +# если точно известно, что её значение не изменялось? diff --git a/lesson01/home_work/hw01_normal.py b/lesson01/home_work/hw01_normal.py index 8c6435811..f8aa0c5e9 100644 --- a/lesson01/home_work/hw01_normal.py +++ b/lesson01/home_work/hw01_normal.py @@ -1,8 +1,11 @@ -__author__ = '' + +__author__ = 'Ваши Ф.И.О.' # Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа. -# Например, дается x = 58375. Нужно вывести максимальную цифру в данном числе, т.е. 8. -# Подразумевается, что мы не знаем это число заранее. Число приходит в виде целого беззнакового. +# Например, дается x = 58375. +# Нужно вывести максимальную цифру в данном числе, т.е. 8. +# Подразумевается, что мы не знаем это число заранее. +# Число приходит в виде целого беззнакового. # Задача-2: Исходные значения двух переменных запросить у пользователя. @@ -10,7 +13,8 @@ # Решите задачу, используя только две переменные. -# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида ax2 + bx + c = 0. +# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида +# ax2 + bx + c = 0. # Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math # import math # math.sqrt(4) - вычисляет корень числа 4 diff --git a/lesson02/home_work/hw02_easy.py b/lesson02/home_work/hw02_easy.py index 370c370b2..ed4447e50 100644 --- a/lesson02/home_work/hw02_easy.py +++ b/lesson02/home_work/hw02_easy.py @@ -1,5 +1,8 @@ # Задача-1: -# Дан список фруктов. Напишите программу, выводящую фрукты в виде нумерованного списка, выровненного по правой стороне +# Дан список фруктов. +# Напишите программу, выводящую фрукты в виде нумерованного списка, +# выровненного по правой стороне. + # Пример: # Дано: ["яблоко", "банан", "киви", "арбуз"] # Вывод: @@ -8,11 +11,15 @@ # 3. киви # 4. арбуз -# Подсказка: использует метод .format() +# Подсказка: воспользоваться методом .format() + # Задача-2: -# Даны два произвольные списка. Удалите из первого списка элементы, присутствующие во втором списке. +# Даны два произвольные списка. +# Удалите из первого списка элементы, присутствующие во втором списке. + # Задача-3: -# Дан произвольный список из целых чисел. Получите НОВЫЙ список из элементов исходного, выполнив следующие условия: +# Дан произвольный список из целых чисел. +# Получите НОВЫЙ список из элементов исходного, выполнив следующие условия: # если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два. diff --git a/lesson02/home_work/hw02_hard.py b/lesson02/home_work/hw02_hard.py index d2421bc0a..c96843184 100644 --- a/lesson02/home_work/hw02_hard.py +++ b/lesson02/home_work/hw02_hard.py @@ -1,16 +1,20 @@ -# Задание-1: уравнение прямой вида y = kx + b задано ввиде строки. -# Определить координату y точки с заданной координатой x +# Задание-1: уравнение прямой вида y = kx + b задано в виде строки. +# Определить координату y точки с заданной координатой x. equation = 'y = -12x + 11111140.2121' x = 2.5 # вычислите и выведите y -# Задание-2: Дата задана в виде строки формата 'dd.mm.yyyy'. Проверить, корректно ли введена дата. + +# Задание-2: Дата задана в виде строки формата 'dd.mm.yyyy'. +# Проверить, корректно ли введена дата. # Условия корректности: -# 1. День должен приводиться к целому числу в диапазоне от 1 до 30(31) (в зависимости от месяца, февраль не учитываем) +# 1. День должен приводиться к целому числу в диапазоне от 1 до 30(31) +# (в зависимости от месяца, февраль не учитываем) # 2. Месяц должен приводиться к целому числу в диапазоне от 1 до 12 # 3. Год должен приводиться к целому положительному числу в диапазоне от 1 до 9999 -# 4. Длина исходной строки для частей должна быть в соответствии с форматом (т.е. 2 - для дня, 2- месяц, 4 -год) +# 4. Длина исходной строки для частей должна быть в соответствии с форматом +# (т.е. 2 символа для дня, 2 - для месяца, 4 - для года) # Пример корректной даты date = '01.11.1985' @@ -20,11 +24,14 @@ date = '1.12.1001' date = '-2.10.3001' -# Задание-3: "Перевернутая башня" (Задача олимпиадного уровня) + +# Задание-3: "Перевёрнутая башня" (Задача олимпиадного уровня) # -# Вавилонцы решили построить удивительную башню — расширяющуюся к верху и содержащую бесконечное число этажей и комнат. -# Она устроена следующим образом — на первом этаже одна комната, затем идет два этажа, -# на каждом из которых по две комнаты, затем идёт три этажа, на каждом из которых по три комнаты и так далее: +# Вавилонцы решили построить удивительную башню — +# расширяющуюся к верху и содержащую бесконечное число этажей и комнат. +# Она устроена следующим образом — на первом этаже одна комната, +# затем идет два этажа, на каждом из которых по две комнаты, +# затем идёт три этажа, на каждом из которых по три комнаты и так далее: # ... # 12 13 14 # 9 10 11 @@ -33,7 +40,8 @@ # 2 3 # 1 # -# Эту башню решили оборудовать лифтом --- и вот задача: нужно научиться по номеру комнаты определять, +# Эту башню решили оборудовать лифтом --- и вот задача: +# нужно научиться по номеру комнаты определять, # на каком этаже она находится и какая она по счету слева на этом этаже. # # Входные данные: В первой строчке задан номер комнаты N, 1 ≤ N ≤ 2 000 000 000. diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index e446ac144..3acfaabb6 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -1,17 +1,25 @@ # Задача-1: -# Дан список, заполненный произвольными целыми числами, получите новый список, элементами которого будут -# квадратные корни элементов исходного списка, но только если результаты извлечения корня не имеют десятичной части и +# Дан список, заполненный произвольными целыми числами, получите новый список, +# элементами которого будут квадратные корни элементов исходного списка, +# но только если результаты извлечения корня не имеют десятичной части и # если такой корень вообще можно извлечь # Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2] + # Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013. # Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года. # Склонением пренебречь (2000 года, 2010 года) -# Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами в диапазоне от -100 до 100 -# В списке должно быть n - элементов -# Подсказка: для получения случайного числа используйте функцию randint() модуля random -# Задача-4: Дан список, заполненный произвольными целыми числами -# Получите новый список, элементами которого будут только уникальные элементы исходного -# Например, lst = [1,2,4,5,6,2,5,2], нужно получить lst2 = [1,4,6] +# Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами +# в диапазоне от -100 до 100. В списке должно быть n - элементов. +# Подсказка: +# для получения случайного числа используйте функцию randint() модуля random + + +# Задача-4: Дан список, заполненный произвольными целыми числами. +# Получите новый список, элементами которого будут: +# а) неповторяющиеся элементы исходного списка: +# например, lst = [1, 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 2, 4, 5, 6] +# б) элементы исходного списка, которые не имеют повторений: +# например, lst = [1 , 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 4, 6] diff --git a/lesson03/home_work/hw03_easy.py b/lesson03/home_work/hw03_easy.py index 6027c08ef..5035412b5 100644 --- a/lesson03/home_work/hw03_easy.py +++ b/lesson03/home_work/hw03_easy.py @@ -1,22 +1,21 @@ # Задание-1: # Напишите функцию, округляющую полученное произвольное десятичное число -# до кол-ва знаков (кол-во знаков передается вторым аргументом) +# до кол-ва знаков (кол-во знаков передается вторым аргументом). # Округление должно происходить по математическим правилам (0.6 --> 1, 0.4 --> 0). -# Для решения задачи не используйте встроенные функции и функции из модуля math - +# Для решения задачи не используйте встроенные функции и функции из модуля math. def my_round(number, ndigits): pass my_round(2.1234567, 5) + # Задание-2: # Дан шестизначный номер билета. Определить, является ли билет счастливым. # Решение реализовать в виде функции. # Билет считается счастливым, если сумма его первых и последних цифр равны. # !!!P.S.: функция не должна НИЧЕГО print'ить - def lucky_ticket(ticket_number): pass diff --git a/lesson03/home_work/hw03_hard.py b/lesson03/home_work/hw03_hard.py index 9bb864f4d..a8c7f668a 100644 --- a/lesson03/home_work/hw03_hard.py +++ b/lesson03/home_work/hw03_hard.py @@ -1,13 +1,15 @@ # Задание-1: # Написать программу, выполняющую операции (сложение и вычитание) с простыми дробями. -# Дроби вводятся и выводятся в формате: n x/y ,где n - целая часть, x - числитель, у - знаменатель. +# Дроби вводятся и выводятся в формате: +# n x/y ,где n - целая часть, x - числитель, у - знаменатель. # Дроби могут быть отрицательные и не иметь целой части, или иметь только целую часть. # Примеры: -# Ввод: 5/6 + 4/7 (все выражение вводится целиком в виде строки) -# Вывод: 1 17/42 (результат обязательно упростить и выделить целую часть) +# Ввод: 5/6 + 4/7 (всё выражение вводится целиком в виде строки) +# Вывод: 1 17/42 (результат обязательно упростить и выделить целую часть) # Ввод: -2/3 - -2 # Вывод: 1 1/3 + # Задание-2: # Дана ведомость расчета заработной платы (файл "data/workers"). # Рассчитайте зарплату всех работников, зная что они получат полный оклад, @@ -16,6 +18,7 @@ # они получают удвоенную ЗП, пропорциональную норме. # Кол-во часов, которые были отработаны, указаны в файле "data/hours_of" + # Задание-3: # Дан файл ("data/fruits") со списком фруктов. # Записать в новые файлы все фрукты, начинающиеся с определенной буквы. diff --git a/lesson05/home_work/hw05_easy.py b/lesson05/home_work/hw05_easy.py index 59252493d..c6317de2b 100644 --- a/lesson05/home_work/hw05_easy.py +++ b/lesson05/home_work/hw05_easy.py @@ -1,5 +1,6 @@ # Задача-1: -# Напишите скрипт, создающий директории dir_1 - dir_9 в папке, из которой запущен данный скрипт. +# Напишите скрипт, создающий директории dir_1 - dir_9 в папке, +# из которой запущен данный скрипт. # И второй скрипт, удаляющий эти папки. # Задача-2: diff --git a/lesson05/home_work/hw05_hard.py b/lesson05/home_work/hw05_hard.py index 5161f162b..7507e47b2 100644 --- a/lesson05/home_work/hw05_hard.py +++ b/lesson05/home_work/hw05_hard.py @@ -5,10 +5,11 @@ # rm - удаляет указанный файл (запросить подтверждение операции) # cd - меняет текущую директорию на указанную # ls - отображение полного пути текущей директории -# путь считать абсолютным (full_path) - в Linux начинается с /, в Windows с имени диска +# путь считать абсолютным (full_path) - +# в Linux начинается с /, в Windows с имени диска, # все остальные пути считать относительными. -# Важно! Все операции должны выполняться в той директории, в который вы находитесь. Исходной директорией считать ту, -# в которой был запущен скрипт. +# Важно! Все операции должны выполняться в той директории, в который вы находитесь. +# Исходной директорией считать ту, в которой был запущен скрипт. # P.S. По возможности, сделайте кросс-платформенную реализацию. diff --git a/lesson05/home_work/hw05_normal.py b/lesson05/home_work/hw05_normal.py index 6c0d59d25..ead6bbc19 100644 --- a/lesson05/home_work/hw05_normal.py +++ b/lesson05/home_work/hw05_normal.py @@ -1,12 +1,15 @@ # Задача-1: -# Напишите небольшую консольную утилиту, позволяющую работать с папками текущей директории. +# Напишите небольшую консольную утилиту, +# позволяющую работать с папками текущей директории. # Утилита должна иметь меню выбора действия, в котором будут пункты: # 1. Перейти в папку # 2. Просмотреть содержимое текущей папки # 3. Удалить папку # 4. Создать папку # При выборе пунктов 1, 3, 4 программа запрашивает название папки -# и выводит результат действия: "Успешно создано/удалено/перешел", "Невозможно создать/удалить/перейти" +# и выводит результат действия: "Успешно создано/удалено/перешел", +# "Невозможно создать/удалить/перейти" # Для решения данной задачи используйте алгоритмы из задания easy, -# оформленные в виде соответствующих функций, и импортированные в данный файл из easy.py +# оформленные в виде соответствующих функций, +# и импортированные в данный файл из easy.py diff --git a/lesson06/home_work/hw06_easy.py b/lesson06/home_work/hw06_easy.py index 547617f80..fe5dc2b11 100644 --- a/lesson06/home_work/hw06_easy.py +++ b/lesson06/home_work/hw06_easy.py @@ -3,6 +3,7 @@ # Задача-2: Написать Класс "Равнобочная трапеция", заданной координатами 4-х точек. -# Предусмотреть в классе методы: проверка, является ли фигура равнобочной трапецией; -# вычисления: длины сторон, периметр, площадь. +# Предусмотреть в классе методы: +# проверка, является ли фигура равнобочной трапецией; +# вычисления: длины сторон, периметр, площадь. diff --git a/lesson06/home_work/hw06_hard.py b/lesson06/home_work/hw06_hard.py index 069742ce0..fae8d84d2 100644 --- a/lesson06/home_work/hw06_hard.py +++ b/lesson06/home_work/hw06_hard.py @@ -1,10 +1,12 @@ # Задание-1: Решите задачу (дублированную ниже): -# Дана ведомость расчета заработной платы (файл "data/workers"). Рассчитайте зарплату всех работников, -# зная что они получат полный оклад, если отработают норму часов. Если же они отработали меньше нормы, -# то их ЗП уменьшается пропорционально, а за заждый час переработки они получают удвоенную ЗП, -# пропорциональную норме. +# Дана ведомость расчета заработной платы (файл "data/workers"). +# Рассчитайте зарплату всех работников, зная что они получат полный оклад, +# если отработают норму часов. Если же они отработали меньше нормы, +# то их ЗП уменьшается пропорционально, а за заждый час переработки они получают +# удвоенную ЗП, пропорциональную норме. # Кол-во часов, которые были отработаны, указаны в файле "data/hours_of" # С использованием классов. -# Реализуйте классы сотрудников так, чтобы на вход функции-конструктора каждый работник получал строку из файла +# Реализуйте классы сотрудников так, чтобы на вход функции-конструктора +# каждый работник получал строку из файла diff --git a/lesson06/home_work/hw06_normal.py b/lesson06/home_work/hw06_normal.py index e5a1581e1..01c3982f4 100644 --- a/lesson06/home_work/hw06_normal.py +++ b/lesson06/home_work/hw06_normal.py @@ -1,13 +1,17 @@ # Задание-1: # Реализуйте описаную ниже задачу, используя парадигмы ООП: -# В школе есть Классы(5А, 7Б и т.д.), в которых учатся Ученики. У каждого ученика есть два Родителя(мама и папа). -# Также в школе преподают Учителя, один учитель может преподавать в неограниченном кол-ве классов -# свой определенный предмет. Т.е. Учитель Иванов может преподавать математику у 5А и 6Б, но больше математику не -# может преподавать никто другой. +# В школе есть Классы(5А, 7Б и т.д.), в которых учатся Ученики. +# У каждого ученика есть два Родителя(мама и папа). +# Также в школе преподают Учителя. Один учитель может преподавать +# в неограниченном кол-ве классов свой определенный предмет. +# Т.е. Учитель Иванов может преподавать математику у 5А и 6Б, +# но больше математику не может преподавать никто другой. # Выбранная и заполненная данными структура должна решать следующие задачи: # 1. Получить полный список всех классов школы -# 2. Получить список всех учеников в указанном классе(каждый ученик отображается в формате "Фамилия И.О.") -# 3. Получить список всех предметов указанного ученика (Ученик --> Класс --> Учителя --> Предметы) +# 2. Получить список всех учеников в указанном классе +# (каждый ученик отображается в формате "Фамилия И.О.") +# 3. Получить список всех предметов указанного ученика +# (Ученик --> Класс --> Учителя --> Предметы) # 4. Узнать ФИО родителей указанного ученика # 5. Получить список всех Учителей, преподающих в указанном классе diff --git a/lesson07/home_work/loto.py b/lesson07/home_work/loto.py index e30db8c3e..da01d4c00 100644 --- a/lesson07/home_work/loto.py +++ b/lesson07/home_work/loto.py @@ -1,6 +1,7 @@ #!/usr/bin/python3 -"""Лото +""" +== Лото == Правила игры в лото. diff --git a/lesson08/home_work/openweather.py b/lesson08/home_work/openweather.py index 5b321286f..a9debfa1c 100644 --- a/lesson08/home_work/openweather.py +++ b/lesson08/home_work/openweather.py @@ -1,6 +1,12 @@ -""" OpenWeatherMap -OpenWeatherMap — онлайн-сервис, который предоставляет бесплатный API для доступа к данным о текущей погоде, прогнозам, для web-сервисов и мобильных приложений. Архивные данные доступны только на коммерческой основе. В качестве источника данных используются официальные метеорологические службы, данные из метеостанций аэропортов, и данные с частных метеостанций. +""" +== OpenWeatherMap == + +OpenWeatherMap — онлайн-сервис, который предоставляет бесплатный API + для доступа к данным о текущей погоде, прогнозам, для web-сервисов + и мобильных приложений. Архивные данные доступны только на коммерческой основе. + В качестве источника данных используются официальные метеорологические службы + данные из метеостанций аэропортов, и данные с частных метеостанций. Необходимо решить следующие задачи: @@ -9,7 +15,8 @@ Предлагается 2 варианта (по желанию): - получить APPID вручную - - автоматизировать процесс получения APPID, используя дополнительную библиотеку GRAB (pip install grab) + - автоматизировать процесс получения APPID, + используя дополнительную библиотеку GRAB (pip install grab) Необходимо зарегистрироваться на сайте openweathermap.org: https://home.openweathermap.org/users/sign_up @@ -17,23 +24,25 @@ Войти на сайт по ссылке: https://home.openweathermap.org/users/sign_in - Свой ключ вытащить со страницы отсюда: + Свой ключ "вытащить" со страницы отсюда: https://home.openweathermap.org/api_keys Ключ имеет смысл сохранить в локальный файл, например, "app.id" == Получение списка городов == - Список городов может быть получен по ссылке: http://bulk.openweathermap.org/sample/city.list.json.gz + Список городов может быть получен по ссылке: + http://bulk.openweathermap.org/sample/city.list.json.gz Далее снова есть несколько вариантов (по желанию): - скачать и распаковать список вручную - автоматизировать скачивание (ulrlib) и распаковку списка - (воспользоваться модулем gzip или вызвать распаковку через создание процесса архиватора через модуль subprocess) + (воспользоваться модулем gzip + или распаковать внешним архиватором, воспользовавшись модулем subprocess) Список достаточно большой. Представляет собой JSON-строки: - {"_id":707860,"name":"Hurzuf","country":"UA","coord":{"lon":34.283333,"lat":44.549999}} - {"_id":519188,"name":"Novinki","country":"RU","coord":{"lon":37.666668,"lat":55.683334}} +{"_id":707860,"name":"Hurzuf","country":"UA","coord":{"lon":34.283333,"lat":44.549999}} +{"_id":519188,"name":"Novinki","country":"RU","coord":{"lon":37.666668,"lat":55.683334}} == Получение погоды == @@ -50,13 +59,19 @@ Данные о погоде выдаются в JSON-формате - {"coord":{"lon":38.44,"lat":55.87},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],"base":"cmc stations","main":{"temp":280.03,"pressure":1006,"humidity":83,"temp_min":273.15,"temp_max":284.55},"wind":{"speed":3.08,"deg":265,"gust":7.2},"rain":{"3h":0.015},"clouds":{"all":76},"dt":1465156452,"sys":{"type":3,"id":57233,"message":0.0024,"country":"RU","sunrise":1465087473,"sunset":1465149961},"id":520068,"name":"Noginsk","cod":200} + {"coord":{"lon":38.44,"lat":55.87}, + "weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}], + "base":"cmc stations","main":{"temp":280.03,"pressure":1006,"humidity":83, + "temp_min":273.15,"temp_max":284.55},"wind":{"speed":3.08,"deg":265,"gust":7.2}, + "rain":{"3h":0.015},"clouds":{"all":76},"dt":1465156452, + "sys":{"type":3,"id":57233,"message":0.0024,"country":"RU","sunrise":1465087473, + "sunset":1465149961},"id":520068,"name":"Noginsk","cod":200} == Сохранение данных в локальную БД == Программа должна позволять: -1. Создавать файл базы данных SQLite с следующей структурой данных (если файла - базы данных не существует): +1. Создавать файл базы данных SQLite со следующей структурой данных + (если файла базы данных не существует): Погода id_города INTEGER PRIMARY KEY @@ -66,7 +81,8 @@ id_погоды INTEGER # weather.id из JSON-данных 2. Выводить список стран из файла и предлагать пользователю выбрать страну -(ввиду того, что список городов и стран весьма велик имеет смысл запрашивать у пользователя имя города или страны +(ввиду того, что список городов и стран весьма велик + имеет смысл запрашивать у пользователя имя города или страны и искать данные в списке доступных городов/стран (регуляркой)) 3. Скачивать JSON (XML) файлы погоды в городах выбранной страны @@ -76,14 +92,13 @@ При повторном запуске скрипта: -- используется уже скачанный файл с городами -- используется созданная база данных, новые данные добавляются и обновляются - +- используется уже скачанный файл с городами; +- используется созданная база данных, новые данные добавляются и обновляются. При работе с XML-файлами: -Доступ к данным в XML файлах происходит через пространство имен: +Доступ к данным в XML-файлах происходит через пространство имен: Date: Fri, 28 Sep 2018 19:47:57 +0300 Subject: [PATCH 03/11] Fix typo --- lesson07/home_work/loto.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson07/home_work/loto.py b/lesson07/home_work/loto.py index da01d4c00..5ea6ad844 100644 --- a/lesson07/home_work/loto.py +++ b/lesson07/home_work/loto.py @@ -44,8 +44,8 @@ 23 33 38 48 71 -------------------------- -- Карточка компьютера --- - 7 87 - 14 11 - 16 49 55 88 77 + 7 11 - 14 87 + 16 49 55 77 88 15 20 - 76 - -------------------------- Зачеркнуть цифру? (y/n) From 065eb5b191116d602667d6eeb8778075f0399823 Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 21 Mar 2019 13:55:13 +0300 Subject: [PATCH 04/11] =?UTF-8?q?=D0=92=D0=AB=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson01/home_work/hw01_easy.py | 21 +++++++++++++++- lesson01/home_work/hw01_hard.py | 4 ++- lesson01/home_work/hw01_normal.py | 42 ++++++++++++++++++++++++++++++- 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/lesson01/home_work/hw01_easy.py b/lesson01/home_work/hw01_easy.py index f927b0b06..63b896eeb 100644 --- a/lesson01/home_work/hw01_easy.py +++ b/lesson01/home_work/hw01_easy.py @@ -1,5 +1,5 @@ -__author__ = 'Ваши Ф.И.О.' +__author__ = 'Гобелков Павел Виталевич' # Задача-1: Дано произвольное целое число (число заранее неизвестно). # Вывести поочередно цифры исходного числа (порядок вывода цифр неважен). @@ -8,6 +8,9 @@ # * при желании решите задачу с применением цикла for. # код пишем тут... +number = list(input()) +for digit in number: + print(digit) # Задача-2: Исходные значения двух переменных запросить у пользователя. @@ -18,7 +21,23 @@ # Не нужно решать задачу так: # print("a = ", b, "b = ", a) - это неправильное решение! +a = input('Введите чило а: ') +b = input('Введите чило b: ') +c = 0 +a = c +a = b +b = c +print(a) +print(b) # Задача-3: Запросите у пользователя его возраст. # Если ему есть 18 лет, выведите: "Доступ разрешен", # иначе "Извините, пользование данным ресурсом только с 18 лет" + +years = input('Укажите свой возраст: ') + +if years >= 18: + print("Доступ разрешен") +else: + print('Извините') + diff --git a/lesson01/home_work/hw01_hard.py b/lesson01/home_work/hw01_hard.py index 7df268664..ec37e3aa5 100644 --- a/lesson01/home_work/hw01_hard.py +++ b/lesson01/home_work/hw01_hard.py @@ -1,5 +1,5 @@ -__author__ = 'Ваши Ф.И.О.' +__author__ = 'Гобелков Павел Витальевич' # Задание-1: # Ваня набрал несколько операций в интерпретаторе и получал результаты: @@ -13,4 +13,6 @@ # Вопрос: Чему была равна переменная a, # если точно известно, что её значение не изменялось? +a = False + # Подсказка: это значение точно есть ;) diff --git a/lesson01/home_work/hw01_normal.py b/lesson01/home_work/hw01_normal.py index 991724e9a..cdb159041 100644 --- a/lesson01/home_work/hw01_normal.py +++ b/lesson01/home_work/hw01_normal.py @@ -1,5 +1,5 @@ -__author__ = 'Ваши Ф.И.О.' +__author__ = 'Гобелков Павел Витальевич' # Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа. # Например, дается x = 58375. @@ -10,6 +10,20 @@ # * постарайтесь решить задачу с применением арифметики и цикла while; # * при желании и понимании решите задачу с применением цикла for. +number = + +a = str(number) +b = tuple(a) +def bubble(array): + for i in range(N-1): + for j in range(N-i-1): + if array[j] > array[j+1]: + buff = array[j] + array[j] = array[j+1] + array[j+1] = buff + +bubble(b) +print(b[-1]) # Задача-2: Исходные значения двух переменных запросить у пользователя. # Поменять значения переменных местами. Вывести новые значения на экран. @@ -18,6 +32,10 @@ # * постарайтесь сделать решение через действия над числами; # * при желании и понимании воспользуйтесь синтаксисом кортежей Python. +a = input() +b = input() + +a, b = b, a # Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида # ax² + bx + c = 0. @@ -25,3 +43,25 @@ # Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math: # import math # math.sqrt(4) - вычисляет корень числа 4 + +import math + +a = int(input('введите а:')) +b = int(input('введите b:')) +c = int(input('введите c:')) + +D = b**2-4*a*c + +if d > 0: + x1 = (-b+math.sqrt(D))/2*a + x2 = (-b-math.sqrt(D))/2*a + print(x1, x2) +elif d == 0: + x = (-b+math.sqrt(D))/2*a + print(x) +else: + print("Корней нет") + + + + From 4d4f79b4738a1b28d319caa182ba7b59c5eeb86b Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 21 Mar 2019 15:13:20 +0300 Subject: [PATCH 05/11] debug --- lesson01/home_work/hw01_normal.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lesson01/home_work/hw01_normal.py b/lesson01/home_work/hw01_normal.py index cdb159041..ef4bc41f9 100644 --- a/lesson01/home_work/hw01_normal.py +++ b/lesson01/home_work/hw01_normal.py @@ -49,6 +49,9 @@ def bubble(array): a = int(input('введите а:')) b = int(input('введите b:')) c = int(input('введите c:')) +x = 0 +x1 = 0 +x2 = 0 D = b**2-4*a*c From 206ba8813afbbca82beabd8739fa3ce71291ab61 Mon Sep 17 00:00:00 2001 From: Pavel Date: Wed, 27 Mar 2019 21:49:06 +0300 Subject: [PATCH 06/11] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=B0=D0=BB=D1=81=D1=8F=20=D1=81=20=D1=80=D0=B5=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC,=20=D0=BD=D0=B5=20=D0=B2=D1=81=D0=B5?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8=20=D0=B4=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D1=81=D1=8C=20=D0=BB=D0=B5=D0=B3=D0=BA=D0=BE,=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD=D1=8E=D1=8E=20=D1=82=D0=B0?= =?UTF-8?q?=D0=BA=20=D0=B8=20=D0=BD=D0=B5=20=D1=81=D0=BC=D0=BE=D0=B3=20?= =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B8=D1=82=D1=8C(?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson02/home_work/hw02_easy.py | 30 ++++++++++++++++----- lesson02/home_work/hw02_hard.py | 43 ++++++++++++++++++++++++++++++- lesson02/home_work/hw02_normal.py | 43 ++++++++++++++++++++++++++++--- 3 files changed, 105 insertions(+), 11 deletions(-) diff --git a/lesson02/home_work/hw02_easy.py b/lesson02/home_work/hw02_easy.py index ed4447e50..d11200560 100644 --- a/lesson02/home_work/hw02_easy.py +++ b/lesson02/home_work/hw02_easy.py @@ -3,13 +3,12 @@ # Напишите программу, выводящую фрукты в виде нумерованного списка, # выровненного по правой стороне. -# Пример: -# Дано: ["яблоко", "банан", "киви", "арбуз"] -# Вывод: -# 1. яблоко -# 2. банан -# 3. киви -# 4. арбуз + +arr = ["яблоко", "банан", "киви", "арбуз"] +c = 0 +for i in arr: + c += 1 + print(c, '{:>8}'.format(i)) # Подсказка: воспользоваться методом .format() @@ -17,9 +16,26 @@ # Задача-2: # Даны два произвольные списка. # Удалите из первого списка элементы, присутствующие во втором списке. +arr1 = [2, 2, 1, 1, 4, 1, 8, 3] +arr2 = [1, 4, 8] + +dif = list(set(arr1) ^ set(arr2)) +arr1 = [i for i in arr1 if i in dif ] + +print(arr1) # Задача-3: # Дан произвольный список из целых чисел. # Получите НОВЫЙ список из элементов исходного, выполнив следующие условия: # если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два. + +n_arr = [1, 2, 3, 4, 5, 6, 7, 8] +m_arr = [] +for i in n_arr: + if i % 2 == 0: + m_arr.append(i/4) + else: + m_arr.append(i*2) + +print(m_arr) diff --git a/lesson02/home_work/hw02_hard.py b/lesson02/home_work/hw02_hard.py index c96843184..6aa4b4229 100644 --- a/lesson02/home_work/hw02_hard.py +++ b/lesson02/home_work/hw02_hard.py @@ -4,8 +4,14 @@ equation = 'y = -12x + 11111140.2121' x = 2.5 # вычислите и выведите y +k = int(equation[4:7]) +b = equation[10:-1] +b = float(b) +y = k*x + b +print(y) + # Задание-2: Дата задана в виде строки формата 'dd.mm.yyyy'. # Проверить, корректно ли введена дата. # Условия корректности: @@ -24,6 +30,37 @@ date = '1.12.1001' date = '-2.10.3001' +############ + +date = input('Введите дату формата дд.мм.гггг: ') + +d = date[0:2] +m = date[3:5] +y = date[6:] + +if len(date) > 10: + print('Неверный формат') +else: + d = int(d) + m = int(m) + y = int(y) + + md = 30 + + if 9999 < y or y < 1: + print('Неверно указан год') + elif 12 < m or m < 1: + print('Неверно указан месяц') + elif md < d or d < 1: + for i in (1, 3, 5, 7, 8, 10, 12): + if m == i: + md = 31 + print('Неверно указан день') + else: + print(date) + + + # Задание-3: "Перевёрнутая башня" (Задача олимпиадного уровня) # @@ -53,4 +90,8 @@ # Выход: 6 2 # # Вход: 11 -# Выход: 5 3 \ No newline at end of file +# Выход: 5 3 +n = 0 +while n != 2000000001: + n +=1 + diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index 3acfaabb6..b2f79e20d 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -3,23 +3,60 @@ # элементами которого будут квадратные корни элементов исходного списка, # но только если результаты извлечения корня не имеют десятичной части и # если такой корень вообще можно извлечь -# Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2] +# Пример: Дано: +import math +arr = [2, -5, 8, 9, -25, 25, 4] +n_arr = [] +for i in arr: + if i > 0 and (math.sqrt(i) - int(math.sqrt(i))==0): + n_arr.append(i) +print(n_arr) # Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013. # Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года. # Склонением пренебречь (2000 года, 2010 года) +mn = {'01': 'январь', '02': 'февраль', '03': 'март', '04': 'апрель', '05': 'май', '06': 'июнь', '07': 'июль', '08': 'август', '09': 'сентябрь', '10': 'октябрь', '11': 'ноябрь', '12': 'декабрь'} +day = {'1': "первое", '2': "второе", '3': "третье", '4': "четвертое", '5': "пятое", '6': "шестое", '7': "седьмое", '8': "восьмое", '9': "девятое", '10': "десятое", '11': "одинадцатое", '12': "двенадцатое", '13': "тринандцатое", '14': "четырнадцатое", '15': "пятнадцатое", '16': "шестнадцатое", '17': "семнадцатое", '18': "восемнадцатое", '19': "девятнадцатое", '20': "двадцатое", '21': 'двадцать первое', '22': "двадцать второе", '23': "двадцать третье", '24': "двадцать четвертое", '25': "двадцать пятое", '26': "двадцать шестое", '27': "двадцать седбмое", '28': "двадцать восьмое", '29': "двадцать девятое", '30': "тридцатое", '31': "тридцать первое"} + +data = input('Введите дату дд.мм.гггг: ') +i = data.split('.') +print(i) +print('{} {} {}'.format(day[i[0]], mn[i[1]], i[2])) + + + # Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами # в диапазоне от -100 до 100. В списке должно быть n - элементов. # Подсказка: # для получения случайного числа используйте функцию randint() модуля random +import random +n = int(input('Введи число n: ')) +rand_arr = [] +i = 0 +while i != n: + rand_arr.append(random.randint(-100, 100)) + i += 1 +print(rand_arr) # Задача-4: Дан список, заполненный произвольными целыми числами. # Получите новый список, элементами которого будут: # а) неповторяющиеся элементы исходного списка: -# например, lst = [1, 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 2, 4, 5, 6] +lst = [1, 2, 4, 5, 6, 2, 5, 2] + +lst2 = list(set(lst)) + +print(lst2) + # б) элементы исходного списка, которые не имеют повторений: -# например, lst = [1 , 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 4, 6] +# например, +lst1 = [1 , 2, 4, 5, 6, 2, 5, 2] #нужно получить lst2 = [1, 4, 6] + +lst3 = [i for i in lst1 if lst1.count(i) <2] + +print(lst3) + + From 3dcc04618bcabc463caf8288b4551d2c1f4f97a5 Mon Sep 17 00:00:00 2001 From: Pavel Date: Wed, 3 Apr 2019 00:57:46 +0300 Subject: [PATCH 07/11] =?UTF-8?q?=D0=92=20=D1=87=D0=B0=D1=81=D1=82=D0=B8?= =?UTF-8?q?=20HARD=20=D0=BD=D0=B5=20=D0=B7=D0=B0=D0=BA=D0=BE=D0=BD=D1=87?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=81=20=D1=88=D0=B0=D1=85=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson03/home_work/hw03_easy.py | 17 +++++-- lesson03/home_work/hw03_hard.py | 57 ++++++++++++++++++++++ lesson03/home_work/hw03_normal.py | 59 ++++++++++++++++++++--- lesson04/home_work/digit_seq.txt | 1 + lesson04/home_work/hw04_easy.py | 20 ++++++++ lesson04/home_work/hw04_hard.py | 80 +++++++++++++++++++++++++++++++ lesson04/home_work/hw04_normal.py | 36 +++++++++++++- 7 files changed, 258 insertions(+), 12 deletions(-) create mode 100644 lesson04/home_work/digit_seq.txt diff --git a/lesson03/home_work/hw03_easy.py b/lesson03/home_work/hw03_easy.py index 63d13f646..09cabcde0 100644 --- a/lesson03/home_work/hw03_easy.py +++ b/lesson03/home_work/hw03_easy.py @@ -3,10 +3,11 @@ # до кол-ва знаков (кол-во знаков передается вторым аргументом). # Округление должно происходить по математическим правилам (0.6 --> 1, 0.4 --> 0). # Для решения задачи не используйте встроенные функции и функции из модуля math. +import math def my_round(number, ndigits): - pass - + dg = round(number, ndigits) + return dg print(my_round(2.1234567, 5)) print(my_round(2.1999967, 5)) @@ -20,8 +21,16 @@ def my_round(number, ndigits): # !!!P.S.: функция не должна НИЧЕГО print'ить def lucky_ticket(ticket_number): - pass - + ticket_number = str(ticket_number) + if len(ticket_number) < 6: + return 'НЕПРАВИЛЬНЫЙ БИЛЕТ!!!' + else: + ld = ticket_number[:3] + rd = ticket_number[3:] + if int(ld[0]) + int(ld[1]) + int(ld[2]) == int(rd[0]) + int(rd[1]) + int(rd[2]): + return 'Счастливый билет!!!' + else: + return 'Повезет в любви!!!' print(lucky_ticket(123006)) print(lucky_ticket(12321)) diff --git a/lesson03/home_work/hw03_hard.py b/lesson03/home_work/hw03_hard.py index a8c7f668a..cadba8ebc 100644 --- a/lesson03/home_work/hw03_hard.py +++ b/lesson03/home_work/hw03_hard.py @@ -9,6 +9,50 @@ # Ввод: -2/3 - -2 # Вывод: 1 1/3 +ex = input('Введите "n x/y +/- n x/y": ') +s = ex.split() +#n1 = s[0], s[1] +#n2 = s[3], s[4] +print(s) + +def magic1(s): + if s[0].isdigit(): + dr = s[1].split('/') + ch = int(s[0])*int(dr[1])+int(dr[0]) + zn = int(dr[1]) + else: + dr = s[0].split('/') + ch = int(dr[0]) + zn = int(dr[1]) + return ch, zn +def magic2(s): + if s[-2].isdigit(): + dr = s[-1].split('/') + ch = int(s[-2])*int(dr[1])+int(dr[0]) + zn = int(dr[1]) + else: + dr = s[-1].split('/') + ch = int(dr[0]) + zn = int(dr[1]) + return ch, zn + +n1 = list(magic1(s)) +n2 = list(magic2(s)) +print(n1, n2) +if s[1] == '+' or s[2] == '+': + x = ((int(n1[1])*int(n2[0]))+(int(n1[0])*int(n2[1])))//(int(n1[1])*int(n2[1])) + y = ((int(n1[1])*int(n2[0]))+(int(n1[0])*int(n2[1])))%(int(n1[1])*int(n2[1])) + z = int(n1[1])*int(n2[1] +elif s[1] == '-' or s[2] == '-': + x = ((int(n1[1])*int(n2[0]))-(int(n1[0])*int(n2[1])))//(int(n1[1])*int(n2[1])) + y = ((int(n1[1])*int(n2[0]))-(int(n1[0])*int(n2[1])))%(int(n1[1])*int(n2[1])) + z = int(n1[1])*int(n2[1] +else: + print('Неверный аргумент') + +print(x, y,'/', z) + + # Задание-2: # Дана ведомость расчета заработной платы (файл "data/workers"). @@ -17,7 +61,20 @@ # то их ЗП уменьшается пропорционально, а за заждый час переработки # они получают удвоенную ЗП, пропорциональную норме. # Кол-во часов, которые были отработаны, указаны в файле "data/hours_of" +''' +import os + +path = os.path.join('data','workers') +f = open(path, 'r', encoding='UTF-8') + + +for line in f: + st = line.split(' ') + print(st) +f.close() + +''' # Задание-3: # Дан файл ("data/fruits") со списком фруктов. diff --git a/lesson03/home_work/hw03_normal.py b/lesson03/home_work/hw03_normal.py index 38ac1fcc1..fe9506b47 100644 --- a/lesson03/home_work/hw03_normal.py +++ b/lesson03/home_work/hw03_normal.py @@ -2,26 +2,71 @@ # Напишите функцию, возвращающую ряд Фибоначчи с n-элемента до m-элемента. # Первыми элементами ряда считать цифры 1 1 -def fibonacci(n, m): - pass +fib_arr = [0] +def fibonacci(n, m): + i = 0 + fib_arr.append(n) + while int(fib_arr[-1]) < m: + x = int(fib_arr[i]) + int(fib_arr[i+1]) + fib_arr.append(x) + i += 1 + + +fibonacci(1, 344) +print(fib_arr[:-1]) # Задача-2: # Напишите функцию, сортирующую принимаемый список по возрастанию. # Для сортировки используйте любой алгоритм (например пузырьковый). # Для решения данной задачи нельзя использовать встроенную функцию и метод sort() -def sort_to_max(origin_list): - pass - -sort_to_max([2, 10, -12, 2.5, 20, -11, 4, 4, 0]) +a = [2, 10, -12, 2.5 , 20, -11, 4, 4, 0] +N = len(a) +print(N) +def sort_to_max(a): + for i in range(N-1): + for j in range(N-i-1): + if a[j] > a[j+1]: + a[j], a[j+1] = a[j+1], a[j] + return a +print(sort_to_max(a)) # Задача-3: # Напишите собственную реализацию стандартной функции filter. # Разумеется, внутри нельзя использовать саму функцию filter. +arr = [0, '', 0, '', 0, 1, 1, 0] +nr = [] +def not_null(arr): + for i in arr: + if i == 1: + return i +q = not_null(arr) +print(q) + +def my_filter(df, arr): + a = [] + for i in arr: + if df([i]) == True: + a.append(i) + return a + +x = my_filter(not_null, arr) +print(x) + # Задача-4: # Даны четыре точки А1(х1, у1), А2(x2 ,у2), А3(x3 , у3), А4(х4, у4). -# Определить, будут ли они вершинами параллелограмма. +# Определить, будут ли они вершинами параллелограмма + +A1 = input('введите x1, y1: ') +A2 = input('введите x2, y2: ') +A3 = input('введите x3, y3: ') +A4 = input('введите x4, y4: ') + +if A1[1] == A2[1] and A3[1] == A4[1] and (int(A1[0]) - int(A4[0])) == (int(A2[0]) - int(A3[0])): + print("Заданные координаты - вершины параллелограмма") +else: + print("Неизвестная фигура") diff --git a/lesson04/home_work/digit_seq.txt b/lesson04/home_work/digit_seq.txt new file mode 100644 index 000000000..38a0da7f1 --- /dev/null +++ b/lesson04/home_work/digit_seq.txt @@ -0,0 +1 @@ +9448485603223325545000726898228281220578806361850873043721830163439210361542038199509725805873527107924634585734548495621547782981217169806409046563890647340023493987123080754018432474407903520963933523031209864938935290066397959057276935423231550018461214532848633082451589726402074681305822952933920225969042541314891658135091683724737777504785646492590244513625507920866156232336193639394065621606732693853767184470467138004036209626580354916056105232433706584442012129075617311721096649545400578540440961821745425213808159223485334146900461705757981539030187805719349027196825292912042497532854066568959713247803972129657346579777958504910321849470079571130960459325249682308017187117933023471939767334289435108295970771431909592347856264558526699605823740742964263466843917945402979149720778551499193675027713363356191899476956103157290817539569844964749808260638816671800743973186478025772083155639625114417548216126984941009338901187529344457887835124705393275059490848612130058322871490495205467655433269227368345836830972658914186843583844204658769513231868148353983356985096432615446690118604461722061731819369478655674463656643389264108346281209307732076867864405698900055835342584249745300815733470499070382001299371870580936867050967605263256517793992440771112057289647520865332785860758559989629624522567070757427178297350195796249569631332564149969911507229118559499050919956254340597501867895370807240148943060803488392998993515015748482693480493589495018240134239022468557531287482700488845619798138343625304883852511365082219901935358637720073360012431595693627965783448064455641464897122725632332240999091846921065914284650883031086137735419920262707567937578798914301904595359247343449764793029528140323210203782368120056213270986760391834719900895690694422276536639491743732389794285918820897909608842522186514485601784165710662411710717678585215923975412251528042936107040944725918001514923472305196126627586400833148641605814807331271868740628474197106312719049089203205279632324885050977933992849128103984092437386230636031223508457180972090190766046878980181154037089071847366893940781293659003286948621941658605833255463321812513798581339551033286981141788703580476716163528738821278462675773498879333211229460945671686540042653322226086186872099990151569520481515704326720856930272190282462971341016277556865920356313231152065395683566105840514199528386122388707374290639107529689345274132339068126580430552061882554837575930763516983998883074494875058288712525355523050306 \ No newline at end of file diff --git a/lesson04/home_work/hw04_easy.py b/lesson04/home_work/hw04_easy.py index 85035ea8b..6e19dbdc6 100644 --- a/lesson04/home_work/hw04_easy.py +++ b/lesson04/home_work/hw04_easy.py @@ -6,13 +6,33 @@ # квадратами элементов исходного списка # [1, 2, 4, 0] --> [1, 4, 16, 0] +import random + +ar = [random.randint(-10, 10) for _ in range(5)] + +n_ar = [i**2 for i in ar] +print(ar, '=>', n_ar) + + # Задание-2: # Даны два списка фруктов. # Получить список фруктов, присутствующих в обоих исходных списках. +fr_lst1 = ['яблоко', 'апельсин', 'банан', 'киви'] +fr_lst2 = ['киви', 'груша', 'ананас', 'яблоко'] +print(fr_lst1) +print(fr_lst2) +n_lst = [i for i in fr_lst1 for j in fr_lst2 if i == j] +print(n_lst) + # Задание-3: # Дан список, заполненный произвольными числами. # Получить список из элементов исходного, удовлетворяющих следующим условиям: # + Элемент кратен 3 # + Элемент положительный # + Элемент не кратен 4 + +arr = [random.randint(-30, 30) for _ in range(15)] +print(arr) +arr1 = [i for i in arr if i % 3 == 0 and i > 0 and i % 4 > 0] +print(arr1) diff --git a/lesson04/home_work/hw04_hard.py b/lesson04/home_work/hw04_hard.py index 3b12dc315..76d1ba7d3 100644 --- a/lesson04/home_work/hw04_hard.py +++ b/lesson04/home_work/hw04_hard.py @@ -4,6 +4,8 @@ matrix = [[1, 0, 8], [3, 4, 1], [0, 4, 2]] + +print("rotate_matrix = ", list(map(list, zip(*matrix)))) #было в методичке( # Выполнить поворот (транспонирование) матрицы # Пример. Результат: @@ -40,6 +42,27 @@ 71636269561882670428252483600823257530420752963450""" + +def prod_5(s): + prod = int(s[1])*int(s[2])*int(s[3])*int(s[4])*int(s[4]) + return prod +#print(prod_5(s)) + +n = 0 +while n < 10: + s = number[n:n+5] + mx = 0 + if mx < prod_5(s): + mx = prod_5(s) + index = number[n] + print(s, prod_5(s), number[n], mx) + else: + mx = mx + n += 1 +print("Максимальное произведение", mx,'идекс', index) + + + # Задание-3 (Ферзи): # Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били # друг друга. Вам дана расстановка 8 ферзей на доске. @@ -47,3 +70,60 @@ # Программа получает на вход восемь пар чисел, # каждое число от 1 до 8 — координаты 8 ферзей. # Если ферзи не бьют друг друга, выведите слово NO, иначе выведите YES. +import random +fz_mt = matrix = [[random.randint(0, 0) for _ in range(9)] for _ in range(9)] +fz_mt[0] = [i for i in range(0, 9)] +n = 0 +for i in fz_mt: + i[0] = n + n +=1 + +for i in fz_mt: + print(i) +poss = [] +i = 0 +while i < 8: + i += 1 + print('Введите позицию фигуры (парой чисел: 11 или 23 или 54...)', i) + poss.append(list(input())) + +print(poss) + +def line_mat(poss): + mat = poss[0][0] + for i in poss: + if i[0] == mat: + return('YES') + else: + mat = i[0] + return('NO') + +def column_mat(poss): + mat = poss[0][1] + for i in poss: + if i[1] == mat: + return('YES') + else: + mat = i[1] + return('NO') + + +def diag_mat(poss): + pass + + +if diag_mat(poss) == 'NO' and line_mat(poss) == 'NO' and column_mat(poss) == 'NO': + print('Фигуры расставлены верно') +else: + print('Ферзи бьют друг друга') + + + + + + + + + + + diff --git a/lesson04/home_work/hw04_normal.py b/lesson04/home_work/hw04_normal.py index 739dd33f8..17c961d35 100644 --- a/lesson04/home_work/hw04_normal.py +++ b/lesson04/home_work/hw04_normal.py @@ -4,6 +4,7 @@ # Т.е. из строки "mtMmEZUOmcq" нужно получить ['mt', 'm', 'mcq'] # Решить задачу двумя способами: с помощью re и без. +import re line = 'mtMmEZUOmcqWiryMQhhTxqKdSTKCYEJlEZCsGAMkgAYEOmHBSQsSUHKvSfbmxULaysmNO'\ 'GIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLeclMwAoktKlfUBJHPsnawvjPhfgewVzK'\ 'TUfSYtBydXaVIpxWjNKgXANvIoumesCSSvjEGRJosUfuhRRDUuTQwLlJJJDdkVjfSAHqn'\ @@ -19,7 +20,10 @@ 'qHFjvihuNGEEFsfnMXTfptvIOlhKhyYwxLnqOsBdGvnuyEZIheApQGOXWeXoLWiDQNJFa'\ 'XiUWgsKQrDOeZoNlZNRvHnLgCmysUeKnVJXPFIzvdDyleXylnKBfLCjLHntltignbQoiQ'\ 'zTYwZAiRwycdlHfyHNGmkNqSwXUrxGc' +pattern = r'[a-z]+' +ln = re.findall(pattern, line) +print(ln) # Задание-2: # Вывести символы в верхнем регистре, слева от которых находятся @@ -28,7 +32,7 @@ # "GAMkgAYEOmHBSQsSUHKvSfbmxULaysmNOGIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLec" # нужно получить список строк: ['AY', 'NOGI', 'P'] # Решить задачу двумя способами: с помощью re и без. - +print('########################################################################') line_2 = 'mtMmEZUOmcqWiryMQhhTxqKdSTKCYEJlEZCsGAMkgAYEOmHBSQsSUHKvSfbmxULaysm'\ 'NOGIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLeclMwAoktKlfUBJHPsnawvjPhfgewV'\ 'fzKTUfSYtBydXaVIpxWjNKgXANvIoumesCSSvjEGRJosUfuhRRDUuTQwLlJJJDdkVjfSA'\ @@ -44,6 +48,9 @@ 'uXBqHFjvihuNGEEFsfnMXTfptvIOlhKhyYwxLnqOsBdGvnuyEZIheApQGOXWeXoLWiDQN'\ 'JFaXiUWgsKQrDOeZoNlZNRvHnLgCmysUeKnVJXPFIzvdDyleXylnKBfLCjLHntltignbQ'\ 'oiQzTYwZAiRwycdlHfyHNGmkNqSwXUrxGC' +pt = r'[a-z]{2}([A-Z]+)[A-Z]{2}' +ln1 = re.findall(pt, line_2) +print(ln1) # Задание-3: # Напишите скрипт, заполняющий указанный файл (самостоятельно задайте имя файла) @@ -51,3 +58,30 @@ # 2500-значное произвольное число. # Найдите и выведите самую длинную последовательность одинаковых цифр # в вышезаполненном файле. + + +import random + +digit = random.randint(0, 9) +i = 0 +while i < 2499: + digit = str(digit) + str(random.randint(0, 9)) + i +=1 + + + +with open('digit_seq.txt', 'w') as f: + f.write(digit) +with open('digit_seq.txt', 'r', encoding='UTF8') as p: + arr = p.readline() + ar = re.findall(r'0{2,}|1{2,}|2{2,}|3{2,}|4{2,}|5{2,}|6{2,}|7{2,}|8{2,}|9{2,}', arr) + print(ar) + max_seq = len(ar[0]) + i = 0 + while i < len(ar): + if max_seq < len(ar[i]): + max_seq = len(ar[i]) + len_digit = ar[i] + i += 1 + print("Число",len_digit,'длина-', max_seq) + From ffe0304830e4bcf717e688e7082f7dd63a5b2076 Mon Sep 17 00:00:00 2001 From: Pavel Date: Fri, 5 Apr 2019 13:08:17 +0300 Subject: [PATCH 08/11] hw5 --- lesson05/examples/5_with_args.py | 40 ++++++++++++++++++++++++++- lesson05/home_work/hw05_easy.py | 46 +++++++++++++++++++++++++++++++ lesson05/home_work/hw05_hard.py | 38 +++++++++++++++++++++++++ lesson05/home_work/hw05_normal.py | 43 +++++++++++++++++++++++++++++ 4 files changed, 166 insertions(+), 1 deletion(-) diff --git a/lesson05/examples/5_with_args.py b/lesson05/examples/5_with_args.py index 3b44ac487..451823478 100644 --- a/lesson05/examples/5_with_args.py +++ b/lesson05/examples/5_with_args.py @@ -26,10 +26,48 @@ def make_dir(): def ping(): print("pong") + + +def cp(): + pass + + +def rm(): + file_mane = os.path.realrath(input("Укажите название файла ")) + q = input('Вы действительно хотите удалить указанный объект? Д/Н ') + if q == 'Д': + try: + os.remove(file_name) + print('файл {} удален'.format(file_name)) + except FileNotFoundError: + print('Не удается найти файл') + elif: q == 'Н': + break + else: + print('Неверная команда') + + +def cd(): + file_mane = os.path.realrath(input("Укажите название файла ")) + try: + os.chdir(file_path) + print('директория изменена {} '.format(file_path)) + except FileNotFoundError: + print('Не удается найти путь') + + +def ls(): + print(os.getcwd()) + + do = { "help": print_help, "mkdir": make_dir, - "ping": ping + "ping": ping, + "cp": cp, + "rm": rm, + "ls": ls, + "cd": cd } try: diff --git a/lesson05/home_work/hw05_easy.py b/lesson05/home_work/hw05_easy.py index c6317de2b..404dbf1bd 100644 --- a/lesson05/home_work/hw05_easy.py +++ b/lesson05/home_work/hw05_easy.py @@ -1,10 +1,56 @@ +import os +import sys +import shutil + # Задача-1: # Напишите скрипт, создающий директории dir_1 - dir_9 в папке, # из которой запущен данный скрипт. # И второй скрипт, удаляющий эти папки. + +n = 9 + +def mk_dir(path): + os.mkdir(path) + +def ch_dir(path): + os.chdir(path) + +def del_dir(path): + ch_dir(path) + #shutil.rmtree(path) # для рекурсивного удаления + os.rmdir(path) + + +for i in range(n): + dir_path = os.path.join(os.getcwd(), 'dir_{}'.format(i+1)) + mk_dir(dir_path) + + +for i in range(n): + path = '/home/pavel/Python_lessons_basic/lesson05/home_work/dir_{}'.format(i+1) + del_dir(path) + + # Задача-2: # Напишите скрипт, отображающий папки текущей директории. +def list_dir(path): + for i in os.listdir(path): + print(i) + +path1 = os.getcwd() +list_dir(path1) + + # Задача-3: # Напишите скрипт, создающий копию файла, из которого запущен данный скрипт. + +file = sys.argv[0] + +def cp_file(file): + cp_file = 'cp_' + file + shutil.copy(file, cp_file) + +cp_file(file) + diff --git a/lesson05/home_work/hw05_hard.py b/lesson05/home_work/hw05_hard.py index 7507e47b2..71561ac48 100644 --- a/lesson05/home_work/hw05_hard.py +++ b/lesson05/home_work/hw05_hard.py @@ -13,3 +13,41 @@ # Исходной директорией считать ту, в которой был запущен скрипт. # P.S. По возможности, сделайте кросс-платформенную реализацию. +''' +import os +import sys +import shutil + +file_mane = os.path.realrath(input("Укажите название файла ")) + + +def cp(file_name): + pass + + +def rm(file_name): + q = input('Вы действительно хотите удалить указанный объект? Д/Н ') + if q == 'Д': + try: + os.remove(file_name) + print('файл {} удален'.format(file_name)) + except FileNotFoundError: + print('Не удается найти файл') + elif: q == 'Н': + break + else: + print('Неверная команда') + + +def cd(file_path): + try: + os.chdir(file_path) + print('директория изменена {} '.format(file_path)) + except FileNotFoundError: + print('Не удается найти путь') + + +def ls(): + print(os.getcwd()) + +''' diff --git a/lesson05/home_work/hw05_normal.py b/lesson05/home_work/hw05_normal.py index ead6bbc19..243375a2e 100644 --- a/lesson05/home_work/hw05_normal.py +++ b/lesson05/home_work/hw05_normal.py @@ -13,3 +13,46 @@ # Для решения данной задачи используйте алгоритмы из задания easy, # оформленные в виде соответствующих функций, # и импортированные в данный файл из easy.py + + +import shutil +import os +import sys +import hw05_easy as h5 + +if __name__ == '__main__': + pass + + +print('Выберите действие: \n 1. Перейти в папку \n 2. Просмотреть содержимое текущей папки \n 3. Удалить папку \n 4. Создать папку') + +i = 10 +while i != 0: + path = os.getcwd() + i = int(input('Введите номер операции: ')) + if i == 1: + path = input('Введите адрес папки ') + try: + h5.ch_dir(path) + print('Вы сменили директорию!') + except FileNotFoundError: + print('Невозможно перейти!') + elif i == 2: + h5.list_dir(path) + elif i == 3: + path = input('Введите адрес папки ') + try: + h5.del_dir(path) + print('Диретория удалена') + except FileExistsError: + print('Ошибка при удалении') + elif i == 4: + nd = os.path.join(os.getcwd(), input('Введите имя создоваемой папки ')) + try: + h5.mk_dir(nd) + except FileExistsError: + print('Невозможно создать папку') + elif i == 0: + print('Выход из программы') + else: + print('Неверная команда!') From dcc2561a96931be06025888b3e3e7bf155667b58 Mon Sep 17 00:00:00 2001 From: Pavel Date: Mon, 8 Apr 2019 19:38:31 +0300 Subject: [PATCH 09/11] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B8=D0=BB=20HW06?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson06/home_work/hw06_easy.py | 76 +++++++++++++++++- lesson06/home_work/hw06_hard.py | 48 ++++++++++++ lesson06/home_work/hw06_normal.py | 124 ++++++++++++++++++++++++++++++ 3 files changed, 247 insertions(+), 1 deletion(-) diff --git a/lesson06/home_work/hw06_easy.py b/lesson06/home_work/hw06_easy.py index fe5dc2b11..f01ffab05 100644 --- a/lesson06/home_work/hw06_easy.py +++ b/lesson06/home_work/hw06_easy.py @@ -1,9 +1,83 @@ -# Задача-1: Написать класс для фигуры-треугольника, заданного координатами трех точек. +import math + +# Задача-1: # Определить методы, позволяющие вычислить: площадь, высоту и периметр фигуры. +class Triangle: + def __init__(self, ptA, ptB, ptC): + self.ptA = ptA + self.ptB = ptB + self.ptC = ptC + + def line(self, point1, point2): + return math.sqrt((point1[0] - point2[0])**2 + + (point1[1] - point2[1])**2) + + + def areaTriangle(self): + semi_perimeter = self.line_sum() / 2 + return math.sqrt(semi_perimeter + * (semi_perimeter - self.line(self.ptA, self.ptB)) + * (semi_perimeter - self.line(self.ptB, self.ptC)) + * (semi_perimeter - self.line(self.ptC, self.ptA))) + + def line_sum(self): + return self.line(self.ptA, self.ptB) + self.line(self.ptB, self.ptC) + self.line(self.ptC, self.ptA) + + def tri_H(self): + return self.areaTriangle() / (self.line(self.ptA, self.ptB) / 2) + +tri1 = Triangle((4, 9), (16, 25), (36, 49)) +print('Площадь треугольника', tri1.areaTriangle()) +print('Периметр треугольника', tri1.line_sum()) +print('Высота', tri1.tri_H()) + + # Задача-2: Написать Класс "Равнобочная трапеция", заданной координатами 4-х точек. # Предусмотреть в классе методы: # проверка, является ли фигура равнобочной трапецией; # вычисления: длины сторон, периметр, площадь. + +class Trapeze(Triangle): + def __init__(self, ptA, ptB, ptC, ptD): + super().__init__(ptA, ptB, ptC) + self.ptD = ptD + self.lnAB = self.line(self.ptA, self.ptB) + self.lnBC = self.line(self.ptB, self.ptC) + self.lnCD = self.line(self.ptC, self.ptD) + self.lnDA = self.line(self.ptD, self.ptA) + + def areaTriangle2(self): + semi_perimeter = self.line_sum() / 2 + return math.sqrt(semi_perimeter + * (semi_perimeter - self.line(self.ptA, self.ptC)) + * (semi_perimeter - self.lnCD) + * (semi_perimeter - self.lnDA)) + + def trap_area(self): + return self.areaTriangle() + self.areaTriangle2() + + def line_sum_trap(self): + return self.lnAB + self.lnBC + self.lnCD + self.lnDA + + def uniside(self): + if self.lnAB == self.lnCD and self.lnBC != self.lnDA: + return 'Трапеция равнобочная' + elif self.lnAB != self.lnCD and self.lnBC != self.lnDA: + return 'Трапеция не равнобочная' + else: + return 'Другая фигура' + + def side_long(self): + return self.lnAB, self.lnBC, self.lnCD, self.lnDA + +trap1 = Trapeze((4, 10), (16, 223), (36, 49), (56,72)) + +print() + +print('Периметр трапеции = ', trap1.line_sum_trap()) +print('Площадь трапеции = ', trap1.trap_area()) +print(trap1.uniside()) +print(trap1.side_long()) diff --git a/lesson06/home_work/hw06_hard.py b/lesson06/home_work/hw06_hard.py index fae8d84d2..91fb448c6 100644 --- a/lesson06/home_work/hw06_hard.py +++ b/lesson06/home_work/hw06_hard.py @@ -10,3 +10,51 @@ # С использованием классов. # Реализуйте классы сотрудников так, чтобы на вход функции-конструктора # каждый работник получал строку из файла + +import os + +class Workers_name: + def __init__(self, Name, Surname): + self.Name = Name + self.Surname = Surname + self.fullname = self.Name + ' ' + self.Surname + +class Works_hours(Workers_name): + def __init__(self, Name, Surname, Hours): + super().__init__(Name, Surname) + self.Hours = int(Hours) + self.works_d = {self.fullname: self.Hours} + +class Workers(Workers_name): + def __init__(self, Name, Surname, Money, Special, Hours): + super().__init__(Name, Surname) + self.Money = int(Money) + self.Hours = int(Hours) + self.MPH = self.Money / self.Hours + + +wanted_name = input("Введите фамилию сотрудника ") + +money_list = [] + +with open(os.path.join('data', 'hours_of'), 'r', encoding='UTF-8') as hours: + for line in hours: + if wanted_name in line: + per = tuple(line.split()) + W_H = Works_hours(per[0], per[1],per[2]) + + + +with open(os.path.join('data', 'workers'), 'r', encoding='UTF-8') as workers: + for line in workers: + if wanted_name in line: + per = (line.split()) + W_M = Workers(per[0], per[1], per[2], per[3], per[4]) + print('Зарплата сотрудника {}'.format(W_M.fullname)) + if W_M.Hours == W_H.Hours: + print(W_M.Money) + elif W_M.Hours > W_H.Hours: + print (W_M.Money - ((W_M.Hours - W_H.Hours) * W_M.MPH)) + elif W_M.Hours < W_H.Hours: + print (W_M.Money + ((W_H.Hours - W_M.Hours) * 2 * W_M.MPH)) + diff --git a/lesson06/home_work/hw06_normal.py b/lesson06/home_work/hw06_normal.py index 01c3982f4..c53a0c84a 100644 --- a/lesson06/home_work/hw06_normal.py +++ b/lesson06/home_work/hw06_normal.py @@ -15,3 +15,127 @@ # (Ученик --> Класс --> Учителя --> Предметы) # 4. Узнать ФИО родителей указанного ученика # 5. Получить список всех Учителей, преподающих в указанном классе + +class People: + def __init__(self, Name): + self.Name = Name + + def full_name(self): + sname = self.Name.split(' ') + return sname[0] + ' ' + sname[1][0] + '.' + sname[2][0] + '.' + + +class Teacher(People): + def __init__(self, Name, Subject): + super().__init__(Name) + self.Subject = Subject + self.teachers_sub = {self.Name: self.Subject} + + + +class Students(People): + def __init__(self, Name, mother, father, ClassN): + super().__init__(Name) + self.mother = mother + self.father = father + self.ClassN = ClassN + +class classes(): + def __init__(self, ClassN, *Name): + self.Name = Name + self.ClassN = ClassN + + +stud = [Students('Прогулялов Иван Сидорович', 'Прогулялова Елена Анатольевна', 'Прогуляллов Сидор Иванович', '5А'), + Students('Заболелов Дмитрий Иванович', 'Заболелова Марина Васильевна', 'Заболелов Иван Иванович', '5А'), + Students('Смирнов Олег Петрович', 'Смирнова Ольга Ивановна', 'Смирнов Петр Иванович', '5А'), + Students('Коропетян Коропет Айкович', 'Коропитян Анна Армановна', 'Коропетян Айк Аванасевич', '5А'), + Students('Семенов Семен Семенович', 'Семенова Изабелла Астаховна', 'Семенов Семен Семенович', '5А'), + Students('Хорошева Ирина Петровна', 'Хорошева Марина Витальевна', 'Хорошев Петр Васильевич', '5Б'), + Students('Забугоркин Идрис Маратович', 'Забугоркина Мария Павловна', 'Забугоркин Марат Уралович', '5Б'), + Students('Пупкина Луиза Викторовна', 'Иванова Мария Викторовна', 'Пупкин Виктор Игнатович', '5Б'), + Students('Неуспевакин Семен Олегович', 'Неуспевакина Елена Птровна', 'Неуспевакин Олег Анатольевич', '5Б'), + Students('Отличная Наталья Егоровна', 'Отличная Ирина Михайловна', 'Отличный Егор Дмитриевич', '5Б'), + Students('Списайло Никита Дмитриевич', 'Списайло Наталья Сергеевна', 'Списайло Дмитрий Павлович', '6А'), + Students('Сонная Елена Васильевна', 'Сонная Елена Кирилловна', 'Сонный Василий Васильевич', '6А'), + Students('Кудрявцев Петр Петрович', 'Кудрявцева Кристина Валерьевна', 'Кудрявцев Петр Викторович', '6А'), + Students('Плахин Дмитрий Олегович', 'Плахина Мария Климовна', 'Плахин Олег Иванович', '6А'), + Students('Жуков Клим Александрович', 'Жукова Ирина Степановна', 'Жуков Александер Юрьевич', '6А'), + Students('Переноскина Ольга Подносовна', 'Переноскина Мария Петровна', 'Переноскин Поднос Вилков', '6Б'), + Students('Иванов Иван Архипович', 'Иванова Мария Ивановна', 'Иванов Дмитрий Степенович', '6Б'), + Students('Пучков Дмитрий Юрьевич', 'Пучкова Ольга Петровна', 'Пучков Юрий Васильевич', '6Б'), + Students('Цой Виктор Робертович', 'Цой Анита Викторовна', 'Цой Роберт Андреевич', '6Б'), + Students('Бритва Борис Борисович', 'Бритва Полина Олеговна', 'Бритва Борис Андреевич', '6Б'), + Students('Пушкина Анна Сергеевна', 'Пушкина Ольга Олеговна', 'Пушкин СергейАлександрович', '7А'), + Students('Болконский Андрей Генрихович', 'Болконская Лиза Петровна', 'Болконский Генрих Петрович', '7А'), + Students('Первый Петр Алексеевич', 'Первая Екатерина Глазырина', 'Первый Алексей Иванович', '7А'), + Students('Каренина Анна Локомотивовна', 'Каренина Анна Рельсовна', 'Каренин Локомотив Уголевич', '7А'), + Students('Ибн Сина Хасанович', 'Ибн Фатима Мустафовна', 'Ибн Хасан Хусейнович', '7А'), + Students('R2 D2 Ханович', 'R2 Патме Вейдоровна', 'Чубакин ХАН Соколович', '7Б'), + Students('Беггинс Фродо Бильбович', 'Беггинс Ирина Каплановна', 'Беггинс Бильбо Сауронович', '7Б'), + Students('Водяная Русалка Пасейдоновна', 'Водяная Ариэль Трезубовна', 'Водяной Пасейдон Планктонович', '7Б'), + Students('Красивая Афродита Марсовна', 'Красивая Винера Вавилововна', 'Красивый Нарцис Велнсович', '7Б'), + Students('Жуткий Тип Федорович', 'Жуткая Жизнь Иммануиловна', 'Жуткий Федор Михайлович', '7Б')] + + +teach = [Teacher('Ньютонова Елена Михайловна', 'Физика'), + Teacher('Водородова Маргарита Васильевна', 'Химия'), + Teacher('Сокол Ирина Павловна', 'Биология'), + Teacher('Несторова Ирина Владимировна', 'История'), + Teacher('Интегралова Антонина Петровна', 'Математика'), + Teacher('Кирилломефодьевна Светлана Анатольевна', 'Литература'), + Teacher('Молотков Михаил Михайлович', 'Труды')] + + +clas_sb = [classes('5', teach[3], teach[4], teach[5]), + classes('6', teach[3], teach[4], teach[5], teach[6], teach[0]), + classes('7', teach[3], teach[4], teach[5], teach[6], teach[0], teach[1], teach[2])] + +print(' Выберите действие: \n 1. Получить полный список всех классов школы \n 2. Получить список всех учеников в указанном классе \n 3. Получить список всех предметов указанного ученика \n 4. Узнать ФИО родителей указанного ученика\n 5. Получить список всех Учителей, преподающих в указанном классе') +try: + operation = '!' + while operation != 0: + operation = int(input('Введите номер орации: ')) + if operation == 1: + clas_list = [] + i = 0 + while i < len(stud): + clas_list.append(stud[i].ClassN) + i += 1 + print(set(clas_list)) + elif operation == 2: + cls = input('Введите номер класса: ') + print('Список учащихся в данном классе:') + for line in stud: + if line.ClassN == cls: + print(line.full_name()) + elif operation == 3: + name = input('Укажите ФИО ученика: ') + for line in stud: + if name == line.Name: + print('{}, учащийся {} класаа \nИзучает предметы: '.format(name, line.ClassN)) + for tch in clas_sb: + if tch.ClassN == line.ClassN[0]: + for nameClas in tch.Name: + for nameTeach in teach: + if nameClas.Name == nameTeach.Name: + print(nameTeach.teachers_sub[nameTeach.Name]) + #print(nameTeach.teachers_sub) c учителями + elif operation == 4: + name = input('Укажите ФИО ученика: ') + for line in stud: + if name == line.Name: + print('Мама: ', line.mother, 'Папа: ', line.father) + elif operation == 5: + clas = input('Укажите класс, что бы получить список учителей: ') + print('Учительский состав класса {}'.format(clas)) + for line in clas_sb: + if clas[0] == line.ClassN: + for i in line.Name: + print(i.Name) + elif operation == 0: + break + else: + print('Неверная команда') +except ValueError: + print('Неверная команда') From 57a9899e98f6c0c6eb0391c5e23dabd6fe59a75c Mon Sep 17 00:00:00 2001 From: Pavel Date: Thu, 11 Apr 2019 23:31:05 +0300 Subject: [PATCH 10/11] HW07 --- lesson07/home_work/loto.py | 131 +++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/lesson07/home_work/loto.py b/lesson07/home_work/loto.py index 5ea6ad844..eb3bed224 100644 --- a/lesson07/home_work/loto.py +++ b/lesson07/home_work/loto.py @@ -57,3 +57,134 @@ модуль random: http://docs.python.org/3/library/random.html """ + +import random +import sys + + +class GameCard: + def __init__(self, Name): + self.players_name = Name + self.cards_numbers = random.sample(range(90), 15) + self.matrix = [['-']*9 for i in range(3)] + + def card_gen(self): + arr = self.matrix + a = 0 + card = [] + for lst in arr: + c = 0 + i = 0 + k = random.sample(range(9), 5) + while c < 5: + lst[k[i]] = self.cards_numbers[a] + c += 1 + i += 1 + a += 1 + for i in arr: + card.append(i) + return card + +babulya = GameCard(input('Введите сове имя: ')) +computer = GameCard('Компухтер') + +babulya_card = babulya.card_gen() +computer_card = computer.card_gen() + + +def print_card(name, arr): + print('{:-^40}'.format(name.players_name)) + for i in arr: + print(i) + +print_card(babulya, babulya_card) +print_card(computer, computer_card) + +keg_list = random.sample(range(90), 90) + +def find_empty(player, arr, line): + if arr == [['-']*9 for i in range(3)]: + print('{} WIN!!!'.format(player.players_name)) + sys.exit() + if line == ['-']*9: + print('У игрока {} Квартира!!!'.format(player.players_name)) + +def Game(keg, name_player1, name_player2, player1_card, player2_card): + c = 89 + for digit in keg: + print('Бочёнок № {}'.format(digit)) + print('Осталось ходов {}'.format(c)) + answer = input('Хотите убрать цифру? Y/N') + print('#'*50) + print('#'*50) + if answer == 'Y': + t = 0 + for line in player1_card: + if digit in line: + line[line.index(digit)] = '-' + else: + t += 1 + if t == 3: + print('Такого номера нет в вашей карте! \n Вы проиграли!!! ;(') + sys.exit() + find_empty(name_player1, player1_card, line) + + elif answer == 'N': + for line in player1_card: + if digit in line: + print('Вы пропустили бочёнок! \n Вы проиграли!!! ;(') + sys.exit() + + else: + print('Вы пропустили бочёнок! \n Вы проиграли!!! ;(') + sys.exit() + for line in player2_card: + if digit in line: + line[line.index(digit)] = '-' + find_empty(name_player2, player2_card, line) + + print_card(name_player1, player1_card) + print() + print_card(name_player2, player2_card) + c -= 1 + +Game(keg_list, babulya, computer, babulya_card, computer_card) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 31e9a7a437bbbddecefa1d1fa34e4f30759091de Mon Sep 17 00:00:00 2001 From: Pavel Date: Mon, 15 Apr 2019 19:26:39 +0300 Subject: [PATCH 11/11] Hw08 --- lesson08/home_work/.XO.py.swp | Bin 0 -> 1024 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lesson08/home_work/.XO.py.swp diff --git a/lesson08/home_work/.XO.py.swp b/lesson08/home_work/.XO.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..184ce8ca2a3ecc286b20467072e6116736cb3bd5 GIT binary patch literal 1024 zcmYc?$V<%2S1{5u)iY*50!2~`3-mSp7T#pk3J7w6{{$0sEgXC~`Icm@_=h4JP2McMih{(1$KI87Xt7!85Z5FjB0 ILebR%06u3RuK)l5 literal 0 HcmV?d00001