From 3d8fdf70240493d77cb170d90ec43ba1557e2365 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 28 Sep 2019 21:10:06 +0300 Subject: [PATCH 1/8] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D1=82=D0=B8=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson02/home_work/hw02_easy.py | 26 ++++++++++++++++++ lesson02/home_work/hw02_hard.py | 27 ++++++++++++++----- lesson02/home_work/hw02_normal.py | 45 +++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 6 deletions(-) diff --git a/lesson02/home_work/hw02_easy.py b/lesson02/home_work/hw02_easy.py index ed4447e50..40ac8d310 100644 --- a/lesson02/home_work/hw02_easy.py +++ b/lesson02/home_work/hw02_easy.py @@ -1,3 +1,5 @@ +__author__ = 'Насонов Алексей Сергеевич' + # Задача-1: # Дан список фруктов. # Напишите программу, выводящую фрукты в виде нумерованного списка, @@ -13,13 +15,37 @@ # Подсказка: воспользоваться методом .format() +print("Задача-1:") +NumList = ["яблоко", "банан", "киви", "арбуз"] +for Item in NumList: + print('{:}. {:>6}'.format(str(NumList.index(Item)+1), Item)) + + + # Задача-2: # Даны два произвольные списка. # Удалите из первого списка элементы, присутствующие во втором списке. +print("Задача-2:") +NumList1 = ["яблоко", "банан", "киви", "арбуз"] +NumList2 = ["банан", "киви"] +for Item in NumList2: + if Item in NumList1: + NumList1.remove(Item) +print(NumList1) # Задача-3: # Дан произвольный список из целых чисел. # Получите НОВЫЙ список из элементов исходного, выполнив следующие условия: # если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два. + +print("Задача-3:") +NumList1 = [1, 2, 3, 4, 5] +NumList2 = [] +for Num in NumList1: + if Num % 2 == 0: + NumList2.append(Num/4) + else: + NumList2.append(Num*2) +print(NumList2) diff --git a/lesson02/home_work/hw02_hard.py b/lesson02/home_work/hw02_hard.py index c96843184..a0b54d4f9 100644 --- a/lesson02/home_work/hw02_hard.py +++ b/lesson02/home_work/hw02_hard.py @@ -1,10 +1,18 @@ +__author__ = 'Насонов Алексей Сергеевич' + # Задание-1: уравнение прямой вида y = kx + b задано в виде строки. # Определить координату y точки с заданной координатой x. -equation = 'y = -12x + 11111140.2121' -x = 2.5 +#equation = 'y = -12x + 11111140.2121' +#x = 2.5 # вычислите и выведите y +print("Задача-1:") +x = 2.5 +y = -12*x + 11111140.2121 +print("Координата точки: x = {0}, y = {1}".format(x,y)) + + # Задание-2: Дата задана в виде строки формата 'dd.mm.yyyy'. # Проверить, корректно ли введена дата. @@ -17,12 +25,19 @@ # (т.е. 2 символа для дня, 2 - для месяца, 4 - для года) # Пример корректной даты -date = '01.11.1985' +#date = '01.11.1985' # Примеры некорректных дат -date = '01.22.1001' -date = '1.12.1001' -date = '-2.10.3001' +#date = '01.22.1001' +#date = '1.12.1001' +#date = '-2.10.3001' + +DaysInToMonth = [30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] +date_text = '01.11.1985' +# Проверяем день +# Проверяем месяц +# Проверяем год + # Задание-3: "Перевёрнутая башня" (Задача олимпиадного уровня) diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index 3acfaabb6..70a7c4c66 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -1,3 +1,5 @@ +__author__ = 'Насонов Алексей Сергеевич' + # Задача-1: # Дан список, заполненный произвольными целыми числами, получите новый список, # элементами которого будут квадратные корни элементов исходного списка, @@ -5,17 +7,37 @@ # если такой корень вообще можно извлечь # Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2] +# print("Задача-1:") +# NumList1 = [1, 2, 3, 4, 5, -10, 25] +# NumList2 = [] +# import math +# for Num in NumList1: +# if Num >= 0: +# Res = math.sqrt(Num) +# if (float(Res) % 1) == 0: +# NumList2.append(int(Res)) +# print(NumList2) # Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013. # Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года. # Склонением пренебречь (2000 года, 2010 года) +print("Задача-2:") +date = "26.11.2013" + # Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами # в диапазоне от -100 до 100. В списке должно быть n - элементов. # Подсказка: # для получения случайного числа используйте функцию randint() модуля random +# print("Задача-3") +# import random +# NumList = [] +# n = int(input("Введите количество элементов списка случайных значений")) +# for item in range(n): +# NumList.append(random.randint(-100, 100)) +# print(NumList) # Задача-4: Дан список, заполненный произвольными целыми числами. # Получите новый список, элементами которого будут: @@ -23,3 +45,26 @@ # например, 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] + +print("Задача-4") +NumList1 = [1, 2, 4, 5, 6, 2, 5, 2] +NumList_a = [] +NumList_b = [] +NumList_temp = NumList1.copy() +while NumList_temp: + Num = NumList_temp[0] + NumList_temp.remove(Num) + if Num in NumList_temp: + NumList_a.append(Num) + while Num in NumList_temp: + NumList_temp.remove(Num) + else: + NumList_a.append(Num) + NumList_b.append(Num) + +print("Исходный список:") +print(NumList1) +print("Список с уникальными элементами:") +print(NumList_a) +print("Список без повторяющихся элементов:") +print(NumList_b) From 1ccbf583fc94ad1e65e0fa994ecb9dcdc5c5a36d Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 28 Sep 2019 21:24:37 +0300 Subject: [PATCH 2/8] =?UTF-8?q?=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D0=BB=20=D1=81=D1=82=D0=B5=D1=80=D1=82=D0=BE?= =?UTF-8?q?=D0=B5=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B9=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=20=D0=B4=D0=B0=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson02/home_work/hw02_normal.py | 50 ++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index 70a7c4c66..752e86e18 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -23,7 +23,55 @@ # Склонением пренебречь (2000 года, 2010 года) print("Задача-2:") -date = "26.11.2013" +days = ["первое", + "второе", + "третье", + "четвертое", + "пятое", + "шестое", + "седьмое", + "восьмое", + "девятое", + "десятое", + "одиннадцатое", + "двенадцатое", + "тринадцатое", + "четырнадцатое", + "пятнадцатое", + "шестнадцатое", + "семьнадцатое", + "восемнадцатое", + "девятнадцатое", + "двадцатое", + "двадцать первое", + "двадцать второе", + "двадцать третье", + "двадцать четвертое", + "двадцать пятое", + "двадцать шестое", + "двадцать седьмое", + "двадцать восьмое", + "двадцать девятое", + "тридцатое", + "тридцать первое"] +month = ["января", + "февраля", + "марта", + "апреля", + "мая", + "июня", + "июля", + "августа", + "сентября", + "октября", + "ноября", + "декабря"] +date = "26.02.1975" +D = int((date.split("."))[0]) +M = int((date.split("."))[1]) +Y = (date.split("."))[2] +print(date) +print("Дата: {0} {1} {2} года".format(days[D-1],month[M-1],Y)) # Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами From 336f26c6c322801190841abe32361e32d55f03e3 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 28 Sep 2019 23:10:53 +0300 Subject: [PATCH 3/8] =?UTF-8?q?=D0=92=D1=81=D0=B5=20=D1=81=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson02/home_work/hw02_hard.py | 66 ++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/lesson02/home_work/hw02_hard.py b/lesson02/home_work/hw02_hard.py index a0b54d4f9..20c060590 100644 --- a/lesson02/home_work/hw02_hard.py +++ b/lesson02/home_work/hw02_hard.py @@ -7,10 +7,10 @@ #x = 2.5 # вычислите и выведите y -print("Задача-1:") -x = 2.5 -y = -12*x + 11111140.2121 -print("Координата точки: x = {0}, y = {1}".format(x,y)) +# print("Задача-1:") +# x = 2.5 +# y = -12*x + 11111140.2121 +# print("Координата точки: x = {0}, y = {1}".format(x,y)) @@ -32,11 +32,33 @@ #date = '1.12.1001' #date = '-2.10.3001' -DaysInToMonth = [30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] -date_text = '01.11.1985' -# Проверяем день -# Проверяем месяц -# Проверяем год +# print("Задача-1:") +# DaysInToMonth = [30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] +# date = '21.11.1985' +# List = date.split(".") +# # Проверка по формату +# if len(List[0]) != 2 or len(List[1]) != 2 or len(List[2]) != 4: +# print("Формат не соответсвует dd.mm.yyyy") +# quit() +# +# D = int(List[0]) +# M = int(List[1]) +# Y = int(List[2]) +# +# # Проверяем месяц +# if M not in list(range(1, 13)): +# print("Некоректно определен месяц") +# quit() +# # Проверяем день +# elif D not in list(range(1, DaysInToMonth[M-1]+1)): +# print("Некоректно определен день") +# quit() +# # Проверяем год +# elif Y not in list(range(1, 10000)): +# print("Некоректно определен год") +# quit() +# +# print("Дата {} введена корректно".format(date)) @@ -68,4 +90,28 @@ # Выход: 6 2 # # Вход: 11 -# Выход: 5 3 \ No newline at end of file +# Выход: 5 3 + + +print("Задача-3:") +# Определяем в каком квадрате находится комната (сумму квадратов n натуральных чисел) +Num = 50000000 +for n in range(1, 2000): + MaxKvart = n * (n + 1) * (2 * n + 1) / 6 + if MaxKvart >= Num: + break + +print("Номер квадрата:", n) +print("Номер последней квартиры(в правом верхнем углу):",MaxKvart) +# Определяем верхний этаж этого квадрата (сумму n натуральных чисел) +MaxEtag = n * (n + 1) / 2 + +print("Этаж самой верхней квартиры в квадрате", MaxEtag) +# Определяем искомый этаж и смещение слева на право на этаже у искомой квартиры +DeltaEtag = (MaxKvart - Num) // n +RightOffset = (MaxKvart - Num) % n +print("Дельта этаж",DeltaEtag) +print("Смещение квартиры справа",RightOffset) + +print("Искомый этаж", (MaxEtag-DeltaEtag)) +print("Смещение квартиры справа", (n-RightOffset)) From 9c5e9bc3116544101e71564366d48ae5d25a2ee1 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 29 Sep 2019 11:23:54 +0300 Subject: [PATCH 4/8] =?UTF-8?q?=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson02/home_work/hw02_hard.py | 83 ++++++++++++++++--------------- lesson02/home_work/hw02_normal.py | 40 ++++++++------- 2 files changed, 67 insertions(+), 56 deletions(-) diff --git a/lesson02/home_work/hw02_hard.py b/lesson02/home_work/hw02_hard.py index 20c060590..5f50c6361 100644 --- a/lesson02/home_work/hw02_hard.py +++ b/lesson02/home_work/hw02_hard.py @@ -7,10 +7,10 @@ #x = 2.5 # вычислите и выведите y -# print("Задача-1:") -# x = 2.5 -# y = -12*x + 11111140.2121 -# print("Координата точки: x = {0}, y = {1}".format(x,y)) +print("Задача-1:") +x = 2.5 +y = -12*x + 11111140.2121 +print("Координата точки: x = {0}, y = {1}".format(x,y)) @@ -32,33 +32,33 @@ #date = '1.12.1001' #date = '-2.10.3001' -# print("Задача-1:") -# DaysInToMonth = [30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] -# date = '21.11.1985' -# List = date.split(".") -# # Проверка по формату -# if len(List[0]) != 2 or len(List[1]) != 2 or len(List[2]) != 4: -# print("Формат не соответсвует dd.mm.yyyy") -# quit() -# -# D = int(List[0]) -# M = int(List[1]) -# Y = int(List[2]) -# -# # Проверяем месяц -# if M not in list(range(1, 13)): -# print("Некоректно определен месяц") -# quit() -# # Проверяем день -# elif D not in list(range(1, DaysInToMonth[M-1]+1)): -# print("Некоректно определен день") -# quit() -# # Проверяем год -# elif Y not in list(range(1, 10000)): -# print("Некоректно определен год") -# quit() -# -# print("Дата {} введена корректно".format(date)) +print("Задача-2:") +DaysInToMonth = [30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] +date = '21.11.1985' +List = date.split(".") +# Проверка по формату +if len(List[0]) != 2 or len(List[1]) != 2 or len(List[2]) != 4: + print("Формат не соответсвует dd.mm.yyyy") + quit() + +D = int(List[0]) +M = int(List[1]) +Y = int(List[2]) + +# Проверяем месяц +if M not in list(range(1, 13)): + print("Некоректно определен месяц") + quit() +# Проверяем день +elif D not in list(range(1, DaysInToMonth[M-1]+1)): + print("Некоректно определен день") + quit() +# Проверяем год +elif Y not in list(range(1, 10000)): + print("Некоректно определен год") + quit() + +print("Дата {} введена корректно".format(date)) @@ -94,24 +94,29 @@ print("Задача-3:") -# Определяем в каком квадрате находится комната (сумму квадратов n натуральных чисел) -Num = 50000000 +# Задаем номер квартиры +Num = 11 + +# Определяем в каком квадрате находится квартира (сумму квадратов n натуральных чисел) +# Правильнее бы было найти обратную функцию, но как-то не получилось. Поэтому ищем решение по исходной функции for n in range(1, 2000): MaxKvart = n * (n + 1) * (2 * n + 1) / 6 if MaxKvart >= Num: break +print("Номер исходной квартиры:", Num) print("Номер квадрата:", n) -print("Номер последней квартиры(в правом верхнем углу):",MaxKvart) +print("Номер последней квартиры(в правом верхнем углу):", int(MaxKvart)) # Определяем верхний этаж этого квадрата (сумму n натуральных чисел) MaxEtag = n * (n + 1) / 2 -print("Этаж самой верхней квартиры в квадрате", MaxEtag) +print("Этаж самой последней квартиры в этом квадрате", int(MaxEtag)) # Определяем искомый этаж и смещение слева на право на этаже у искомой квартиры DeltaEtag = (MaxKvart - Num) // n RightOffset = (MaxKvart - Num) % n -print("Дельта этаж",DeltaEtag) -print("Смещение квартиры справа",RightOffset) +print("Дельта этаж", int(DeltaEtag)) +print("Смещение квартиры справа", int(RightOffset)) -print("Искомый этаж", (MaxEtag-DeltaEtag)) -print("Смещение квартиры справа", (n-RightOffset)) +print("\nРЕШЕНИЕ:") +print("Искомый этаж:", int(MaxEtag-DeltaEtag)) +print("Номер квартиры на этаже слева:", int(n-RightOffset)) diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index 752e86e18..82e5c7ffb 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -7,16 +7,16 @@ # если такой корень вообще можно извлечь # Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2] -# print("Задача-1:") -# NumList1 = [1, 2, 3, 4, 5, -10, 25] -# NumList2 = [] -# import math -# for Num in NumList1: -# if Num >= 0: -# Res = math.sqrt(Num) -# if (float(Res) % 1) == 0: -# NumList2.append(int(Res)) -# print(NumList2) +print("Задача-1:") +NumList1 = [1, 2, 3, 4, 5, -10, 25] +NumList2 = [] +import math +for Num in NumList1: + if Num >= 0: + Res = math.sqrt(Num) + if (float(Res) % 1) == 0: + NumList2.append(int(Res)) +print(NumList2) # Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013. # Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года. @@ -79,13 +79,14 @@ # Подсказка: # для получения случайного числа используйте функцию randint() модуля random -# print("Задача-3") -# import random -# NumList = [] -# n = int(input("Введите количество элементов списка случайных значений")) -# for item in range(n): -# NumList.append(random.randint(-100, 100)) -# print(NumList) +print("Задача-3") +import random +NumList = [] +# Задаем количество элементов списка случайных значений +n = 10 +for item in range(n): + NumList.append(random.randint(-100, 100)) +print(NumList) # Задача-4: Дан список, заполненный произвольными целыми числами. # Получите новый список, элементами которого будут: @@ -99,6 +100,11 @@ NumList_a = [] NumList_b = [] NumList_temp = NumList1.copy() +# Выполняем проверку первого элемента и удаляем его, +# если элемент встречается в исходном списке несколько раз, +# то заносим его только в новый список NumList_a +# если элемент встречается в исходном списке только один раз, +# то добавляем его в списки NumList_a, NumList_b while NumList_temp: Num = NumList_temp[0] NumList_temp.remove(Num) From bf6b2320ec91c9ada06590c2b4df25dd9955239e Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 29 Sep 2019 11:26:48 +0300 Subject: [PATCH 5/8] =?UTF-8?q?=D0=92=D1=81=D0=B5=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson02/home_work/hw02_easy.py | 1 + lesson02/home_work/hw02_hard.py | 1 + lesson02/home_work/hw02_normal.py | 1 + 3 files changed, 3 insertions(+) diff --git a/lesson02/home_work/hw02_easy.py b/lesson02/home_work/hw02_easy.py index 40ac8d310..a08a511c2 100644 --- a/lesson02/home_work/hw02_easy.py +++ b/lesson02/home_work/hw02_easy.py @@ -49,3 +49,4 @@ else: NumList2.append(Num*2) print(NumList2) + diff --git a/lesson02/home_work/hw02_hard.py b/lesson02/home_work/hw02_hard.py index 5f50c6361..f1faf7012 100644 --- a/lesson02/home_work/hw02_hard.py +++ b/lesson02/home_work/hw02_hard.py @@ -120,3 +120,4 @@ print("\nРЕШЕНИЕ:") print("Искомый этаж:", int(MaxEtag-DeltaEtag)) print("Номер квартиры на этаже слева:", int(n-RightOffset)) + diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index 82e5c7ffb..3d677dc38 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -122,3 +122,4 @@ print(NumList_a) print("Список без повторяющихся элементов:") print(NumList_b) + From 1fe16de8ac715196b8ccbd52bc1d51595f3ac14f Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 16 Oct 2019 00:31:56 +0300 Subject: [PATCH 6/8] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=BC=D0=B5=D0=B6=D1=83?= =?UTF-8?q?=D1=82=D0=BE=D1=87=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BC=D0=B8?= =?UTF-8?q?=D1=82.=20=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D0=BE=D1=87=D0=BA=D0=B8,=20=D0=BC=D0=B5=D1=88?= =?UTF-8?q?=D0=BE=D0=BA,=20=D0=B8=D0=B3=D1=80=D1=83=20=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=89=D0=B8=D0=B9=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D0=BD=D0=B3=20=D0=B8=D0=B3=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson07/home_work/loto.py | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/lesson07/home_work/loto.py b/lesson07/home_work/loto.py index 5ea6ad844..52b2e80d0 100644 --- a/lesson07/home_work/loto.py +++ b/lesson07/home_work/loto.py @@ -57,3 +57,74 @@ модуль random: http://docs.python.org/3/library/random.html """ + +class Meshok(): + def __init__(self): + self.vsego_bochenok = 90 + self._list_bochenok = [i for i in range(1,self.vsego_bochenok+1)] + def get_bochenok(self): + if self.get_ostalos() > 0: + import random + number = random.randint(1, len(self._list_bochenok)) + bochenok = self._list_bochenok[number-1] + self._list_bochenok.remove(bochenok) + return bochenok + else: + print("Мешок пуст") + def get_ostalos(self): + return len(self._list_bochenok) + +class Kartochka(): + def __init__(self,name,vsego_bochenok): + self.vsego_bochenok = vsego_bochenok + self.name = name + self._matrix_3x9 = [] + self.fill_matrix_3x9() + def fill_matrix_3x9(self): + import random + for i in range(3): + self._matrix_3x9.append([0 for x in range(9)]) + list_number = sorted(random.sample(range(self.vsego_bochenok+1),5)) + for inx,x in enumerate(sorted(random.sample(range(1,10),5))): + self._matrix_3x9[i][x-1] = list_number[inx] + def draw(self): + prefix = '-' * int((24-len(self.name))/2) + sufix = "-" * (28 - len(self.name)-len(prefix) - 4) + print(prefix,self.name,sufix) + for i in range(3): + l = [str(x) for x in self._matrix_3x9[i]] + print((', '.join([x if len(x) != 1 else " "+x for x in l]).replace(',', '').replace(' 0', ' '))) + print('-'*26) + #print(self._matrix_3x9[i]) + #print([len(x) for x in l]) + +class Kartochka_Computer(Kartochka): + def __init__(self,vsego_bochenok): + self.name = "Карточка компьютера" + super().__init__(self.name,vsego_bochenok) + +class Kartochka_Gamer(Kartochka): + def __init__(self,vsego_bochenok): + self.name = "Карточка игрока" + super().__init__(self.name,vsego_bochenok) + +class Game(): + def __init__(self): + self.Meshok_ = Meshok() + self.Kartochka_Computer_ = Kartochka_Computer(self.Meshok_.vsego_bochenok) + self.Kartochka_Gamer_ = Kartochka_Gamer(self.Meshok_.vsego_bochenok) + def Output(self): + print("Новый бочонок: {0} (осталось {1})".format(self.Meshok_.get_bochenok(), self.Meshok_.get_ostalos())) + self.Kartochka_Computer_.draw() + self.Kartochka_Gamer_.draw() + print("Зачеркнуть цифру? (y/n)") + def run(self): + self.Output() + + + + +Game_ = Game() +Game_.run() + + From 63863b57582e177c9d39a6610ba1f8c0b0e24f01 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 16 Oct 2019 00:35:33 +0300 Subject: [PATCH 7/8] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B8?= =?UTF-8?q?=D0=BD=D0=B3=20=D1=86=D0=B8=D0=BA=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson07/home_work/loto.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lesson07/home_work/loto.py b/lesson07/home_work/loto.py index 52b2e80d0..6c9ffadba 100644 --- a/lesson07/home_work/loto.py +++ b/lesson07/home_work/loto.py @@ -117,9 +117,10 @@ def Output(self): print("Новый бочонок: {0} (осталось {1})".format(self.Meshok_.get_bochenok(), self.Meshok_.get_ostalos())) self.Kartochka_Computer_.draw() self.Kartochka_Gamer_.draw() - print("Зачеркнуть цифру? (y/n)") def run(self): - self.Output() + while True: + self.Output() + input("Зачеркнуть цифру? (y/n)") From 8b37ea8cf106649381cfeab7afdaf8d7a5b39267 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 16 Oct 2019 14:25:27 +0300 Subject: [PATCH 8/8] =?UTF-8?q?=D0=92=D1=81=D0=B5=20=D1=81=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson07/home_work/loto.py | 93 +++++++++++++++++++++++++++++++++++--- 1 file changed, 86 insertions(+), 7 deletions(-) diff --git a/lesson07/home_work/loto.py b/lesson07/home_work/loto.py index 6c9ffadba..e634402e8 100644 --- a/lesson07/home_work/loto.py +++ b/lesson07/home_work/loto.py @@ -60,6 +60,7 @@ class Meshok(): def __init__(self): + self.current_bochenok = None self.vsego_bochenok = 90 self._list_bochenok = [i for i in range(1,self.vsego_bochenok+1)] def get_bochenok(self): @@ -68,6 +69,7 @@ def get_bochenok(self): number = random.randint(1, len(self._list_bochenok)) bochenok = self._list_bochenok[number-1] self._list_bochenok.remove(bochenok) + self.current_bochenok = bochenok return bochenok else: print("Мешок пуст") @@ -87,13 +89,30 @@ def fill_matrix_3x9(self): list_number = sorted(random.sample(range(self.vsego_bochenok+1),5)) for inx,x in enumerate(sorted(random.sample(range(1,10),5))): self._matrix_3x9[i][x-1] = list_number[inx] + def close_cell(self,listcell): + for cell in listcell: + self._matrix_3x9[cell[0]][cell[1]] = -1 + def get_List_closecell(self,current_bochenok): + Res = [] + for inx,row in enumerate(self._matrix_3x9): + try: + col = row.index(current_bochenok) + Res.append((inx,col)) + except Exception: + pass + return Res + def verify_end(self): + L = [] + for item in self._matrix_3x9: + L += [x for x in item if x > 0 ] + return len(L) == 0 def draw(self): prefix = '-' * int((24-len(self.name))/2) sufix = "-" * (28 - len(self.name)-len(prefix) - 4) print(prefix,self.name,sufix) for i in range(3): l = [str(x) for x in self._matrix_3x9[i]] - print((', '.join([x if len(x) != 1 else " "+x for x in l]).replace(',', '').replace(' 0', ' '))) + print((', '.join([x if len(x) != 1 else " "+x for x in l]).replace(',', '').replace(' 0', ' ').replace('-1', ' -'))) print('-'*26) #print(self._matrix_3x9[i]) #print([len(x) for x in l]) @@ -113,16 +132,76 @@ def __init__(self): self.Meshok_ = Meshok() self.Kartochka_Computer_ = Kartochka_Computer(self.Meshok_.vsego_bochenok) self.Kartochka_Gamer_ = Kartochka_Gamer(self.Meshok_.vsego_bochenok) - def Output(self): - print("Новый бочонок: {0} (осталось {1})".format(self.Meshok_.get_bochenok(), self.Meshok_.get_ostalos())) + def output(self): + print('\n' * 80) + print("Новый бочонок: {0} (осталось {1})".format(self.Meshok_.current_bochenok, self.Meshok_.get_ostalos())) self.Kartochka_Computer_.draw() self.Kartochka_Gamer_.draw() - def run(self): + def input_gamer(self): while True: - self.Output() - input("Зачеркнуть цифру? (y/n)") - + request = input("Зачеркнуть цифру? (y/n)\n>>") + if request in ["y","Y"]: + break + elif request in ["n","N"]: + return "Skip" + self.output() + while True: + try: + resp_str = input("Введите номера позиций на карточке в формате (i1,j1), (i2,j2), ... - где i1-номер строки, " + "j1 - номер столбца в карточке. Номера начинаются с 1 \n>>") + #Преобразуем введенную строку в список кортежей, где кортеж - координаты поля + s = resp_str[1:][:-1].split("),(") + resp = [tuple([int(y)-1 for y in x.split(",")]) for x in s] + return resp + except Exception as e: + print("Ошибка ввода, для продолжения нажмите Enter.\n",e) + input() + self.output() + + + def verify_end(self): + res_comp = self.Kartochka_Computer_.verify_end() + res_gamer = self.Kartochka_Gamer_.verify_end() + if res_comp and res_gamer: + print("У вас ничья. Игра окончена") + exit() + elif res_comp: + print("Вы проиграли, ваш аппонент закрыл карточку нраньше вас") + exit() + elif res_gamer: + print("Поздравляем, вы победили") + exit() + def run(self): + while True: + self.verify_end() + self.Meshok_.get_bochenok() + list_closecell_computer = self.Kartochka_Computer_.get_List_closecell(self.Meshok_.current_bochenok) + self.Kartochka_Computer_.close_cell(list_closecell_computer) + self.output() + list_closecell_gamer = self.input_gamer() + true_list_closecell_gamer = self.Kartochka_Gamer_.get_List_closecell(self.Meshok_.current_bochenok) + if list_closecell_gamer == "Skip": + #если пользователь пропустил ход, то проверяем что правильных ответов действительно нет + if len(true_list_closecell_gamer) == 0: + continue + else: + self.output() + print("К сожлению вы произрали. Правильный ответ:\n",true_list_closecell_gamer) + exit() + else: + #если пользователь ввел ячейки, то проверяем, что его ответ правильный + if sorted(true_list_closecell_gamer) == sorted(list_closecell_gamer): + self.Kartochka_Gamer_.close_cell(list_closecell_gamer) + else: + self.output() + if len(true_list_closecell_gamer) == 0: + print("К сожлению вы произрали. Такого номера боченка не было на вашей карточке") + else: + print("К сожлению вы произрали. Правильный ответ:\n",[(item[0]+1,item[1]+1) for item in true_list_closecell_gamer]) + exit() + + #input("Введите Enter чтобы продолжить") Game_ = Game()