diff --git a/homeworks/les03/task01.py b/homeworks/les03/task01.py new file mode 100644 index 0000000..b88218f --- /dev/null +++ b/homeworks/les03/task01.py @@ -0,0 +1,27 @@ +""" +1. Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. +Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль. +""" + + +def input_float(): + """ Запрашивает число у пользователя """ + buf = input('Введите число : ') + try: + return float(buf) + except ValueError: + print('Ошибка ввода. ') + + +def ai_divide(a, b): + """ Принимает два числа, возвращает результат деления """ + # todo описание функции + try: + return a / b + except ZeroDivisionError: + return float('inf') + + +a = input_float() +b = input_float() +print('Результат : ', ai_divide(a, b)) diff --git a/homeworks/les03/task02.py b/homeworks/les03/task02.py new file mode 100644 index 0000000..d1a93e4 --- /dev/null +++ b/homeworks/les03/task02.py @@ -0,0 +1,16 @@ +""" +2. Реализовать функцию, принимающую несколько параметров, +описывающих данные пользователя: имя, фамилия, год рождения, город проживания, email, телефон. +Функция должна принимать параметры как именованные аргументы. +Реализовать вывод данных о пользователе одной строкой. + +""" + + +def client_to_string(name, last_name, year_of_birth, email, phone): + """ Принимает данные клиента, печатает в строку""" + print(f'{name} {last_name}, {year_of_birth} года рождения, контакты: {email}, {phone}') + + +client_to_string(name='Николай', last_name='Иронов', year_of_birth=2019, email='ironov@artlebedev.ru', + phone='+7 495 926-18-00') diff --git a/homeworks/les03/task03.py b/homeworks/les03/task03.py new file mode 100644 index 0000000..2ce3687 --- /dev/null +++ b/homeworks/les03/task03.py @@ -0,0 +1,19 @@ +""" +3. Реализовать функцию my_func(), +которая принимает три позиционных аргумента, и возвращает сумму наибольших двух аргументов. +""" + + +def my_func(a, b, c): + """ Принимает три числа, возвращает сумму наибольших двух аргументов """ + if a > c and b > c: + return a + b + elif b > a and c > a: + return b + c + else: + return a + c + + +print(my_func(1, 2, 3)) +print(my_func(1, 2, 3)) +print(my_func(1, 3, 2)) diff --git a/homeworks/les03/task04.py b/homeworks/les03/task04.py new file mode 100644 index 0000000..af8b620 --- /dev/null +++ b/homeworks/les03/task04.py @@ -0,0 +1,45 @@ +""" +4. Программа принимает действительное положительное число x и целое отрицательное число y. +Необходимо выполнить возведение числа x в степень y. Задание необходимо реализовать в виде функции my_func(x, y). +При решении задания необходимо обойтись без встроенной функции возведения числа в степень. + +Подсказка: попробуйте решить задачу двумя способами. +Первый — возведение в степень с помощью оператора **. +Второй — более сложная реализация без оператора **, предусматривающая использование цикла. +""" + + +def input_float(invite='Введите число : '): + buf = input(invite) + try: + return float(buf) + except ValueError: + print('Ошибка ввода. ') + + +def input_int(invite='Введите число : '): + buf = input(invite) + try: + return int(buf) + except ValueError: + print('Ошибка ввода. ') + + +def reverse_expo(x, neg_exp): + """ Вычисляет отцательную степень числа """ + multi = x + for _ in my_range(1, abs(neg_exp) - 1): + multi *= x + return 1 / multi + + +def my_range(start, end): + """ Реализация простого варианта функции range""" + while start <= end: + yield start + start += 1 + + +x = input_float('Введите действительное положительное число : ') +neg_exp = input_int('Введите целое отрицательное число : ') +print('Результат', reverse_expo(x, neg_exp)) diff --git a/homeworks/les03/task05.py b/homeworks/les03/task05.py new file mode 100644 index 0000000..269d82d --- /dev/null +++ b/homeworks/les03/task05.py @@ -0,0 +1,24 @@ +""" +5. Программа запрашивает у пользователя строку чисел, разделенных пробелом. +При нажатии Enter должна выводиться сумма чисел. +Пользователь может продолжить ввод чисел, разделенных пробелом и снова нажать Enter. +Сумма вновь введенных чисел будет добавляться к уже подсчитанной сумме. +Но если вместо числа вводится специальный символ, выполнение программы завершается. +Если специальный символ введен после нескольких чисел, +то вначале нужно добавить сумму этих чисел к полученной ранее сумме и после этого завершить программу. + +""" +sym_stop = 'q' # символ остановки +is_doing = True # флаг продолжения расчетов +summa = 0 # сумма +while is_doing: + buf = input("Введите числа через пробел: ") + if buf[0] == sym_stop: # первый символ стоп + break + tokens = buf.split() + for word in tokens: + if word == sym_stop: # проверяется наличие символа вместо числа + is_doing = False + break + summa += float(word) + print('Сумма : ', summa) diff --git a/homeworks/les03/task06.py b/homeworks/les03/task06.py new file mode 100644 index 0000000..8e5f181 --- /dev/null +++ b/homeworks/les03/task06.py @@ -0,0 +1,25 @@ +""" +6. Реализовать функцию int_func(), +принимающую слово из маленьких латинских букв и возвращающую его же, но с прописной первой буквой. +Например, print(int_func(‘text’)) -> Text. +Продолжить работу над заданием. +В программу должна попадать строка из слов, разделенных пробелом. +Каждое слово состоит из латинских букв в нижнем регистре. +Сделать вывод исходной строки, но каждое слово должно начинаться с заглавной буквы. +Необходимо использовать написанную ранее функцию int_func(). +""" + + +def int_func(text): + """ Делаеет первую букву прописной """ + return text[0].upper() + text[1:] + + +buf = input("Введите слова через пробел: ") +tokens = buf.split() # преобразование в список +idx = 0 +buf = '' +while idx < len(tokens): + buf += int_func(tokens[idx]) + ' ' # преобразование в строку + idx += 1 +print(buf)