diff --git a/less-03/task-01.py b/less-03/task-01.py new file mode 100644 index 0000000..4c52e12 --- /dev/null +++ b/less-03/task-01.py @@ -0,0 +1,26 @@ +# Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. +# Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль. + +def inputIntNum(message): + n=0 + while True: + try: + n = float(input(message + ' ')) + except ValueError: + print('Это не число или используйте "." для разделения разрядов, попробуйте снова.') + continue + else: + break + return n + +def my_div(a,b): + c=None + try: + c = a/b + except ZeroDivisionError: + print('Деление на ноль') + return c + +print('Введите 2 числа, опробуем диление a/b') +print(f"Результат деление a/b = { my_div(inputIntNum('Число а?'), inputIntNum('Число b?')) }") + diff --git a/less-03/task-02.py b/less-03/task-02.py new file mode 100644 index 0000000..ab7c2be --- /dev/null +++ b/less-03/task-02.py @@ -0,0 +1,9 @@ +# Выполнить функцию, которая принимает несколько параметров, описывающих данные +# пользователя: имя, фамилия, год рождения, город проживания, email, телефон. +# Функция должна принимать параметры как именованные аргументы. +# Осуществить вывод данных о пользователе одной строкой. + +def my_f(first_n, last_n, year, city, email, tel): + print(f'Резудьтат поиска: {last_n} {first_n}, {year}г.р., проживает в {city}, телефон: {tel}, е-маил: {email}') + +my_f(first_n='Иван', last_n='Иванов', year='2000', city='Городище', email='ii@company.com', tel='+17612345654') \ No newline at end of file diff --git a/less-03/task-03.py b/less-03/task-03.py new file mode 100644 index 0000000..25b8709 --- /dev/null +++ b/less-03/task-03.py @@ -0,0 +1,9 @@ +# Реализовать функцию my_func(), которая принимает три позиционных +# аргумента и возвращает сумму наибольших двух аргументов. + +def my_func(first, second, third): + r = [first, second, third] + r.remove(min(r)) + return sum(r) + +print('сумма =',my_func(2, 2, 33)) diff --git a/less-03/task-04.py b/less-03/task-04.py new file mode 100644 index 0000000..b7272ca --- /dev/null +++ b/less-03/task-04.py @@ -0,0 +1,46 @@ +# Программа принимает действительное положительное число x и целое отрицательное число y. +# Выполните возведение числа x в степень y. Задание реализуйте в виде функции my_func(x, y). +# При решении задания нужно обойтись без встроенной функции возведения числа в степень. + +def my_func_v1(x,y): + if y == 0 : return 1 + elif y > 0: + return x**y + else: + y = -y + return 1/x**y + +def my_func_v2(x,y): + degr=1 + if y == 0: + return degr + elif y > 0: + while y>=1: + degr *= x + y = y-1 + return degr + else: + y = -y + while y>=1: + degr *= x + y = y-1 + return 1/degr + +def inputIntNum(message): + n=0 + while True: + try: + n = int(input(message + ' ')) + except ValueError: + print('Это не число, попробуйте снова.') + continue + else: + break + return n + +print('Решение задачи X в степени Y') +x = inputIntNum('X=') +y = inputIntNum('Y=') + +print('Возведение в степень с помощью оператора **', my_func_v1(x,y)) +print('без оператора **, с использованием цикла', my_func_v2(x,y)) \ No newline at end of file diff --git a/less-03/task-05.py b/less-03/task-05.py new file mode 100644 index 0000000..09e282e --- /dev/null +++ b/less-03/task-05.py @@ -0,0 +1,33 @@ +# 5. Программа запрашивает у пользователя строку чисел, разделённых пробелом. +# При нажатии Enter должна выводиться сумма чисел. +# Пользователь может продолжить ввод чисел, разделённых пробелом и снова нажать Enter. +# Сумма вновь введённых чисел будет добавляться к уже подсчитанной сумме. +# Но если вместо числа вводится специальный символ, выполнение программы завершается. +# Если специальный символ введён после нескольких чисел, то вначале нужно добавить сумму +# этих чисел к полученной ранее сумме и после этого завершить программу. + +def my_func(): + summ = 0 + cont_flag = True + while cont_flag: + res = 0 + str = input("Ведите несколько чисел через пробел, для завершения используйте 'q'") + list_num = str.split() + for el in list_num: + try: + n = int(el) + except ValueError: + if el.lower() == 'q': + summ += res + print(f'Сумма введенных чисел {res}, общая сумма {summ}') + return summ + print(f'{el} - не число') + continue + else: + res += n + continue + summ += res + print(f'Сумма введенных чисел {res}, общая сумма {summ}') + +my_func() +print('END') \ No newline at end of file diff --git a/less-03/task-06-07.py b/less-03/task-06-07.py new file mode 100644 index 0000000..33150da --- /dev/null +++ b/less-03/task-06-07.py @@ -0,0 +1,26 @@ +# Реализовать функцию int_func(), принимающую слова из маленьких латинских букв и возвращающую +# их же, но с прописной первой буквой. Например, print(int_func(‘text’)) -> Text. + +# Каждое слово состоит из латинских букв в нижнем регистре + +def my_title(word): + return word[0].upper()+word[1:] + +def isANSi_lower_alpha(word): + if not word.isascii() or not word.isalpha() or not word.islower(): + return 0 + return 1 + +def int_func(str): + word_list = str.split() + for i, word in enumerate(word_list): + if isANSi_lower_alpha(word): + word_list[i] = my_title(word) + else: + word_list[i] = 'error_word' + + return ' '.join(word_list) + +test_str = 'The quick brown fox jumps over the lazy dog. кот' +print(test_str) +print(int_func(test_str)) \ No newline at end of file