diff --git a/lesson01/home_work/hw01_easy.py b/lesson01/home_work/hw01_easy.py index f927b0b06..168a21869 100644 --- a/lesson01/home_work/hw01_easy.py +++ b/lesson01/home_work/hw01_easy.py @@ -1,5 +1,5 @@ -__author__ = 'Ваши Ф.И.О.' +#__author__ = Стрельченко Никита Владимирович # Задача-1: Дано произвольное целое число (число заранее неизвестно). # Вывести поочередно цифры исходного числа (порядок вывода цифр неважен). @@ -7,7 +7,13 @@ # * постарайтесь решить задачу с применением арифметики и цикла while; # * при желании решите задачу с применением цикла for. -# код пишем тут... +number = input('Введите число: ') +x = 0 +while x < len(number): + print(number[x]) + x += 1 + + # Задача-2: Исходные значения двух переменных запросить у пользователя. @@ -18,7 +24,30 @@ # Не нужно решать задачу так: # print("a = ", b, "b = ", a) - это неправильное решение! +# 2 ЗАДАЧА !!!! + +#Вариант 1 +x = int(input("Введите переменную x:")) +y = int(input("Введите переменную у:")) +x,y = y,x +print ("Значение переменной x =", x, "Значение переменной Y =", y) + +#Вариант 2 +X = int(input("Введите X:")) +Y = int(input("Введите Y:")) +Z = X +X = Y +Y = Z +print("Переменная Х = ", X,"Переменная Y =", Y) + # Задача-3: Запросите у пользователя его возраст. # Если ему есть 18 лет, выведите: "Доступ разрешен", # иначе "Извините, пользование данным ресурсом только с 18 лет" + +# 3 ЗАДАЧА!!!!! +age = int(input("Введите Ваш возраст:")) +if age >= 18: + print ("Доступ разрешен"); +else: + print("Извините, пользование данным ресурсом только с 18 лет") diff --git a/lesson01/home_work/hw01_normal.py b/lesson01/home_work/hw01_normal.py index 991724e9a..86ed45428 100644 --- a/lesson01/home_work/hw01_normal.py +++ b/lesson01/home_work/hw01_normal.py @@ -1,7 +1,7 @@ -__author__ = 'Ваши Ф.И.О.' +#__author__ = Стрельченко Никита Владимирович -# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа. +# Задача-1: . # Например, дается x = 58375. # Нужно вывести максимальную цифру в данном числе, т.е. 8. # Подразумевается, что мы не знаем это число заранее. @@ -10,6 +10,14 @@ # * постарайтесь решить задачу с применением арифметики и цикла while; # * при желании и понимании решите задачу с применением цикла for. +x = int(input("Введите число")) +mx = 0 +while x>0: + c = x%10 + if c>=mx: mx=c + x//=10 +print ("Максимальная цифра: ",mx) + # Задача-2: Исходные значения двух переменных запросить у пользователя. # Поменять значения переменных местами. Вывести новые значения на экран. @@ -18,6 +26,10 @@ # * постарайтесь сделать решение через действия над числами; # * при желании и понимании воспользуйтесь синтаксисом кортежей Python. +x = int(input("Переменная 1 -")) +y = int(input("Переменная 2 -")) +x,y = y,x +print ("Значение переменной 1 -",x,"Значение переменной 2 -",y) # Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида # ax² + bx + c = 0. @@ -25,3 +37,23 @@ # Для вычисления квадратного корня воспользуйтесь функцией 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 +print(D) +if D <0: + print("Нет корней") +elif D == 0: + x = -b/2*a + print (x) +else: + x1 = (-b + math.sqrt(D))/(2*a) + x2 = (-b - math.sqrt(D))/(2*a) + print(x1) + print(x2) + + + diff --git a/lesson02/home_work/hw02_easy.py b/lesson02/home_work/hw02_easy.py index ed4447e50..b31ca22dd 100644 --- a/lesson02/home_work/hw02_easy.py +++ b/lesson02/home_work/hw02_easy.py @@ -3,6 +3,12 @@ # Напишите программу, выводящую фрукты в виде нумерованного списка, # выровненного по правой стороне. +fruits = ["banana", "mango", "apple", "kiwi", "orange","dragonfruit"] +y = 1 +for x in range (len(fruits)): + print("{:>100}{} {}".format("№-", y, fruits[x])) + y+=1 + # Пример: # Дано: ["яблоко", "банан", "киви", "арбуз"] # Вывод: @@ -13,13 +19,28 @@ # Подсказка: воспользоваться методом .format() - # Задача-2: # Даны два произвольные списка. # Удалите из первого списка элементы, присутствующие во втором списке. +list_1 = [1, 2, 'apple', 'house', 'orange',55] +list_2 = [3, 2, 55, 'kiwi', 'bridge', 'road'] +list_1 = list(set(list_1) - set(list_2)) +print(list_1) # Задача-3: # Дан произвольный список из целых чисел. # Получите НОВЫЙ список из элементов исходного, выполнив следующие условия: # если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два. + +lst_1 = [1,2,55,60,4,31] +lst_2 = [] +x = len(lst_1) +for i in range(x): + if lst_1[i]%2==0: + lst_2.append(lst_1[i]/4) + else: + lst_2.append(lst_1[i]*2) +print (lst_2) + + diff --git a/lesson02/home_work/hw02_hard.py b/lesson02/home_work/hw02_hard.py index c96843184..e1e11b608 100644 --- a/lesson02/home_work/hw02_hard.py +++ b/lesson02/home_work/hw02_hard.py @@ -3,6 +3,14 @@ equation = 'y = -12x + 11111140.2121' x = 2.5 +#y = (-12*x) + 11111140.2121 +#print(y) + +name = equation.split(' ') +first_name = str(name[2]) +name[2] = first_name[:-1] +two_name = float(name[2]) * x + float(name[4]) +print(two_name) # вычислите и выведите y diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index 3acfaabb6..9c4ae4ab0 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -5,17 +5,47 @@ # если такой корень вообще можно извлечь # Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2] +#from math import sqrt +#list = [1, 10, -3, 11, -15, 36, 189, 152, -166, 16] +#new_list = [] +#for x in list: +# if x > 0 and (sqrt(x) %1 == 0): +# new_list.append(int(sqrt(x))) +#print(new_list) + # Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013. # Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года. # Склонением пренебречь (2000 года, 2010 года) +#date = "13.05.2013" +#date_1 = date.split(".") +#day = { +# '01': 'первое', '02': 'второе', '03': 'третье', '04': 'четвертое', '05': 'пятое', +# '06': 'шестое', '07': 'седьмое', '08': 'восьмое', '09': 'девятое', '10': 'десятое', +# '11': 'одинадцатое', '12': 'двинадцатое', '13': 'тринадцатое', '14': 'четырнадцатое', +# '15': 'пятнадцатое', '16': 'шестнадцатое', '17': 'семнадцатое', '18': 'восемнадцатое', +# '19': 'девятнадцатое', '20': 'двадцатое', '21': 'двадцать первое', '22': 'двадцать второе', +# '23': 'двадцать третье', '24': 'двадцать четвертое', '25': 'двадцать пятое', '26': 'двадцать шестое', +# '27': 'двадцать седьмое', '28': 'двадцать восьмое', '29': 'двадцать девятое', '30': 'тридцатое', '31': 'тридцать первое' +#} +#month ={ +# '01': 'января', '02': 'февраля', '03': 'марта', '04': 'апреля', '05': 'мая', '06': 'июня', +# '07': 'июля', '08': 'августа', '09': 'сентября', '10': 'октября', '11': 'ноября', '12': 'декабря' +#} +#print(date_1) +#print("{} {} {} года".format(day[date_1[0]], month[date_1[1]], date_1[2])) + # Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами # в диапазоне от -100 до 100. В списке должно быть n - элементов. # Подсказка: # для получения случайного числа используйте функцию randint() модуля random +#from random import randint +#n = randint(1,10) +#random_list= [randint(-100,100) for i in range (n)] +#print(random_list) # Задача-4: Дан список, заполненный произвольными целыми числами. # Получите новый список, элементами которого будут: @@ -23,3 +53,17 @@ # например, 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] + +#№1 + +#list = [10, 15, 44, 100 , -100 , 156, 10, 3, 156, 10] +#list2 = set(list) +#print(list2) + +#№2 +#list = [10, 15, 44, 100 , -100 , 156, 10, 3, 156, 10] +#list2 = [] +#for i in list: +# if list.count(i) ==1: +# list2.append(i) +#print (list2) diff --git a/lesson03/home_work/hw03_easy.py b/lesson03/home_work/hw03_easy.py index 63d13f646..4908a4368 100644 --- a/lesson03/home_work/hw03_easy.py +++ b/lesson03/home_work/hw03_easy.py @@ -4,10 +4,21 @@ # Округление должно происходить по математическим правилам (0.6 --> 1, 0.4 --> 0). # Для решения задачи не используйте встроенные функции и функции из модуля math. -def my_round(number, ndigits): - pass +#def my_round(number, ndigits): +# pass + +#print(my_round(2.1234567, 5)) +#print(my_round(2.1999967, 5)) +#print(my_round(2.9999967, 5)) +def my_round(number, ndigits): + number = number * (10 ** ndigits) + if float(number) - int(number) > 0.5: + number = number // 1 + 1 + else: + number = number // 1 + return number / (10 ** ndigits) print(my_round(2.1234567, 5)) print(my_round(2.1999967, 5)) print(my_round(2.9999967, 5)) @@ -19,10 +30,26 @@ def my_round(number, ndigits): # Билет считается счастливым, если сумма его первых и последних цифр равны. # !!!P.S.: функция не должна НИЧЕГО print'ить -def lucky_ticket(ticket_number): - pass +#def lucky_ticket(ticket_number): +# pass +#print(lucky_ticket(123006)) +#print(lucky_ticket(12321)) +#print(lucky_ticket(436751)) + +def lucky_ticket(ticket_number): + if (len(str(ticket_number))!= 6) or (type(ticket_number) is not int): + return 'Некорректный номер билета' + else: + ticket_number1 = list(str(ticket_number)) + sum1 = int(ticket_number1[0]) + int(ticket_number1[1]) + int(ticket_number1[2]) + sum2 = int(ticket_number1[3]) + int(ticket_number1[4]) + int(ticket_number1[5]) + if sum1 == sum2: + return 'Билет %s счастливый' %ticket_number + else: + return 'Билет %s несчастливый' %ticket_number +print(lucky_ticket(123456)) print(lucky_ticket(123006)) print(lucky_ticket(12321)) -print(lucky_ticket(436751)) +print(lucky_ticket(436751)) \ No newline at end of file diff --git a/lesson03/home_work/hw03_normal.py b/lesson03/home_work/hw03_normal.py index 38ac1fcc1..5be5aaa52 100644 --- a/lesson03/home_work/hw03_normal.py +++ b/lesson03/home_work/hw03_normal.py @@ -2,8 +2,29 @@ # Напишите функцию, возвращающую ряд Фибоначчи с n-элемента до m-элемента. # Первыми элементами ряда считать цифры 1 1 -def fibonacci(n, m): - pass +#def fibonacci(n, m): +# number = [1,1] +# for i in range (2, n+1): +# number.append(number[-1]+number[-2]) +# return number +# print (fibonacci(5,10)) + + +#def fibonacci(n, m): + +# a, b = 1, 1 +# f_list = [1, ] + +# for i in range(m): +# a, b = b, a + b +# f_list.append(a) + +# return f_list[n - 1:m] + + +#print('fibonacci(1, 6): ', fibonacci(1, 6)) + + # Задача-2: # Напишите функцию, сортирующую принимаемый список по возрастанию. @@ -11,17 +32,46 @@ def fibonacci(n, m): # Для решения данной задачи нельзя использовать встроенную функцию и метод sort() -def sort_to_max(origin_list): - pass - -sort_to_max([2, 10, -12, 2.5, 20, -11, 4, 4, 0]) +#def sort_to_max(origin_list): +# if len(origin_list) > 1: +# x = len(origin_list) // 2 +# small = [] +# large = [] + +# for i, val in enumerate(origin_list): +# if i != x: +# if val < origin_list[x]: +# small.append(val) +# else: +# large.append(val) + +# sort_to_max(small) +# sort_to_max(large) +# origin_list[:] = small + [origin_list[x]] + large + +# return origin_list + + +#print(sort_to_max([2, 10, -12, 2.5, 20, -11, 4, 4, 0])) # Задача-3: # Напишите собственную реализацию стандартной функции filter. # Разумеется, внутри нельзя использовать саму функцию filter. - +#x = [11,121,-7,54,"Fdv", 9860,"Hello",11,-5] +#def filt(arg,obj): +# print (obj) +# x_1 = [] +# for i in obj : +# if i != arg: +# x_1.append(i) +# print (x_1) +#filt(11,x) + +#filt(4, z) # Задача-4: # Даны четыре точки А1(х1, у1), А2(x2 ,у2), А3(x3 , у3), А4(х4, у4). # Определить, будут ли они вершинами параллелограмма. + + diff --git a/lesson04/home_work/hw04_easy.py b/lesson04/home_work/hw04_easy.py index 85035ea8b..06dd712f5 100644 --- a/lesson04/home_work/hw04_easy.py +++ b/lesson04/home_work/hw04_easy.py @@ -5,14 +5,33 @@ # Получить новый список, элементы которого будут # квадратами элементов исходного списка # [1, 2, 4, 0] --> [1, 4, 16, 0] +list = [x**2 for x in range (1,25)] +print (list) + +#list_1 = [15,87,10,55,3,-7,1,10,-9,22] +#list_2 = [i**2 for i in list_1] +#print(list_2) # Задание-2: # Даны два списка фруктов. # Получить список фруктов, присутствующих в обоих исходных списках. +lst_1 = ["apple", "banana", "mango", "kiwi", "orange"] +lst_2 = ['mango','kiwi','carrot', 'dragonfruit'] +lst_3 = [x for x in lst_1 if x in lst_2] +print(lst_3) + # Задание-3: # Дан список, заполненный произвольными числами. # Получить список из элементов исходного, удовлетворяющих следующим условиям: # + Элемент кратен 3 # + Элемент положительный # + Элемент не кратен 4 + +#lst = [1,55,110,-5,5,235,678,3] +#lst_2 = [x for x in lst if x %3 ==0 and x >0 and x %4 != 4] +#print (lst_2) + + +lst = [i for i in range(-50,50) if i >0 and i%3 ==0 and i %4!=0] +print (lst) \ No newline at end of file diff --git a/lesson04/home_work/hw04_normal.py b/lesson04/home_work/hw04_normal.py index 739dd33f8..158259115 100644 --- a/lesson04/home_work/hw04_normal.py +++ b/lesson04/home_work/hw04_normal.py @@ -1,26 +1,47 @@ +#import re # Задание-1: # Вывести символы в нижнем регистре, которые находятся вокруг # 1 или более символов в верхнем регистре. # Т.е. из строки "mtMmEZUOmcq" нужно получить ['mt', 'm', 'mcq'] # Решить задачу двумя способами: с помощью re и без. +#import re +#line = 'mtMmEZUOmcqWiryMQhhTxqKdSTKCYEJlEZCsGAMkgAYEOmHBSQsSUHKvSfbmxULaysmNO'\ +# 'GIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLeclMwAoktKlfUBJHPsnawvjPhfgewVzK'\ +# 'TUfSYtBydXaVIpxWjNKgXANvIoumesCSSvjEGRJosUfuhRRDUuTQwLlJJJDdkVjfSAHqn'\ +# 'LxooisBDWuxIhyjJaXDYwdoVPnsllMngNlmkpYOlqXEFIxPqqqgAWdJsOvqppOfyIVjXa'\ +# 'pzGOrfinzzsNMtBIOclwbfRzytmDgEFUzxvZGkdOaQYLVBfsGSAfJMchgBWAsGnBnWete'\ +# 'kUTVuPluKRMQsdelzBgLzuwiimqkFKpyQRzOUyHkXRkdyIEBvTjdByCfkVIAQaAbfCvzQ'\ +# 'WrMMsYpLtdqRltXPqcSMXJIvlBzKoQnSwPFkapxGqnZCVFfKRLUIGBLOwhchWCdJbRuXb'\ +# 'JrwTRNyAxDctszKjSnndaFkcBZmJZWjUeYMdevHhBJMBSShDqbjAuDGTTrSXZywYkmjCC'\ +# 'EUZShGofaFpuespaZWLFNIsOqsIRLexWqTXsOaScgnsUKsJxiihwsCdBViEQBHQaOnLfB'\ +# 'tQQShTYHFqrvpVFiiEFMcIFTrTkIBpGUflwTvAzMUtmSQQZGHlmQKJndiAXbIzVkGSeuT'\ +# 'SkyjIGsiWLALHUCsnQtiOtrbQOQunurZgHFiZjWtZCEXZCnZjLeMiFlxnPkqfJFbCfKCu'\ +# 'UJmGYJZPpRBFNLkqigxFkrRAppYRXeSCBxbGvqHmlsSZMWSVQyzenWoGxyGPvbnhWHuXB'\ +# 'qHFjvihuNGEEFsfnMXTfptvIOlhKhyYwxLnqOsBdGvnuyEZIheApQGOXWeXoLWiDQNJFa'\ +# 'XiUWgsKQrDOeZoNlZNRvHnLgCmysUeKnVJXPFIzvdDyleXylnKBfLCjLHntltignbQoiQ'\ +# 'zTYwZAiRwycdlHfyHNGmkNqSwXUrxGc' +#------------------------------------------------------------------------------- +#import re +#print (re.findall('[A-Z+]*([a-z]+)[A-Z]*', line)) +#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- -line = 'mtMmEZUOmcqWiryMQhhTxqKdSTKCYEJlEZCsGAMkgAYEOmHBSQsSUHKvSfbmxULaysmNO'\ - 'GIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLeclMwAoktKlfUBJHPsnawvjPhfgewVzK'\ - 'TUfSYtBydXaVIpxWjNKgXANvIoumesCSSvjEGRJosUfuhRRDUuTQwLlJJJDdkVjfSAHqn'\ - 'LxooisBDWuxIhyjJaXDYwdoVPnsllMngNlmkpYOlqXEFIxPqqqgAWdJsOvqppOfyIVjXa'\ - 'pzGOrfinzzsNMtBIOclwbfRzytmDgEFUzxvZGkdOaQYLVBfsGSAfJMchgBWAsGnBnWete'\ - 'kUTVuPluKRMQsdelzBgLzuwiimqkFKpyQRzOUyHkXRkdyIEBvTjdByCfkVIAQaAbfCvzQ'\ - 'WrMMsYpLtdqRltXPqcSMXJIvlBzKoQnSwPFkapxGqnZCVFfKRLUIGBLOwhchWCdJbRuXb'\ - 'JrwTRNyAxDctszKjSnndaFkcBZmJZWjUeYMdevHhBJMBSShDqbjAuDGTTrSXZywYkmjCC'\ - 'EUZShGofaFpuespaZWLFNIsOqsIRLexWqTXsOaScgnsUKsJxiihwsCdBViEQBHQaOnLfB'\ - 'tQQShTYHFqrvpVFiiEFMcIFTrTkIBpGUflwTvAzMUtmSQQZGHlmQKJndiAXbIzVkGSeuT'\ - 'SkyjIGsiWLALHUCsnQtiOtrbQOQunurZgHFiZjWtZCEXZCnZjLeMiFlxnPkqfJFbCfKCu'\ - 'UJmGYJZPpRBFNLkqigxFkrRAppYRXeSCBxbGvqHmlsSZMWSVQyzenWoGxyGPvbnhWHuXB'\ - 'qHFjvihuNGEEFsfnMXTfptvIOlhKhyYwxLnqOsBdGvnuyEZIheApQGOXWeXoLWiDQNJFa'\ - 'XiUWgsKQrDOeZoNlZNRvHnLgCmysUeKnVJXPFIzvdDyleXylnKBfLCjLHntltignbQoiQ'\ - 'zTYwZAiRwycdlHfyHNGmkNqSwXUrxGc' - - +#line = 'mtMmEZUOmcqWiryMQhhTxqKdSTKCYEJlEZCsGAMkgAYEOmHBSQsSUHKvSfbmxULaysmNO'\ +# 'GIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLeclMwAoktKlfUBJHPsnawvjPhfgewVzK'\ +# 'TUfSYtBydXaVIpxWjNKgXANvIoumesCSSvjEGRJosUfuhRRDUuTQwLlJJJDdkVjfSAHqn'\ +# 'LxooisBDWuxIhyjJaXDYwdoVPnsllMngNlmkpYOlqXEFIxPqqqgAWdJsOvqppOfyIVjXa'\ +# 'pzGOrfinzzsNMtBIOclwbfRzytmDgEFUzxvZGkdOaQYLVBfsGSAfJMchgBWAsGnBnWete'\ +# 'kUTVuPluKRMQsdelzBgLzuwiimqkFKpyQRzOUyHkXRkdyIEBvTjdByCfkVIAQaAbfCvzQ'\ +# 'WrMMsYpLtdqRltXPqcSMXJIvlBzKoQnSwPFkapxGqnZCVFfKRLUIGBLOwhchWCdJbRuXb'\ +# 'JrwTRNyAxDctszKjSnndaFkcBZmJZWjUeYMdevHhBJMBSShDqbjAuDGTTrSXZywYkmjCC'\ +# 'EUZShGofaFpuespaZWLFNIsOqsIRLexWqTXsOaScgnsUKsJxiihwsCdBViEQBHQaOnLfB'\ +# 'tQQShTYHFqrvpVFiiEFMcIFTrTkIBpGUflwTvAzMUtmSQQZGHlmQKJndiAXbIzVkGSeuT'\ +# 'SkyjIGsiWLALHUCsnQtiOtrbQOQunurZgHFiZjWtZCEXZCnZjLeMiFlxnPkqfJFbCfKCu'\ +# 'UJmGYJZPpRBFNLkqigxFkrRAppYRXeSCBxbGvqHmlsSZMWSVQyzenWoGxyGPvbnhWHuXB'\ +# 'qHFjvihuNGEEFsfnMXTfptvIOlhKhyYwxLnqOsBdGvnuyEZIheApQGOXWeXoLWiDQNJFa'\ +# 'XiUWgsKQrDOeZoNlZNRvHnLgCmysUeKnVJXPFIzvdDyleXylnKBfLCjLHntltignbQoiQ'\ +# 'zTYwZAiRwycdlHfyHNGmkNqSwXUrxGc' + # Задание-2: # Вывести символы в верхнем регистре, слева от которых находятся # два символа в нижнем регистре, а справа - два символа в верхнем регистре. @@ -28,22 +49,26 @@ # "GAMkgAYEOmHBSQsSUHKvSfbmxULaysmNOGIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLec" # нужно получить список строк: ['AY', 'NOGI', 'P'] # Решить задачу двумя способами: с помощью re и без. - -line_2 = 'mtMmEZUOmcqWiryMQhhTxqKdSTKCYEJlEZCsGAMkgAYEOmHBSQsSUHKvSfbmxULaysm'\ - 'NOGIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLeclMwAoktKlfUBJHPsnawvjPhfgewV'\ - 'fzKTUfSYtBydXaVIpxWjNKgXANvIoumesCSSvjEGRJosUfuhRRDUuTQwLlJJJDdkVjfSA'\ - 'HqnLxooisBDWuxIhyjJaXDYwdoVPnsllMngNlmkpYOlqXEFIxPqqqgAWdJsOvqppOfyIV'\ - 'jXapzGOrfinzzsNMtBIOclwbfRzytmDgEFUzxvZGkdOaQYLVBfsGSAfJMchgBWAsGnBnW'\ - 'etekUTVuPluKRMQsdelzBgLzuwiimqkFKpyQRzOUyHkXRkdyIEBvTjdByCfkVIAQaAbfC'\ - 'vzQWrMMsYpLtdqRltXPqcSMXJIvlBzKoQnSwPFkapxGqnZCVFfKRLUIGBLOwhchWCdJbR'\ - 'uXbJrwTRNyAxDctszKjSnndaFkcBZmJZWjUeYMdevHhBJMBSShDqbjAuDGTTrSXZywYkm'\ - 'jCCEUZShGofaFpuespaZWLFNIsOqsIRLexWqTXsOaScgnsUKsJxiihwsCdBViEQBHQaOn'\ - 'LfBtQQShTYHFqrvpVFiiEFMcIFTrTkIBpGUflwTvAzMUtmSQQZGHlmQKJndiAXbIzVkGS'\ - 'euTSkyjIGsiWLALHUCsnQtiOtrbQOQunurZgHFiZjWtZCEXZCnZjLeMiFlxnPkqfJFbCf'\ - 'KCuUJmGYJZPpRBFNLkqigxFkrRAppYRXeSCBxbGvqHmlsSZMWSVQyzenWoGxyGPvbnhWH'\ - 'uXBqHFjvihuNGEEFsfnMXTfptvIOlhKhyYwxLnqOsBdGvnuyEZIheApQGOXWeXoLWiDQN'\ - 'JFaXiUWgsKQrDOeZoNlZNRvHnLgCmysUeKnVJXPFIzvdDyleXylnKBfLCjLHntltignbQ'\ - 'oiQzTYwZAiRwycdlHfyHNGmkNqSwXUrxGC' +#--------------------------------------------------------------------------------- +#import re +#line_2 = 'mtMmEZUOmcqWiryMQhhTxqKdSTKCYEJlEZCsGAMkgAYEOmHBSQsSUHKvSfbmxULaysm'\ +# 'NOGIPHpEMujalpPLNzRWXfwHQqwksrFeipEUlTLeclMwAoktKlfUBJHPsnawvjPhfgewV'\ +# 'fzKTUfSYtBydXaVIpxWjNKgXANvIoumesCSSvjEGRJosUfuhRRDUuTQwLlJJJDdkVjfSA'\ +# 'HqnLxooisBDWuxIhyjJaXDYwdoVPnsllMngNlmkpYOlqXEFIxPqqqgAWdJsOvqppOfyIV'\ +# 'jXapzGOrfinzzsNMtBIOclwbfRzytmDgEFUzxvZGkdOaQYLVBfsGSAfJMchgBWAsGnBnW'\ +# 'etekUTVuPluKRMQsdelzBgLzuwiimqkFKpyQRzOUyHkXRkdyIEBvTjdByCfkVIAQaAbfC'\ +# 'vzQWrMMsYpLtdqRltXPqcSMXJIvlBzKoQnSwPFkapxGqnZCVFfKRLUIGBLOwhchWCdJbR'\ +# 'uXbJrwTRNyAxDctszKjSnndaFkcBZmJZWjUeYMdevHhBJMBSShDqbjAuDGTTrSXZywYkm'\ +# 'jCCEUZShGofaFpuespaZWLFNIsOqsIRLexWqTXsOaScgnsUKsJxiihwsCdBViEQBHQaOn'\ +# 'LfBtQQShTYHFqrvpVFiiEFMcIFTrTkIBpGUflwTvAzMUtmSQQZGHlmQKJndiAXbIzVkGS'\ +# 'euTSkyjIGsiWLALHUCsnQtiOtrbQOQunurZgHFiZjWtZCEXZCnZjLeMiFlxnPkqfJFbCf'\ +# 'KCuUJmGYJZPpRBFNLkqigxFkrRAppYRXeSCBxbGvqHmlsSZMWSVQyzenWoGxyGPvbnhWH'\ +# 'uXBqHFjvihuNGEEFsfnMXTfptvIOlhKhyYwxLnqOsBdGvnuyEZIheApQGOXWeXoLWiDQN'\ +# 'JFaXiUWgsKQrDOeZoNlZNRvHnLgCmysUeKnVJXPFIzvdDyleXylnKBfLCjLHntltignbQ'\ +# 'oiQzTYwZAiRwycdlHfyHNGmkNqSwXUrxGC' +#---------------------------------------------------------------------------------- +#print (re.findall('[a-z][a-z]([A-Z]+)[A-Z][A-Z]',line_2)) +#---------------------------------------------------------------------------------- # Задание-3: # Напишите скрипт, заполняющий указанный файл (самостоятельно задайте имя файла) diff --git a/lesson05/11.py b/lesson05/11.py new file mode 100644 index 000000000..484e6509b --- /dev/null +++ b/lesson05/11.py @@ -0,0 +1,53 @@ +# Задача-1: +# Напишите небольшую консольную утилиту, +# позволяющую работать с папками текущей директории. +# Утилита должна иметь меню выбора действия, в котором будут пункты: +# 1. Перейти в папку +# 2. Просмотреть содержимое текущей папки +# 3. Удалить папку +# 4. Создать папку +# При выборе пунктов 1, 3, 4 программа запрашивает название папки +# и выводит результат действия: "Успешно создано/удалено/перешел", +# "Невозможно создать/удалить/перейти" + +# Для решения данной задачи используйте алгоритмы из задания easy, +# оформленные в виде соответствующих функций, +# и импортированные в данный файл из easy.py +import os +import sys +print('sys.argv = ', sys.argv) +def print_help(): + print("help - получение справки") + print("mkdir - создание директории") + print("ping - тестовый ключ") +def make_dir(): + if not dir_name: + print("Необходимо указать имя директории вторым параметром") + return + dir_path = os.path.join(os.getcwd(), dir_name) + try: + os.mkdir(dir_path) + print('директория {} создана'.format(dir_name)) + except FileExistsError: + print('директория {} уже существует'.format(dir_name)) +def ping(): + print("pong") +do = { + "help": print_help, + "mkdir": make_dir, + "ping": ping +} +try: + dir_name = sys.argv[2] +except IndexError: + dir_name = None +try: + key = sys.argv[1] +except IndexError: + key = None +if key: + if do.get(key): + do[key]() + else: + print("Задан неверный ключ") + print("Укажите ключ help для получения справки") \ No newline at end of file diff --git a/lesson05/home_work/hw05_easy.py b/lesson05/home_work/hw05_easy.py index c6317de2b..28e383c4b 100644 --- a/lesson05/home_work/hw05_easy.py +++ b/lesson05/home_work/hw05_easy.py @@ -8,3 +8,47 @@ # Задача-3: # Напишите скрипт, создающий копию файла, из которого запущен данный скрипт. +import os +import shutil +import sys +path_dir =[('dir_' + str(i + 1)) for i in range(9)] + +def make_dir(paths): + dir_path = os.path.join(os.getcwd(),paths) + try: + os.mkdir(dir_path) + except: + print(dir_path + ' - такая директория уже есть') +for i in path_dir: + make_dir(i) + +def list_dir(main_path): + for _ in os.listdir(main_path): + print(_) +main_path = os.getcwd() +list_dir(main_path) + +def copy_file(first_file,backup_file): + shutil.copy(first_file,backup_file) + +first_file = sys.argv[0] +backup_file = first_file + '.backup' +copy_file(first_file,backup_file) + + +def delete_dir(dir_path): + dir_path = os.path.join(os.getcwd(), dir_path) + try: + os.rmdir(dir_path) + except: + print(dir_path + ' - такой директории нет') + + + +def change_dir(dir_path): + try: + os.chdir(dir_path) + print(os.getcwd() + ' - текущая директория') + except: + print(dir_path + ' - такой директории нет') + diff --git a/lesson05/home_work/hw05_normal.py b/lesson05/home_work/hw05_normal.py index ead6bbc19..a46ce54cb 100644 --- a/lesson05/home_work/hw05_normal.py +++ b/lesson05/home_work/hw05_normal.py @@ -13,3 +13,45 @@ # Для решения данной задачи используйте алгоритмы из задания easy, # оформленные в виде соответствующих функций, # и импортированные в данный файл из easy.py +import sys +import os +import hw05_easy as easy + +print(sys.argv) + +def main(): + while True: + print('''1 for change directory +2 for explore current directory +3 for remove directory +4 for create directory +q for quit''') + task = input() + + if task == 'q': + print('goodbye') + break + + elif task == '1': + dirname = input('enter name of the directory: ') + file_list = files_in_dir() + if dirname in file_list: + os.chdir(dirname) + print('Moved to {} successfully'.format(dirname), os.getcwd()) + else: + print('No such directory!') + + elif task == '2': + print(os.getcwd(), files_in_dir(dirname)) + + elif task == '3': + dirname = input('enter name of the directory: ') + if remove_dir(dirname): + print('{} removed successfully'.format(dirname)) + + elif task == '4': + dirname = input('enter name of the directory: ') + if easy.make_dir(dirname): + print('{} created successfully'.format(dirname)) + +main() \ No newline at end of file diff --git a/lesson06/home_work/hw06_easy.py b/lesson06/home_work/hw06_easy.py index fe5dc2b11..4139c4686 100644 --- a/lesson06/home_work/hw06_easy.py +++ b/lesson06/home_work/hw06_easy.py @@ -1,9 +1,105 @@ # Задача-1: Написать класс для фигуры-треугольника, заданного координатами трех точек. # Определить методы, позволяющие вычислить: площадь, высоту и периметр фигуры. +#import math +#class Treyg(): +# def __init__(self,A,B,C): +# self.A = A +# self.B = B +# self.C = C + +# def sidelen(x, y): +# return math.sqrt((x[0]-y[0])**2 +(x[1]-y[1])**2) + +# self.AB = sidelen(self.A , self.B) +# self.BC = sidelen(self.B , self.C) +# self.AC = sidelen(self.C , self.A) +#treugolnik1 = Treyg((3, 2), (6, 7), (0, 12)) +#print (treugolnik1.sidelen()) + +#import math + +#class Triangle: +# def __init__(self, A, B, C): + # Функция вычисляет длину стороны согласно координатам точек +# def sideLen(dot1, dot2): +# return math.sqrt((dot1[0] - dot2[0]) ** 2 +# + (dot1[1] - dot2[1]) ** 2) + +# self.A = A +# self.B = B +# self.C = C + # На основании соседних координат вычисляем длину стороны AB +# self.AB = sideLen(self.A, self.B) +# self.BC = sideLen(self.B, self.C) +# self.CA = sideLen(self.C, self.A) + + # Вычисление площади треугольника по формуле Герона +# def areaTriangle(self): +# semi_perimeter = self.perimeterTriangle() / 2 + +# return math.sqrt(semi_perimeter +# * (semi_perimeter - self.AB) +# * (semi_perimeter - self.BC) +# * (semi_perimeter - self.CA)) + + # вычисляем периметр треугольника +# def perimeterTriangle(self): +# return self.AB + self.BC + self.CA + + # Вычисляем высоту треугольника +# def heightTriangle(self): +# return self.areaTriangle() / (self.AB / 2) + + +#treugolnik1 = Triangle((3, 2), (6, 7), (0, 12)) + +#print(treugolnik1.areaTriangle()) +#print(treugolnik1.heightTriangle()) +#print(treugolnik1.perimeterTriangle()) + + # Задача-2: Написать Класс "Равнобочная трапеция", заданной координатами 4-х точек. # Предусмотреть в классе методы: # проверка, является ли фигура равнобочной трапецией; # вычисления: длины сторон, периметр, площадь. - +import math +class Trapeze: + def __init__(self, A, B, C, D): + + def sideLen(dot1, dot2): + return math.sqrt((dot1[0] - dot2[0]) ** 2 + + (dot1[1] - dot2[1]) ** 2) + + def areaTriangle(len1, len2, len3): + semi_perimeter = (len1 + len2 + len3) / 2 + + return math.sqrt(semi_perimeter + * (semi_perimeter - len1) + * (semi_perimeter - len2) + * (semi_perimeter - len3)) + + self.A = A + self.B = B + self.C = C + self.D = D + + self.AB = sideLen(self.A, self.B) + self.BC = sideLen(self.B, self.C) + self.CD = sideLen(self.C, self.D) + self.DA = sideLen(self.D, self.A) + self.diagonal_AC = sideLen(self.C, self.A) + self.diagonal_BD = sideLen(self.B, self.D) + self.perimeter = self.AB + self.BC + self.CD + self.DA + + + self.area = areaTriangle(self.AB, self.diagonal_BD, self.DA) \ + + areaTriangle(self.diagonal_BD, self.BC, self.CD) + + def isTrapezeEqu(self): + if self.diagonal_AC == self.diagonal_BD: + return True + return False +x = Trapeze((1,5), (55,10), (54,76), (43,78)) +print(x.isTrapezeEqu()) \ No newline at end of file diff --git a/lesson06/home_work/hw06_hard.py b/lesson06/home_work/hw06_hard.py index fae8d84d2..bd27e0e09 100644 --- a/lesson06/home_work/hw06_hard.py +++ b/lesson06/home_work/hw06_hard.py @@ -10,3 +10,37 @@ # С использованием классов. # Реализуйте классы сотрудников так, чтобы на вход функции-конструктора # каждый работник получал строку из файла +class Worker: + def __init__(self, name, surname, doljnost, oklad, norma, otrabotano): + self.name = name + self.surname = surname + self.doljnost = doljnost + self.oklad = oklad + self.norma = norma + self.otrabotano = otrabotano + + def okl_v_chas(self): + oklad_v_chas = self.oklad // self.norma + return oklad_v_chas + self.okl_v_chas = okl_v_chas + + def polychka(self): + if self.norma < self.otrabotano: + polychit = abs(self.otrabotano - self.norma) * (self.okl_v_chas() *2) + self.oklad + return polychit + +# self.okl_v_chas = okl_v_chas + + if self.norma > self.otrabotano: + polychit = self.oklad - (self.norma - self.otrabotano) * self.okl_v_chas() + return polychit + + +rab1 = Worker ("Петр", "Алексеев", "прораб", 22000, 140, 120 ) +rab2 = Worker ("Василий", "Иванов", "плотник", 18000, 150, 180) +rab3 = Worker ("Матвей", "Бурин", "директор", 42000, 150, 160) +print ("{} {} получит: {}".format(rab1.name, rab1.surname, rab1.polychka())) +print ("{} {} получит: {}".format(rab2.name, rab2.surname, rab2.polychka())) +print ("{} {} получит: {}".format(rab3.name, rab3.surname, rab3.polychka())) + + diff --git a/lesson06/home_work/hw06_normal.py b/lesson06/home_work/hw06_normal.py index 01c3982f4..ba753b5d8 100644 --- a/lesson06/home_work/hw06_normal.py +++ b/lesson06/home_work/hw06_normal.py @@ -15,3 +15,29 @@ # (Ученик --> Класс --> Учителя --> Предметы) # 4. Узнать ФИО родителей указанного ученика # 5. Получить список всех Учителей, преподающих в указанном классе + +class Student: + def __init__ (self,firstname,lastname,surname,dad,mom,class_room,class1,class2,class3): + self.firstname = firstname + self.lastname = lastname + self.surname = surname + self.dad = dad + self.mom = mom + self.class_room = class_room + self.class1 = class1 + self.class2 = class2 + self.class3 = class3 + self.fullname = ("{} {} {}".format (self.firstname, self.lastname, self.surname)) + def get_name(self): + return ("{} {} {}".format(self.firstname , self.lastname , self.surname)) + + def get_parents(self): + return ("Родители ученика- {} Мать - {}, отец - {}".format(self.fullname,self.mom, self.dad)) + +vasya = Student ("Пануков", "Василий", "Викторович", "Пануков Виктор Владимирович", "Панукова Ирина Дмитриевна", "5 A", "phisik", "mathematic", "literal") +kolya = Student ("Ижорский", "Николай", "Петрович", "Ижорский Петр Васильевич", "Ижорская Анна Валерьевна", "5 A", "phisik", "mathematic", "literal") +for students in Student: + print (students.class_room) +#print(vasya.get_name()) +print (vasya.get_parents()) +print (kolya.get_parents()) \ No newline at end of file diff --git a/lesson07/home_work/loto.py b/lesson07/home_work/loto.py index da01d4c00..ea506bda3 100644 --- a/lesson07/home_work/loto.py +++ b/lesson07/home_work/loto.py @@ -57,3 +57,109 @@ модуль random: http://docs.python.org/3/library/random.html """ + + +import random +import sys + + + + +ballsleft = 90 +p1 = 15 +p2 = 15 +balls = random.sample(range(90), 90) +game_set = random.sample(range(90), 30) +p1_set = random.sample(game_set, 15) +p2_set = [e for e in game_set if not e in p1_set] +p1_field = [p1_set[:5], p1_set[5:10], p1_set[10:]] +p2_field = [p2_set[:5], p2_set[5:10], p2_set[10:]] +for p1line in p1_field: + p1line.sort() + p1line.insert(random.randint(0, 4), ' ') + p1line.insert(random.randint(0, 5), ' ') + p1line.insert(random.randint(0, 6), ' ') + p1line.insert(random.randint(0, 7), ' ') +for p2line in p2_field: + p2line.sort() + p2line.insert(random.randint(0, 4), ' ') + p2line.insert(random.randint(0, 5), ' ') + p2line.insert(random.randint(0, 6), ' ') + p2line.insert(random.randint(0, 7), ' ') + + # Кавычки для формирования пустых ячеек в билетах + + +def field(p): + + if p == 0: + print('{:-^26}'.format(' Ваша карточка ')) + for line1 in p1_field: + for n1 in line1: + print('{0:>2}'.format(n1), end=' ') + print() + print('{:-^26}\n'.format('-')) + if p == 1: + print('{:-^26}'.format(' Карточка компьютера ')) + for line2 in p2_field: + for n2 in line2: + print('{0:>2}'.format(n2), end=' ') + print() + print('{:-^26}\n'.format('-')) + + +def you_move(): + + a = input('Зачеркнуть цифру? (y/n): ') + if a == 'y': + if ball in p1_set: + for l in p1_field: + try: + l.insert(l.index(ball), '><') + l.pop(l.index(ball)) + except ValueError: + continue + print('\nOK') + return 1 + else: + print('\nИгра окончена') + sys.exit() + if a == 'n': + if ball in p1_set: + print('\nИгра окончена') + sys.exit() + else: + print('\nOK') + + +def com_move(): + + if ball in p2_set: + for i in p2_field: + try: + i.insert(i.index(ball), '><') + i.pop(i.index(ball)) + except ValueError: + continue + return 1 + + + +for ball in balls: + ballsleft -= 1 + print('\nНовый бочонок: {} (осталось: {})\n'.format(ball, ballsleft)) + field(0) + field(1) + if you_move() == 1: + p1 -= 1 + if com_move() == 1: + p2 -= 1 + if p1 == 0: + print('\nYOU WON') + sys.exit() + if p2 == 0: + print('\nYOU LOST') + sys.exit() + if ballsleft == 0: + print('\nGAME OVER') + sys.exit() \ No newline at end of file