From dab509d28154e2887aee6f484389e3506b98cc4a Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Tue, 22 Jun 2021 22:46:42 +0300 Subject: [PATCH 01/13] Update and rename README.md to hw3 --- README.md | 1 - hw3 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) delete mode 100644 README.md create mode 100644 hw3 diff --git a/README.md b/README.md deleted file mode 100644 index fdc793e..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -python diff --git a/hw3 b/hw3 new file mode 100644 index 0000000..d45c203 --- /dev/null +++ b/hw3 @@ -0,0 +1,86 @@ +#1. Реализовать функцию, принимающую два числа (позиционные аргументы) и +# выполняющую их деление. Числа запрашивать у пользователя, предусмотреть +# обработку ситуации деления на ноль. + +while True: + def myfunc(arg1, arg2): + try: + return arg1 / arg2, arg1 + except ZeroDivisionError: + return print('Division on 0') + print(myfunc((int(input('Enter first number: '))), (int(input('Enter second number: '))))) + +#2. Реализовать функцию, принимающую несколько параметров, +# описывающих данные пользователя: имя, фамилия, +# год рождения, город проживания, email, телефон. +# Функция должна принимать параметры как именованные аргументы. +# Реализовать вывод данных о пользователе одной строкой. + +# Robert Paulson 1980 NewYork rb@yahoo.com 989898 + +print('Who are You?') +def myfunc(**kwargs): + return list(kwargs.values()) +print(', '.join(myfunc(name=input('Name: '), + name2=input('Surname: '), + year=input('Year of birth: '), + town=input('Town: '), + email=input('Email: '), + tel=input('Tel number: ')))) + +# 3. Реализовать функцию my_func(), которая принимает три позиционных аргумента, +# и возвращает сумму наибольших двух аргументов. + +def myfunc(a, b, c): + n = [a, b, c] + n.remove(min(a, b, c)) + return sum(n) +print(myfunc(1, 2, 3)) + +# 4. Программа принимает действительное положительное число x и целое отрицательное число y. +# Необходимо выполнить возведение числа x в степень y. Задание необходимо реализовать в виде функции my_func(x, y). +# При решении задания необходимо обойтись без встроенной функции возведения числа в степень. +# Подсказка: попробуйте решить задачу двумя способами. Первый — возведение в степень с помощью оператора **. +# Второй — более сложная реализация без оператора **, предусматривающая использование цикла. + +def myfunc(x, y): + return 1 / x ** abs(y) +print(myfunc(3, -3)) + +def myfunc2(x, y): + for i in range(abs(y - 1)): + x *= x + return 1 / x +print(myfunc2(3, -3)) + +# 5. Программа запрашивает у пользователя строку чисел, разделенных пробелом. +# При нажатии Enter должна выводиться сумма чисел. +# Пользователь может продолжить ввод чисел, +# разделенных пробелом и снова нажать Enter. Сумма вновь введенных чисел будет добавляться +# к уже подсчитанной сумме. Но если вместо числа вводится специальный символ, выполнение программы завершается. +# Если специальный символ введен после нескольких чисел, то вначале нужно добавить сумму этих чисел к полученной +# ранее сумме и после этого завершить программу. + +def myfunc(*args): + sum = 0 + while True: + n = list(input('Input: ').split()) + if n == '#': + break + else: + for n in args: + sum +=n + +# 6. Реализовать функцию int_func(), принимающую слово из маленьких латинских +# букв и возвращающую его же, но с прописной первой буквой. Например, print(int_func(‘text’)) -> Text. + +# Продолжить работу над заданием. В программу должна попадать строка из слов, разделенных пробелом. +# Каждое слово состоит из латинских букв в нижнем регистре. Сделать вывод исходной строки, +# но каждое слово должно начинаться с заглавной буквы. +# Необходимо использовать написанную ранее функцию int_func(). + +def int_func(): + w = input("Input: ") + w = w.title() + return w +print(int_func()) From a80b9c04528ff615d0c946ae04bab229a8e52051 Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Wed, 23 Jun 2021 17:23:24 +0300 Subject: [PATCH 02/13] Add files via upload --- hw 4 - 1.py | 11 +++++++++++ hw 4 - 2.py | 12 ++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 hw 4 - 1.py create mode 100644 hw 4 - 2.py diff --git a/hw 4 - 1.py b/hw 4 - 1.py new file mode 100644 index 0000000..af96879 --- /dev/null +++ b/hw 4 - 1.py @@ -0,0 +1,11 @@ +# 1. Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. +# В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. +# Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. + +def salary(): + x = float(input('Введите количество отработанных часов: ')) + y = float(input('Ставка в час: ')) + c = float(input('Премия: ')) + pay = x * y + return pay + c +print(f'Размер заработной платы составил: {salary()} руб.') \ No newline at end of file diff --git a/hw 4 - 2.py b/hw 4 - 2.py new file mode 100644 index 0000000..54960ee --- /dev/null +++ b/hw 4 - 2.py @@ -0,0 +1,12 @@ +# 2. Представлен список чисел. Необходимо вывести элементы исходного списка, +# значения которых больше предыдущего элемента. +# Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. +# Для формирования списка использовать генератор. +# Пример исходного списка: [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]. +# Результат: [12, 44, 4, 10, 78, 123]. + +import random +lst = [random.randrange(3, 33, 3) for i in range(15)] +new_lst = [number for i, number in enumerate(lst) if i > 0 and lst[i] > lst[i - 1]] +# print(f"Исходный список: {lst}") +print("New list: ", new_lst) From b89eaa841ff283d0e0d02e7ca9ff97fd16929c5f Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Wed, 23 Jun 2021 19:18:09 +0300 Subject: [PATCH 03/13] Update hw 4 - 1.py --- hw 4 - 1.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/hw 4 - 1.py b/hw 4 - 1.py index af96879..25ed1ff 100644 --- a/hw 4 - 1.py +++ b/hw 4 - 1.py @@ -2,10 +2,7 @@ # В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. # Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. -def salary(): - x = float(input('Введите количество отработанных часов: ')) - y = float(input('Ставка в час: ')) - c = float(input('Премия: ')) - pay = x * y - return pay + c -print(f'Размер заработной платы составил: {salary()} руб.') \ No newline at end of file +from sys import argv +script_name, hours, rate_per_hour, bonus = argv +hours, rate_per_hour, bonus = map(int, argv[1:]) +print("Salary: ", hours * rate_per_hour + bonus, "руб.") From ec40a4b6367bf7d717577a4024b6a9ba613bccd6 Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Wed, 23 Jun 2021 20:19:57 +0300 Subject: [PATCH 04/13] Update and rename hw 4 - 1.py to hw 4.py --- hw 4 - 1.py | 8 -------- hw 4.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 8 deletions(-) delete mode 100644 hw 4 - 1.py create mode 100644 hw 4.py diff --git a/hw 4 - 1.py b/hw 4 - 1.py deleted file mode 100644 index 25ed1ff..0000000 --- a/hw 4 - 1.py +++ /dev/null @@ -1,8 +0,0 @@ -# 1. Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. -# В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. -# Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. - -from sys import argv -script_name, hours, rate_per_hour, bonus = argv -hours, rate_per_hour, bonus = map(int, argv[1:]) -print("Salary: ", hours * rate_per_hour + bonus, "руб.") diff --git a/hw 4.py b/hw 4.py new file mode 100644 index 0000000..a20d1f0 --- /dev/null +++ b/hw 4.py @@ -0,0 +1,29 @@ +# 1. Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. +# В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. +# Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. + +from sys import argv +script_name, hours, rate_per_hour, bonus = argv +hours, rate_per_hour, bonus = map(int, argv[1:]) +print("Salary: ", hours * rate_per_hour + bonus, "руб.") + + +# 2. Представлен список чисел. Необходимо вывести элементы исходного списка, +# значения которых больше предыдущего элемента. +# Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. +# Для формирования списка использовать генератор. +# Пример исходного списка: [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]. +# Результат: [12, 44, 4, 10, 78, 123]. + +import random +lst = [random.randrange(3, 33, 3) for i in range(15)] +new_lst = [number for i, number in enumerate(lst) if i > 0 and lst[i] > lst[i - 1]] +# print(f"Old list: {lst}") +print("New list: ", new_lst) + + +# 3. Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. +# Необходимо решить задание в одну строку. # Подсказка: использовать функцию range() и генератор. + +new = [i for i in range(20, 240) if i % 21 == 0] +# print(new) From bd355c835001b709b2521599520971f19a14c226 Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Wed, 23 Jun 2021 20:20:18 +0300 Subject: [PATCH 05/13] Delete hw 4 - 2.py --- hw 4 - 2.py | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 hw 4 - 2.py diff --git a/hw 4 - 2.py b/hw 4 - 2.py deleted file mode 100644 index 54960ee..0000000 --- a/hw 4 - 2.py +++ /dev/null @@ -1,12 +0,0 @@ -# 2. Представлен список чисел. Необходимо вывести элементы исходного списка, -# значения которых больше предыдущего элемента. -# Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. -# Для формирования списка использовать генератор. -# Пример исходного списка: [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]. -# Результат: [12, 44, 4, 10, 78, 123]. - -import random -lst = [random.randrange(3, 33, 3) for i in range(15)] -new_lst = [number for i, number in enumerate(lst) if i > 0 and lst[i] > lst[i - 1]] -# print(f"Исходный список: {lst}") -print("New list: ", new_lst) From 5a917ed4d29daef4a32caae8c357f3a68c38cb00 Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Wed, 23 Jun 2021 22:27:53 +0300 Subject: [PATCH 06/13] Update hw 4.py --- hw 4.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/hw 4.py b/hw 4.py index a20d1f0..4e9c913 100644 --- a/hw 4.py +++ b/hw 4.py @@ -27,3 +27,28 @@ new = [i for i in range(20, 240) if i % 21 == 0] # print(new) + + +# 7 (Дополнительно). Реализовать генератор с помощью функции с ключевым словом yield, +# создающим очередное значение. При вызове функции должен создаваться объект-генератор. +# Функция должна вызываться следующим образом: for el in fact(n). +# Функция отвечает за получение факториала числа, +# а в цикле необходимо выводить только первые n чисел, начиная с 1! и до n!. +# Подсказка: факториал числа n — произведение чисел от 1 до n. Например, +# факториал четырёх 4! = 1 * 2 * 3 * 4 = 24. + +from itertools import count +from math import factorial + +def gen(): + for i in count(1): + yield factorial(i) + +generator = gen() +x = 0 +for k in generator: + if x < 4: + print(k) + x += 1 + else: + break From 153da0432e74d91829c89f5fdd6801dc72f5a937 Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Thu, 24 Jun 2021 00:31:38 +0300 Subject: [PATCH 07/13] Update hw 4.py --- hw 4.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/hw 4.py b/hw 4.py index 4e9c913..6a31aba 100644 --- a/hw 4.py +++ b/hw 4.py @@ -28,6 +28,33 @@ new = [i for i in range(20, 240) if i % 21 == 0] # print(new) +# 6. Реализовать два небольших скрипта: +# а) итератор, генерирующий целые числа, начиная с указанного, +# б) итератор, повторяющий элементы некоторого списка, определенного заранее. +# Подсказка: использовать функцию count() и cycle() модуля itertools. +# Обратите внимание, что создаваемый цикл не должен быть бесконечным. +# Необходимо предусмотреть условие его завершения. +# Например, в первом задании выводим целые числа, начиная с 3, а при достижении числа 10 завершаем цикл. +# Во втором также необходимо предусмотреть условие, при котором повторение элементов списка будет прекращено. + +print('итератор "a"') +import time +from itertools import count +i = int(input('>>>')) +for el in count(i): + if el == 10: + break + else: + print(el) +time.sleep(2) +print('итератор "b"') +from itertools import cycle +lst = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] +for el in cycle(lst): + if el == 10: + break + else: + print(el) # 7 (Дополнительно). Реализовать генератор с помощью функции с ключевым словом yield, # создающим очередное значение. При вызове функции должен создаваться объект-генератор. @@ -39,11 +66,9 @@ from itertools import count from math import factorial - def gen(): for i in count(1): yield factorial(i) - generator = gen() x = 0 for k in generator: From 91543d2f91f94cc0f7762593c07445d381d6b2d7 Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Thu, 24 Jun 2021 01:16:49 +0300 Subject: [PATCH 08/13] Update hw 4.py --- hw 4.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/hw 4.py b/hw 4.py index 6a31aba..e0baa89 100644 --- a/hw 4.py +++ b/hw 4.py @@ -37,12 +37,14 @@ # Например, в первом задании выводим целые числа, начиная с 3, а при достижении числа 10 завершаем цикл. # Во втором также необходимо предусмотреть условие, при котором повторение элементов списка будет прекращено. -print('итератор "a"') + import time from itertools import count -i = int(input('>>>')) +print('итератор "a"') +# i = int(input('>>>')) +i = int(2) for el in count(i): - if el == 10: + if el == 6: break else: print(el) @@ -51,10 +53,10 @@ from itertools import cycle lst = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] for el in cycle(lst): - if el == 10: + if el == 3: break else: - print(el) + print(el, end=" ") # 7 (Дополнительно). Реализовать генератор с помощью функции с ключевым словом yield, # создающим очередное значение. При вызове функции должен создаваться объект-генератор. From 4e07c4f927abd886c9ff43cc80fee19627896cc5 Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Fri, 25 Jun 2021 00:36:07 +0300 Subject: [PATCH 09/13] Update hw 4.py --- hw 4.py | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/hw 4.py b/hw 4.py index e0baa89..9897752 100644 --- a/hw 4.py +++ b/hw 4.py @@ -28,6 +28,91 @@ new = [i for i in range(20, 240) if i % 21 == 0] # print(new) +# 4. Представлен список чисел. Определить элементы списка, не имеющие повторений. +# Сформировать итоговый массив чисел, соответствующих требованию. +# Элементы вывести в порядке их следования в исходном списке. +# Для выполнения задания обязательно использовать генератор. +# Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. +# Результат: [23, 1, 3, 10, 4, 11] + +from itertools import count +lst = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] +"""первый / не правильный вариант""" +# new_lst = [] +# for i in lst: +# if lst.count(i) == 1: +# new_lst.append(i) + +new_lst = [] +for el in count(): + """тут если вставить lst будет ошибка на итерацию. если оставить так, то цикл вечный. как пройти список используя count?""" + if el == 1 in lst.count(1): + new_lst.append(el) + +print('first list: ', lst) +print('result list: ', new_lst) + +"""c 5 завал полный""" +# 5. Реализовать формирование списка, используя функцию range() и возможности генератора. +# В список должны войти четные числа от 100 до 1000 (включая границы). +# Необходимо получить результат вычисления произведения всех элементов списка. +# Подсказка: использовать функцию reduce(). + + +import math +from itertools import count +from random import randrange +from functools import reduce +def multiplication(): +new = [] +for el in count(100, 2): + if el > 1000: + break + else: + new.append(el) + print(new) +multiplication() int + +# print(reduce(multiplication, [i, b])) +# print(functools.reduce(lambda a, b : a * b, new)) + + # lst1 = [randrange(99, 1001, 1)] + # new = [] + # for i in lst1: + # i * (i+1) + # new.insert(i) +# print(reduce(multiplication, [a, b])) + +# 5. Реализовать формирование списка, используя функцию range() и возможности генератора. +# В список должны войти четные числа от 100 до 1000 (включая границы). +# Необходимо получить результат вычисления произведения всех элементов списка. +# Подсказка: использовать функцию reduce(). + + +import math +from itertools import count +from random import randrange +from functools import reduce +def multiplication(): +new = [] +for el in count(100, 2): + if el > 1000: + break + else: + new.append(el) + print(new) +multiplication() int + +# print(reduce(multiplication, [i, b])) +# print(functools.reduce(lambda a, b : a * b, new)) + + # lst1 = [randrange(99, 1001, 1)] + # new = [] + # for i in lst1: + # i * (i+1) + # new.insert(i) +# print(reduce(multiplication, [a, b])) + # 6. Реализовать два небольших скрипта: # а) итератор, генерирующий целые числа, начиная с указанного, # б) итератор, повторяющий элементы некоторого списка, определенного заранее. @@ -40,6 +125,7 @@ import time from itertools import count + print('итератор "a"') # i = int(input('>>>')) i = int(2) @@ -48,7 +134,9 @@ break else: print(el) + time.sleep(2) + print('итератор "b"') from itertools import cycle lst = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] From 69b46c0dae02a163512796c6fb728cd16423fa68 Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Mon, 28 Jun 2021 23:31:39 +0300 Subject: [PATCH 10/13] Rename hw3 to hw3.py --- hw3 => hw3.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename hw3 => hw3.py (100%) diff --git a/hw3 b/hw3.py similarity index 100% rename from hw3 rename to hw3.py From 79142c1b8242964242686e6f7b70f9b40bde7c9a Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Mon, 28 Jun 2021 23:34:31 +0300 Subject: [PATCH 11/13] Delete hw3.py --- hw3.py | 86 ---------------------------------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 hw3.py diff --git a/hw3.py b/hw3.py deleted file mode 100644 index d45c203..0000000 --- a/hw3.py +++ /dev/null @@ -1,86 +0,0 @@ -#1. Реализовать функцию, принимающую два числа (позиционные аргументы) и -# выполняющую их деление. Числа запрашивать у пользователя, предусмотреть -# обработку ситуации деления на ноль. - -while True: - def myfunc(arg1, arg2): - try: - return arg1 / arg2, arg1 - except ZeroDivisionError: - return print('Division on 0') - print(myfunc((int(input('Enter first number: '))), (int(input('Enter second number: '))))) - -#2. Реализовать функцию, принимающую несколько параметров, -# описывающих данные пользователя: имя, фамилия, -# год рождения, город проживания, email, телефон. -# Функция должна принимать параметры как именованные аргументы. -# Реализовать вывод данных о пользователе одной строкой. - -# Robert Paulson 1980 NewYork rb@yahoo.com 989898 - -print('Who are You?') -def myfunc(**kwargs): - return list(kwargs.values()) -print(', '.join(myfunc(name=input('Name: '), - name2=input('Surname: '), - year=input('Year of birth: '), - town=input('Town: '), - email=input('Email: '), - tel=input('Tel number: ')))) - -# 3. Реализовать функцию my_func(), которая принимает три позиционных аргумента, -# и возвращает сумму наибольших двух аргументов. - -def myfunc(a, b, c): - n = [a, b, c] - n.remove(min(a, b, c)) - return sum(n) -print(myfunc(1, 2, 3)) - -# 4. Программа принимает действительное положительное число x и целое отрицательное число y. -# Необходимо выполнить возведение числа x в степень y. Задание необходимо реализовать в виде функции my_func(x, y). -# При решении задания необходимо обойтись без встроенной функции возведения числа в степень. -# Подсказка: попробуйте решить задачу двумя способами. Первый — возведение в степень с помощью оператора **. -# Второй — более сложная реализация без оператора **, предусматривающая использование цикла. - -def myfunc(x, y): - return 1 / x ** abs(y) -print(myfunc(3, -3)) - -def myfunc2(x, y): - for i in range(abs(y - 1)): - x *= x - return 1 / x -print(myfunc2(3, -3)) - -# 5. Программа запрашивает у пользователя строку чисел, разделенных пробелом. -# При нажатии Enter должна выводиться сумма чисел. -# Пользователь может продолжить ввод чисел, -# разделенных пробелом и снова нажать Enter. Сумма вновь введенных чисел будет добавляться -# к уже подсчитанной сумме. Но если вместо числа вводится специальный символ, выполнение программы завершается. -# Если специальный символ введен после нескольких чисел, то вначале нужно добавить сумму этих чисел к полученной -# ранее сумме и после этого завершить программу. - -def myfunc(*args): - sum = 0 - while True: - n = list(input('Input: ').split()) - if n == '#': - break - else: - for n in args: - sum +=n - -# 6. Реализовать функцию int_func(), принимающую слово из маленьких латинских -# букв и возвращающую его же, но с прописной первой буквой. Например, print(int_func(‘text’)) -> Text. - -# Продолжить работу над заданием. В программу должна попадать строка из слов, разделенных пробелом. -# Каждое слово состоит из латинских букв в нижнем регистре. Сделать вывод исходной строки, -# но каждое слово должно начинаться с заглавной буквы. -# Необходимо использовать написанную ранее функцию int_func(). - -def int_func(): - w = input("Input: ") - w = w.title() - return w -print(int_func()) From 48b1aae7a055d8d79f2f9d555a7d373e4c1947ba Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Fri, 9 Jul 2021 21:44:09 +0300 Subject: [PATCH 12/13] Update hw 4.py --- hw 4.py | 95 ++++++++++++++++----------------------------------------- 1 file changed, 27 insertions(+), 68 deletions(-) diff --git a/hw 4.py b/hw 4.py index 9897752..d11e885 100644 --- a/hw 4.py +++ b/hw 4.py @@ -3,11 +3,19 @@ # Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. from sys import argv -script_name, hours, rate_per_hour, bonus = argv -hours, rate_per_hour, bonus = map(int, argv[1:]) -print("Salary: ", hours * rate_per_hour + bonus, "руб.") +def salary(): + try: + script_name, hours, rate_per_hour, bonus = argv + hours, rate_per_hour, bonus = map(int, argv[1:]) + print("Salary: ", hours * rate_per_hour + bonus, "руб.") + except ValueError: + print('Error') + + +salary() + # 2. Представлен список чисел. Необходимо вывести элементы исходного списка, # значения которых больше предыдущего элемента. # Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. @@ -21,12 +29,16 @@ # print(f"Old list: {lst}") print("New list: ", new_lst) +#second var: +li = [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55] +new = [li[i] for i in range(1, len(li)) if li[i] > li[i - 1]] +print(new) # 3. Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. # Необходимо решить задание в одну строку. # Подсказка: использовать функцию range() и генератор. -new = [i for i in range(20, 240) if i % 21 == 0] -# print(new) +new = [i for i in range(20, 240) if i % 20 == 0 or i % 21 == 0] +print(new) # 4. Представлен список чисел. Определить элементы списка, не имеющие повторений. # Сформировать итоговый массив чисел, соответствующих требованию. @@ -35,83 +47,30 @@ # Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. # Результат: [23, 1, 3, 10, 4, 11] -from itertools import count lst = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] -"""первый / не правильный вариант""" -# new_lst = [] -# for i in lst: -# if lst.count(i) == 1: -# new_lst.append(i) - -new_lst = [] -for el in count(): - """тут если вставить lst будет ошибка на итерацию. если оставить так, то цикл вечный. как пройти список используя count?""" - if el == 1 in lst.count(1): - new_lst.append(el) - +new_lst = [i for i in lst if lst.count(i) == 1] print('first list: ', lst) print('result list: ', new_lst) -"""c 5 завал полный""" # 5. Реализовать формирование списка, используя функцию range() и возможности генератора. # В список должны войти четные числа от 100 до 1000 (включая границы). # Необходимо получить результат вычисления произведения всех элементов списка. # Подсказка: использовать функцию reduce(). +new = [i for i in range(100, 1001, 2)] +print(new) -import math -from itertools import count -from random import randrange -from functools import reduce -def multiplication(): -new = [] -for el in count(100, 2): - if el > 1000: - break - else: - new.append(el) - print(new) -multiplication() int -# print(reduce(multiplication, [i, b])) -# print(functools.reduce(lambda a, b : a * b, new)) +def multiplication(arg1, arg2): + return arg1 * arg2 - # lst1 = [randrange(99, 1001, 1)] - # new = [] - # for i in lst1: - # i * (i+1) - # new.insert(i) -# print(reduce(multiplication, [a, b])) -# 5. Реализовать формирование списка, используя функцию range() и возможности генератора. -# В список должны войти четные числа от 100 до 1000 (включая границы). -# Необходимо получить результат вычисления произведения всех элементов списка. -# Подсказка: использовать функцию reduce(). - - -import math -from itertools import count -from random import randrange from functools import reduce -def multiplication(): -new = [] -for el in count(100, 2): - if el > 1000: - break - else: - new.append(el) - print(new) -multiplication() int - -# print(reduce(multiplication, [i, b])) -# print(functools.reduce(lambda a, b : a * b, new)) - - # lst1 = [randrange(99, 1001, 1)] - # new = [] - # for i in lst1: - # i * (i+1) - # new.insert(i) -# print(reduce(multiplication, [a, b])) + +li = [v for v in range(100, 1001) if v % 2 == 0] +result = reduce(lambda a, b: a * b, li) +print(result) +print('end') # 6. Реализовать два небольших скрипта: # а) итератор, генерирующий целые числа, начиная с указанного, From 658eb2ea99052d3885534f3cc791b74cca63894d Mon Sep 17 00:00:00 2001 From: BESTTEST4YOU <81219764+BESTTEST4YOU@users.noreply.github.com> Date: Sat, 10 Jul 2021 20:47:29 +0300 Subject: [PATCH 13/13] Update hw 4.py --- hw 4.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/hw 4.py b/hw 4.py index d11e885..681db6a 100644 --- a/hw 4.py +++ b/hw 4.py @@ -105,6 +105,23 @@ def multiplication(arg1, arg2): else: print(el, end=" ") +#2 Вариант: +from itertools import count, cycle +st = int(input('Input first number: ')) +end = int(input('Input last number: ')) +for i in count(st): + print(i) + if i == end: + break + +li = input('Inpust list: ').split() + +for el in cycle(li): + stop = input('Итерируем дальше? Для выхода: Нет') + if stop.title() == 'Нет': + break + print(el) + # 7 (Дополнительно). Реализовать генератор с помощью функции с ключевым словом yield, # создающим очередное значение. При вызове функции должен создаваться объект-генератор. # Функция должна вызываться следующим образом: for el in fact(n). @@ -126,3 +143,17 @@ def gen(): x += 1 else: break + +#2 Вариант: +def fact(b): + res = 2 + if b == 0: + yield f'{b}! = 1' + for i in range(1, b + 1): + res *= i + yield f'{i}! = {res}' + + +n = int(input('Введите число, факториал которго хотите получить: ')) +for el in fact(n): + print(el)