From 315694ff7b14f922edd9ac24c3b7981767d304f6 Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Wed, 23 Dec 2020 12:36:08 +0300 Subject: [PATCH 1/7] Create a1 init branch --- a1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 a1 diff --git a/a1 b/a1 new file mode 100644 index 0000000..e69de29 From 8e039f59e94347ce75221676afe525cc0400b369 Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Wed, 23 Dec 2020 17:14:25 +0300 Subject: [PATCH 2/7] tasks files init MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit созданы файлы заданий --- task_1.py | 4 ++++ task_2.py | 5 +++++ task_3.py | 3 +++ task_4.py | 4 ++++ task_5.py | 3 +++ task_6.py | 6 ++++++ task_7.py | 2 ++ 7 files changed, 27 insertions(+) create mode 100644 task_1.py create mode 100644 task_2.py create mode 100644 task_3.py create mode 100644 task_4.py create mode 100644 task_5.py create mode 100644 task_6.py create mode 100644 task_7.py diff --git a/task_1.py b/task_1.py new file mode 100644 index 0000000..f37a36f --- /dev/null +++ b/task_1.py @@ -0,0 +1,4 @@ +'''1. Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами.''' + + +(выработка в часах * ставка в час) + премия. \ No newline at end of file diff --git a/task_2.py b/task_2.py new file mode 100644 index 0000000..77b8f06 --- /dev/null +++ b/task_2.py @@ -0,0 +1,5 @@ +'''2. Представлен список чисел. Необходимо вывести элементы исходного списка, значения которых больше предыдущего элемента. +Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. Для формирования списка использовать генератор. +Пример исходного списка: [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]. +Результат: [12, 44, 4, 10, 78, 123]. +''' \ No newline at end of file diff --git a/task_3.py b/task_3.py new file mode 100644 index 0000000..e8936cf --- /dev/null +++ b/task_3.py @@ -0,0 +1,3 @@ +'''3. Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. Необходимо решить задание в одну строку. +Подсказка: использовать функцию range() и генератор. +''' \ No newline at end of file diff --git a/task_4.py b/task_4.py new file mode 100644 index 0000000..dacad4f --- /dev/null +++ b/task_4.py @@ -0,0 +1,4 @@ +'''4. Представлен список чисел. Определить элементы списка, не имеющие повторений. Сформировать итоговый массив чисел, соответствующих требованию. Элементы вывести в порядке их следования в исходном списке. Для выполнения задания обязательно использовать генератор. +Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. +Результат: [23, 1, 3, 10, 4, 11] +''' \ No newline at end of file diff --git a/task_5.py b/task_5.py new file mode 100644 index 0000000..d238ae2 --- /dev/null +++ b/task_5.py @@ -0,0 +1,3 @@ +'''5. Реализовать формирование списка, используя функцию range() и возможности генератора. В список должны войти четные числа от 100 до 1000 (включая границы). Необходимо получить результат вычисления произведения всех элементов списка. +Подсказка: использовать функцию reduce(). +''' \ No newline at end of file diff --git a/task_6.py b/task_6.py new file mode 100644 index 0000000..d87683c --- /dev/null +++ b/task_6.py @@ -0,0 +1,6 @@ +'''6. Реализовать два небольших скрипта: +а) итератор, генерирующий целые числа, начиная с указанного, +б) итератор, повторяющий элементы некоторого списка, определенного заранее. +Подсказка: использовать функцию count() и cycle() модуля itertools. Обратите внимание, что создаваемый цикл не должен быть бесконечным. Необходимо предусмотреть условие его завершения. +Например, в первом задании выводим целые числа, начиная с 3, а при достижении числа 10 завершаем цикл. Во втором также необходимо предусмотреть условие, при котором повторение элементов списка будет прекращено. +''' \ No newline at end of file diff --git a/task_7.py b/task_7.py new file mode 100644 index 0000000..a38037e --- /dev/null +++ b/task_7.py @@ -0,0 +1,2 @@ +'''7. Реализовать генератор с помощью функции с ключевым словом yield, создающим очередное значение. При вызове функции должен создаваться объект-генератор. Функция должна вызываться следующим образом: for el in fact(n). Функция отвечает за получение факториала числа, а в цикле необходимо выводить только первые n чисел, начиная с 1! и до n!. +Подсказка: факториал числа n — произведение чисел от 1 до n. Например, факториал четырёх 4! = 1 * 2 * 3 * 4 = 24.''' \ No newline at end of file From 131a21d2eed27946e6e33a8e878d98f42f327797 Mon Sep 17 00:00:00 2001 From: Don Diamond Date: Sun, 27 Dec 2020 01:48:22 +0300 Subject: [PATCH 3/7] task 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit как сделать лямбда функцией ? --- a1 | 0 task_1.py | 26 ++++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) delete mode 100644 a1 diff --git a/a1 b/a1 deleted file mode 100644 index e69de29..0000000 diff --git a/task_1.py b/task_1.py index f37a36f..cd95067 100644 --- a/task_1.py +++ b/task_1.py @@ -1,4 +1,26 @@ -'''1. Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами.''' +from sys import argv +if len(argv) < 4: + print('error attributes less 3 digits') + exit() -(выработка в часах * ставка в час) + премия. \ No newline at end of file +values = [] + +for el in argv[1:]: + try: + el = int(el) + values.append(el) + except ValueError: + print('you need use 3 digits\n[выработка в часах] [ставка в час] [премия]') + exit() + +#values = [20, 300, 2050] +#print(lambda work_time, mp_hour, prem: (work_time * mp_hour) + prem, values) + +def out_final(*args): + params = args[0] + out = params[0] * params[1] + params[2] + return out + +print(out_final(values)) +exit() \ No newline at end of file From 5f5193bede6c1887be41b36fda0f0187e56fa097 Mon Sep 17 00:00:00 2001 From: Don Diamond Date: Sun, 27 Dec 2020 11:23:01 +0300 Subject: [PATCH 4/7] task2 --- task_2.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/task_2.py b/task_2.py index 77b8f06..1c5db0a 100644 --- a/task_2.py +++ b/task_2.py @@ -2,4 +2,17 @@ Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. Для формирования списка использовать генератор. Пример исходного списка: [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]. Результат: [12, 44, 4, 10, 78, 123]. -''' \ No newline at end of file +''' +from random import randint + +rnd_lis = [randint(0,100) for i in range(30)] + + +new_lis = [] +for i in range(1,len(rnd_lis)): + if rnd_lis[i]>rnd_lis[i-1]: + new_lis.append(rnd_lis[i]) + +print(new_lis) + +exit() \ No newline at end of file From 5d650ecdd20a3ef6ef47c0ccace2be7f3ced26cf Mon Sep 17 00:00:00 2001 From: Don Diamond Date: Sun, 27 Dec 2020 20:49:35 +0300 Subject: [PATCH 5/7] home_work upd --- task_1.py | 2 +- task_1_exampl.py | 14 ++++++++++++++ task_2.py | 3 +-- task_3.py | 6 +++++- task_4.py | 7 ++++++- task_5.py | 5 ++++- 6 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 task_1_exampl.py diff --git a/task_1.py b/task_1.py index cd95067..2e70726 100644 --- a/task_1.py +++ b/task_1.py @@ -23,4 +23,4 @@ def out_final(*args): return out print(out_final(values)) -exit() \ No newline at end of file +exit() diff --git a/task_1_exampl.py b/task_1_exampl.py new file mode 100644 index 0000000..fc4af50 --- /dev/null +++ b/task_1_exampl.py @@ -0,0 +1,14 @@ +''' +lect 4 task 1 +''' + +from sys import argv + +_, hour, price, bonus, *__ = argv + +try: + result = float(hour) * float(price) + float(bonus) + print(result) +except ValueError as e: + print('Ошибка ввода') + print(e) diff --git a/task_2.py b/task_2.py index 1c5db0a..eb6f0ab 100644 --- a/task_2.py +++ b/task_2.py @@ -14,5 +14,4 @@ new_lis.append(rnd_lis[i]) print(new_lis) - -exit() \ No newline at end of file +exit() diff --git a/task_3.py b/task_3.py index e8936cf..5967396 100644 --- a/task_3.py +++ b/task_3.py @@ -1,3 +1,7 @@ '''3. Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. Необходимо решить задание в одну строку. Подсказка: использовать функцию range() и генератор. -''' \ No newline at end of file +''' + +print([i for i in range(20,241) if i % 20 == 0 or i % 21 == 0]) + +print([(i % 20) == 0 or (i % 21) == 0 for i in range(20,241)]) diff --git a/task_4.py b/task_4.py index dacad4f..e8190b4 100644 --- a/task_4.py +++ b/task_4.py @@ -1,4 +1,9 @@ '''4. Представлен список чисел. Определить элементы списка, не имеющие повторений. Сформировать итоговый массив чисел, соответствующих требованию. Элементы вывести в порядке их следования в исходном списке. Для выполнения задания обязательно использовать генератор. Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. Результат: [23, 1, 3, 10, 4, 11] -''' \ No newline at end of file +''' + +examlpe_list = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] +output_list = [element for element in examlpe_list if examlpe_list.count(element) == 1] +print(output_list) + diff --git a/task_5.py b/task_5.py index d238ae2..793bf39 100644 --- a/task_5.py +++ b/task_5.py @@ -1,3 +1,6 @@ '''5. Реализовать формирование списка, используя функцию range() и возможности генератора. В список должны войти четные числа от 100 до 1000 (включая границы). Необходимо получить результат вычисления произведения всех элементов списка. Подсказка: использовать функцию reduce(). -''' \ No newline at end of file +''' +from functools import reduce + +print(reduce(lambda x, y: x * y, [i for i in range(100,1001)])) \ No newline at end of file From 2943e6675b40391522622e414fd948b46e74d668 Mon Sep 17 00:00:00 2001 From: Don Diamond Date: Mon, 28 Dec 2020 16:57:07 +0300 Subject: [PATCH 6/7] HW upd l4_task_6 --- task_5.py | 2 +- task_6.py | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/task_5.py b/task_5.py index 793bf39..f2bb427 100644 --- a/task_5.py +++ b/task_5.py @@ -3,4 +3,4 @@ ''' from functools import reduce -print(reduce(lambda x, y: x * y, [i for i in range(100,1001)])) \ No newline at end of file +print(reduce(lambda x, y: x * y, [i for i in range(100,1001)])) diff --git a/task_6.py b/task_6.py index d87683c..0228a8c 100644 --- a/task_6.py +++ b/task_6.py @@ -3,4 +3,23 @@ б) итератор, повторяющий элементы некоторого списка, определенного заранее. Подсказка: использовать функцию count() и cycle() модуля itertools. Обратите внимание, что создаваемый цикл не должен быть бесконечным. Необходимо предусмотреть условие его завершения. Например, в первом задании выводим целые числа, начиная с 3, а при достижении числа 10 завершаем цикл. Во втором также необходимо предусмотреть условие, при котором повторение элементов списка будет прекращено. -''' \ No newline at end of file +''' +from itertools import count as i_count +from itertools import cycle as i_cycle + +c = 0 +for el in i_cycle([50, 100, 170]): + print(f'{c} = с') + if abs(c) > 20: + exit('c > 20') + print(el + c) + count_num = el + for element in i_count(count_num, -11): + if element % 2 == 0: + print(f' {element} % 2 == 0 check') + elif element < 0: + print(f'success 0 over {count_num}') + break + else: + print(element) + c += 1 From 9c4159b40d7d8e3987ebbf3493e7f18ce4cff8ba Mon Sep 17 00:00:00 2001 From: Don Diamond Date: Tue, 29 Dec 2020 16:20:43 +0300 Subject: [PATCH 7/7] les 4 task 7 n! --- task_7.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/task_7.py b/task_7.py index a38037e..8591260 100644 --- a/task_7.py +++ b/task_7.py @@ -1,2 +1,27 @@ -'''7. Реализовать генератор с помощью функции с ключевым словом yield, создающим очередное значение. При вызове функции должен создаваться объект-генератор. Функция должна вызываться следующим образом: for el in fact(n). Функция отвечает за получение факториала числа, а в цикле необходимо выводить только первые n чисел, начиная с 1! и до n!. -Подсказка: факториал числа n — произведение чисел от 1 до n. Например, факториал четырёх 4! = 1 * 2 * 3 * 4 = 24.''' \ No newline at end of file +'''Реализовать генератор с помощью функции с ключевым словом yield, создающим очередное значение. При вызове функции должен создаваться объект-генератор. Функция вызывается следующим образом: for el in fact(n). Она отвечает за получение факториала числа. В цикле нужно выводить только первые n чисел, начиная с 1! и до n!. +Подсказка: факториал числа n — произведение чисел от 1 до n. Например, факториал четырёх 4! = 1 * 2 * 3 * 4 = 24.''' + + +def fact(n): + result = 1 + print("==fact1==") + for num in range(1, n+1): + result *= num + yield result + +gen = fact(7) +for idx, itm in enumerate(gen, 1): + print(idx, itm) + +def fact2(n): + prev2 = 1 + result2 = 1 + print("--fact2--") + while prev2 <= n: + yield result2 + prev2 += 1 + result2 *= prev2 + +a = fact2(7) +for foo, bar in enumerate(a, 1): + print(foo, bar) \ No newline at end of file