diff --git a/lesson01/home_work/hw01_easy.py b/lesson01/home_work/hw01_easy.py index f927b0b06..830134ffb 100644 --- a/lesson01/home_work/hw01_easy.py +++ b/lesson01/home_work/hw01_easy.py @@ -1,24 +1,28 @@ +# Задача-1: поработайте с переменными, создайте несколько, +# выведите на экран, запросите от пользователя и сохраните в переменную, выведите на экран -__author__ = 'Ваши Ф.И.О.' - -# Задача-1: Дано произвольное целое число (число заранее неизвестно). -# Вывести поочередно цифры исходного числа (порядок вывода цифр неважен). -# Подсказки: -# * постарайтесь решить задачу с применением арифметики и цикла while; -# * при желании решите задачу с применением цикла for. - -# код пишем тут... - - -# Задача-2: Исходные значения двух переменных запросить у пользователя. -# Поменять значения переменных местами. Вывести новые значения на экран. -# Подсказка: -# * постарайтесь сделать решение через дополнительную переменную -# или через арифметические действия -# Не нужно решать задачу так: -# print("a = ", b, "b = ", a) - это неправильное решение! +i = 4 +print(i) +s = '40' +print(s) +d = {'first_name': 'Иван', 'last_name': 'Иванов'} +print(d) +user_input = input('Введите значение: ') +print(user_input) +# Задача-2: Запросите от пользователя число, сохраните в переменную, +# прибавьте к числу 2 и выведите результат на экран. +# Если возникла ошибка, прочитайте ее, вспомните урок и постарайтесь устранить ошибку. +number = input('Введите число: ') +print(int(number) + 2) # Задача-3: Запросите у пользователя его возраст. # Если ему есть 18 лет, выведите: "Доступ разрешен", # иначе "Извините, пользование данным ресурсом только с 18 лет" + + +age = int(input('Введите Ваш возраст: ')) +if age >= 18: + print('Доступ разрешен') +else: + print('Извините, пользование данным ресурсом только с 18 лет') diff --git a/lesson01/home_work/hw01_hard.py b/lesson01/home_work/hw01_hard.py index 7df268664..54b7389c6 100644 --- a/lesson01/home_work/hw01_hard.py +++ b/lesson01/home_work/hw01_hard.py @@ -1,16 +1,28 @@ -__author__ = 'Ваши Ф.И.О.' +__author__ = 'Пантелеев А.А.' -# Задание-1: -# Ваня набрал несколько операций в интерпретаторе и получал результаты: -# Код: a == a**2 -# Результат: True -# Код: a == a*2 -# Результат: True -# Код: a > 999999 -# Результат: True +# Создайте программу медицинская анкета, где вы запросите у пользователя такие данные, как имя, фамилию, возраст, и вес. +# И выведите результат согласно которому пациент в хорошем состоянии, если ему до 30 лет и вес от 50 и до 120 кг, +# Пациенту требуется начать вести правильный образ жизни, если ему более 30 и вес меньше 50 или больше 120 кг +# Пациенту требуется врачебный осмотр, если ему более 40 и вес менее 50 или больше 120 кг. +# Все остальные варианты вы можете обработать на ваш вкус и полет фантазии =) +# Формула не отражает реальной действительности и здесь используется только ради примера. -# Вопрос: Чему была равна переменная a, -# если точно известно, что её значение не изменялось? +# Пример: Вася Пупкин, 29 год, вес 90 - хорошее состояние +# Пример: Вася Пупкин, 31 год, вес 121 - следует заняться собой +# Пример: Вася Пупкин, 31 год, вес 49 - следует заняться собой +# Пример: Вася Пупкин, 41 год, вес 121 - следует обратится к врачу! +# Пример: Вася Пупкин, 41 год, вес 49 - следует обратится к врачу! -# Подсказка: это значение точно есть ;) +first_name = input('First name: ') +last_name = input('Last name: ') +age = int(input('Your age: ')) +weight = int(input('Your weight: ')) + +if 50 <= weight <= 120: + print('%s %s, %d год, вес %d - хорошее состояние' % (first_name, last_name, age, weight)) +else: + if age > 40: + print('%s %s, %d год, вес %d - ледует обратится к врачу!' % (first_name, last_name, age, weight)) + else: + print('%s %s, %d год, вес %d - следует заняться собой' % (first_name, last_name, age, weight)) diff --git a/lesson01/home_work/hw01_normal.py b/lesson01/home_work/hw01_normal.py index 991724e9a..e7a87fb9d 100644 --- a/lesson01/home_work/hw01_normal.py +++ b/lesson01/home_work/hw01_normal.py @@ -1,27 +1,30 @@ -__author__ = 'Ваши Ф.И.О.' +__author__ = 'Пантелеев А.А.' -# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа. -# Например, дается x = 58375. -# Нужно вывести максимальную цифру в данном числе, т.е. 8. -# Подразумевается, что мы не знаем это число заранее. -# Число приходит в виде целого беззнакового. -# Подсказки: -# * постарайтесь решить задачу с применением арифметики и цикла while; -# * при желании и понимании решите задачу с применением цикла for. +# Задача: используя цикл запрашивайте у пользователя число пока оно не станет больше 0, но меньше 10. +# После того, как пользователь введет корректное число, возведите его в степерь 2 и выведите на экран. +# Например, пользователь вводит число 123, вы сообщаете ему, что число не верное, +# и сообщаете об диапазоне допустимых. И просите ввести заного. +# Допустим пользователь ввел 2, оно подходит, возводим в степень 2, и выводим 4 +number = int(input('Введите число: ')) +while True: + if 0 < number < 10: + break + number = int(input('Введите число больше 0, но меньше 10: ')) +print(number ** 2) # Задача-2: Исходные значения двух переменных запросить у пользователя. # Поменять значения переменных местами. Вывести новые значения на экран. # Решите задачу, используя только две переменные. # Подсказки: # * постарайтесь сделать решение через действия над числами; -# * при желании и понимании воспользуйтесь синтаксисом кортежей Python. +a = int(input('Введите число A: ')) +b = int(input('Введите число B: ')) +a = a + b +b = a - b +a = a - b +print('A = ', a) +print('B = ', b) -# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида -# ax² + 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 ed4447e50..7ba291898 100644 --- a/lesson02/home_work/hw02_easy.py +++ b/lesson02/home_work/hw02_easy.py @@ -11,15 +11,37 @@ # 3. киви # 4. арбуз +i = 0 +fruits = ["яблоко", "банан", "киви", "арбуз"] +for fruit in fruits: + i = i + 1 + print('{}. {:>6}'.format(i, fruit)) + # Подсказка: воспользоваться методом .format() # Задача-2: # Даны два произвольные списка. # Удалите из первого списка элементы, присутствующие во втором списке. +list1 = ['4', 'dfsdf', 'kh43', 'dfsdf'] +list2 = ['456', 'dfsdf'] + +for item in list2: + if item in list1: + list1.remove(item) +print(list1) # Задача-3: # Дан произвольный список из целых чисел. # Получите НОВЫЙ список из элементов исходного, выполнив следующие условия: # если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два. +list1 = (23, 555555, 80, 23, 5, 9, 345) +list2 = [] +for item in list1: + if item % 2 == 0: + list2.append(item/4) + else: + list2.append(item*2) + +print(list2) diff --git a/lesson02/home_work/hw02_normal.py b/lesson02/home_work/hw02_normal.py index 3acfaabb6..ee37a4a2e 100644 --- a/lesson02/home_work/hw02_normal.py +++ b/lesson02/home_work/hw02_normal.py @@ -5,16 +5,59 @@ # если такой корень вообще можно извлечь # Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2] +import math +list1 = [2, -5, 8, 9, -25, 25, 4] +list2 = [] +for number in list1: + if number >= 0: + x = math.sqrt(number) + if x > 0 and x % 1 == 0: + list2.append(int(x)) +print(list2) + # Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013. # Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года. # Склонением пренебречь (2000 года, 2010 года) +from datetime import date +months = ('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', + 'декабря') +days = ('первое', 'второе', 'третье', 'четвертое', 'пятое', 'шестое', 'седьмое', 'восьмое', 'девятое', 'десятое', + 'одиннадцатое', 'двенадцатое', 'тринадцатое', 'четырнадцатое', 'пятьнадцатое', 'шестьнадцатое', 'семьнадцатое', + 'восемьнадцатое', 'девятнадцатое') + +dt = date(2018, 1, 9) + +print(dt.strftime("%d %B %Y")) +month = months[dt.month - 1] +if dt.day == 31: + day = 'тридцать первое' +elif dt.day == 30: + day = 'тридцатое' +elif dt.day > 20: + day = 'двадцать {}'.format(days[dt.day - 21]) +elif dt.day == 20: + day = 'двадцатое' +elif dt.day > 10: + day = days[dt.day - 1] +else: + day = days[dt.day - 1] + +print('{} {} {} года'.format(day, month, dt.year)) + + # Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами # в диапазоне от -100 до 100. В списке должно быть n - элементов. # Подсказка: # для получения случайного числа используйте функцию randint() модуля random +from random import randint +list1 = [] +n = int(input('Введите количество (n): ')) +for i in range(0, n): + list1.append(randint(-100, 100)) +print(list1) # Задача-4: Дан список, заполненный произвольными целыми числами. @@ -23,3 +66,6 @@ # например, 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] +list2 = list(set(list1)) +print(list2) + diff --git a/lesson03/home_work/hw03_easy.py b/lesson03/home_work/hw03_easy.py index 63d13f646..976c8fd2b 100644 --- a/lesson03/home_work/hw03_easy.py +++ b/lesson03/home_work/hw03_easy.py @@ -4,8 +4,13 @@ # Округление должно происходить по математическим правилам (0.6 --> 1, 0.4 --> 0). # Для решения задачи не используйте встроенные функции и функции из модуля math. + def my_round(number, ndigits): - pass + nd = 10 ** ndigits + num = number * nd + if num % nd >= 5: + num += 1 + return int(num) / nd print(my_round(2.1234567, 5)) @@ -20,7 +25,18 @@ def my_round(number, ndigits): # !!!P.S.: функция не должна НИЧЕГО print'ить def lucky_ticket(ticket_number): - pass + str_ticket_number = str(ticket_number) + half_sum_left = 0 + half_sum_right = 0 + half_len = len(str_ticket_number) // 2 + if half_len * 2 == len(str_ticket_number): + for number in str_ticket_number[:half_len]: + half_sum_left = half_sum_left + int(number) + for number in str_ticket_number[half_len:]: + half_sum_right = half_sum_right + int(number) + if half_sum_left == half_sum_right: + return True + return False print(lucky_ticket(123006)) diff --git a/lesson03/home_work/hw03_normal.py b/lesson03/home_work/hw03_normal.py index 38ac1fcc1..62497b9e0 100644 --- a/lesson03/home_work/hw03_normal.py +++ b/lesson03/home_work/hw03_normal.py @@ -2,8 +2,13 @@ # Напишите функцию, возвращающую ряд Фибоначчи с n-элемента до m-элемента. # Первыми элементами ряда считать цифры 1 1 + def fibonacci(n, m): - pass + temp = [0, 1] + for i in range(1, m): + temp.append(temp[-2] + temp[-1]) + return temp[n:] + # Задача-2: # Напишите функцию, сортирующую принимаемый список по возрастанию. @@ -12,7 +17,14 @@ def fibonacci(n, m): def sort_to_max(origin_list): - pass + new_list = list() + for number in origin_list: + i = 0 + while i < len(new_list) and number > new_list[i]: + i += 1 + new_list.insert(i, number) + return new_list + sort_to_max([2, 10, -12, 2.5, 20, -11, 4, 4, 0]) @@ -21,7 +33,24 @@ def sort_to_max(origin_list): # Разумеется, внутри нельзя использовать саму функцию filter. +def filter_function(x): + if x > 0: + return x + return None + + +def my_filter(origin_list): + return_list = [] + for x in origin_list: + if filter_function(x): + return_list.append(x) + return return_list + + +my_filter([2, 34, 0, -12, 34, -3, 0, 89]) + # Задача-4: # Даны четыре точки А1(х1, у1), А2(x2 ,у2), А3(x3 , у3), А4(х4, у4). # Определить, будут ли они вершинами параллелограмма. + diff --git a/lesson07/home_work/loto.py b/lesson07/home_work/loto.py index da01d4c00..277378b54 100644 --- a/lesson07/home_work/loto.py +++ b/lesson07/home_work/loto.py @@ -57,3 +57,38 @@ модуль random: http://docs.python.org/3/library/random.html """ +import random + + +def create_set_of_numbers(): + numbers = list(range(1, 91)) + random.shuffle(numbers) + return numbers + + +class Card: + lines = [] + + def __init__(self): + numbers = random.sample(create_set_of_numbers(), 15) + self.lines.append(numbers[0:5]) + self.lines.append(numbers[5:10]) + self.lines.append(numbers[10:]) + for line in self.lines: + line.sort() + while len(line) < 9: + line.insert(random.randint(0, 9), None) + + def check_number(self, num): + li = 0 + for line in self.lines: + i = line.index(num) + if i >= 0: + return li, i + li = li + 1 + return None + + +if __name__ == '__main__': + card = Card + print(card.lines) diff --git a/special/easy.py b/special/easy.py new file mode 100644 index 000000000..40f4932a2 --- /dev/null +++ b/special/easy.py @@ -0,0 +1,28 @@ +# Постарайтесь использовать то, что мы прошли на уроке при решении этого ДЗ, +# вспомните про zip(), map(), lambda, посмотрите где лучше с ними, а где они излишни! + +# Задание - 1 +# Создайте функцию, принимающую на вход Имя, возраст и город проживания человека +# Функция должна возвращать строку вида "Василий, 21 год(а), проживает в городе Москва" + + +def info(name, age, city): + return '{}, {} год(а), проживает в городе {}'.format(name, age, city) + + +# Задание - 2 +# Создайте функцию, принимающую на вход 3 числа, и возвращающую наибольшее из них + + +def maxof(x, y, z): + return max(x, y, z) + + +# Задание - 3 +# Создайте функцию, принимающую неограниченное количество строковых аргументов, +# верните самую длинную строку из полученных аргументов + + +def get_max_string(*args): + return max(list(args), key=len) + diff --git a/special/normal.py b/special/normal.py new file mode 100644 index 000000000..25d6d16c5 --- /dev/null +++ b/special/normal.py @@ -0,0 +1,57 @@ +# Эти задачи необходимо решить используя регулярные выражения! + +# Задача - 1 +# Запросите у пользователя имя, фамилию, email. Теперь необходимо совершить проверки, имя и фамилия должны иметь заглавные первые буквы. +# email - не должен иметь заглавных букв и должен быть в формате: текст в нижнем регистре, допускается нижнее подчеркивание и цифры, потом @, потом текст, допускаются цифры, точка, ru или org или com. +# Например: +# Пупкин василий - неверно указано имя, te$T@test.net - неверно указан email (спецсимвол, заглавная буква, .net), te_4_st@test.com - верно указан. + +import re +first_name = '' +while not re.match('[А-Я][а-я]+$', first_name): + first_name = input("Введите Имя: ") +last_name = '' +while not re.match('[А-Я][а-я]+$', last_name): + last_name = input("Введите Фамилию: ") +email = '' +while not re.match('[a-z][\w\d_]+@$', email): + email = input("Введите email: ") + + +# Задача - 2: +# Вам дан текст: + +some_str = ''' +Мороз и солнце; день чудесный! +Еще ты дремлешь, друг прелестный — +Пора, красавица, проснись: +Открой сомкнуты негой взоры +Навстречу северной Авроры, +Звездою севера явись! +Вечор, ты помнишь, вьюга злилась, +На мутном небе мгла носилась; +Луна, как бледное пятно, +Сквозь тучи мрачные желтела, +И ты печальная сидела — +А нынче... погляди в окно: +Под голубыми небесами +Великолепными коврами, +Блестя на солнце, снег лежит; +Прозрачный лес один чернеет, +И ель сквозь иней зеленеет, +И речка подо льдом блестит. +Вся комната янтарным блеском +Озарена. Веселым треском +Трещит затопленная печь. +Приятно думать у лежанки. +Но знаешь: не велеть ли в санки +Кобылку бурую запречь? +Скользя по утреннему снегу, +Друг милый, предадимся бегу +Нетерпеливого коня +И навестим поля пустые, +Леса, недавно столь густые, +И берег, милый для меня.''' + +# Необходимо с помощью регулярных выражений определить есть ли в тексте подряд +# более одной точки, при любом исходе сообщите результат пользователю! \ No newline at end of file