From 65ee4e36eacfd87b19d9cb6ee1b7befa2ee654f8 Mon Sep 17 00:00:00 2001 From: Karadesh Date: Sat, 23 May 2020 21:16:44 +0300 Subject: [PATCH 1/2] Homework_4 added. Need to be updated --- Homework_4/1_Workers_prize.py | 10 ++++++++++ Homework_4/2_Numbers_list.py | 11 +++++++++++ Homework_4/3_No_regreats_and_repeats.py | 13 +++++++++++++ Homework_4/4. Reduce_100-1000.py | 8 ++++++++ Homework_4/5Numbers+1.py | 15 +++++++++++++++ Homework_4/6Cycle_end.py | 14 ++++++++++++++ 6 files changed, 71 insertions(+) create mode 100644 Homework_4/1_Workers_prize.py create mode 100644 Homework_4/2_Numbers_list.py create mode 100644 Homework_4/3_No_regreats_and_repeats.py create mode 100644 Homework_4/4. Reduce_100-1000.py create mode 100644 Homework_4/5Numbers+1.py create mode 100644 Homework_4/6Cycle_end.py diff --git a/Homework_4/1_Workers_prize.py b/Homework_4/1_Workers_prize.py new file mode 100644 index 0000000..8db39d8 --- /dev/null +++ b/Homework_4/1_Workers_prize.py @@ -0,0 +1,10 @@ +from sys import argv + +script_name, money, hours, prize = argv + +money = int(money) +hours = int(hours) +prize = int(prize) +workers_prize = money * hours + prize + +print(f'Зарплата работника равна: {workers_prize} золотых монет.') \ No newline at end of file diff --git a/Homework_4/2_Numbers_list.py b/Homework_4/2_Numbers_list.py new file mode 100644 index 0000000..6e1f3b3 --- /dev/null +++ b/Homework_4/2_Numbers_list.py @@ -0,0 +1,11 @@ +import random +my_list = [random.randrange(100) for i in range(10)] +print(my_list) + +second_list =[my_list[i+1] for i in range(len(my_list) - 1) if my_list[i+1] > my_list[i]] + +print(second_list) + + +third_list = [el_1 for el_1 in range(20,240) if el_1 %20 == 0 or el_1 %21 ==0] +print(third_list) diff --git a/Homework_4/3_No_regreats_and_repeats.py b/Homework_4/3_No_regreats_and_repeats.py new file mode 100644 index 0000000..a0201fd --- /dev/null +++ b/Homework_4/3_No_regreats_and_repeats.py @@ -0,0 +1,13 @@ +import random +my_list = [random.randrange(100) for i in range(10)] + +print(my_list) +second_list = [el for el in my_list[:] if my_list.count(el) == 1] +print(second_list) +#my_list_2 = [2, 5, 5, 10,10] +#for i in my_list_2.index(): +# print(i) +#print(mylist_2) + + +#print(second_list) diff --git a/Homework_4/4. Reduce_100-1000.py b/Homework_4/4. Reduce_100-1000.py new file mode 100644 index 0000000..ea00185 --- /dev/null +++ b/Homework_4/4. Reduce_100-1000.py @@ -0,0 +1,8 @@ +from functools import reduce + +elements_of_thousand = [el for el in range(100,1000) if el %2 == 0] +even_numbers = reduce(lambda x , y : x * y, elements_of_thousand) +print(even_numbers) +#print(elements_of_thousand) + +#print(division_of_thousands) \ No newline at end of file diff --git a/Homework_4/5Numbers+1.py b/Homework_4/5Numbers+1.py new file mode 100644 index 0000000..e1a3be9 --- /dev/null +++ b/Homework_4/5Numbers+1.py @@ -0,0 +1,15 @@ +#1. + +from itertools import count,cycle + +for i in count(int(input('Введите начальное число: '))): + print(i) + +#2. + +repeat_this_list = [2 , 3 , 5 , 10 , 25 , 156 , 15 , 35 , 2 , 10] + +end_of_repeat = '' +iter = cycle(my_list) +while end_of_repeat != 'q': + print(next) \ No newline at end of file diff --git a/Homework_4/6Cycle_end.py b/Homework_4/6Cycle_end.py new file mode 100644 index 0000000..b3bead1 --- /dev/null +++ b/Homework_4/6Cycle_end.py @@ -0,0 +1,14 @@ +from itertools import count +from math import factorial + +def cycle_gen(): + for el in count(1): + yield factorial(el) + + +numbers = 0 +for i in cycle_gen(): + print('Factorial from {} is {}'.format(numbers + 1 , i)) + if numbers == 14: + break + numbers = numbers + 1 \ No newline at end of file From c51945b769b979562570dcf8dbd45133daac8d0c Mon Sep 17 00:00:00 2001 From: Karadesh Date: Mon, 25 May 2020 14:38:05 +0300 Subject: [PATCH 2/2] Homework_4 added finaly --- Homework_4/1_Workers_prize.py | 11 +++++++---- Homework_4/2_Numbers_list.py | 18 ++++++++++++++---- Homework_4/3_No_regreats_and_repeats.py | 19 ++++++++++--------- Homework_4/4. Reduce_100-1000.py | 7 +++++-- Homework_4/5Numbers+1.py | 21 ++++++++++++++++----- Homework_4/6Cycle_end.py | 14 ++++++++++---- 6 files changed, 62 insertions(+), 28 deletions(-) diff --git a/Homework_4/1_Workers_prize.py b/Homework_4/1_Workers_prize.py index 8db39d8..a59a833 100644 --- a/Homework_4/1_Workers_prize.py +++ b/Homework_4/1_Workers_prize.py @@ -1,10 +1,13 @@ +#Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. +#В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. +# Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. from sys import argv -script_name, money, hours, prize = argv +script_name, money, hours, prize = argv #Задаем параметры: Имя(по умолчанию), ставка в час, премия -money = int(money) +money = int(money) #Приводим параметры к int hours = int(hours) prize = int(prize) -workers_prize = money * hours + prize +workers_prize = money * hours + prize #Формула для подсчета зарплаты -print(f'Зарплата работника равна: {workers_prize} золотых монет.') \ No newline at end of file +print(f'Зарплата работника равна: {workers_prize} золотых монет.') #Выводим на экран. \ No newline at end of file diff --git a/Homework_4/2_Numbers_list.py b/Homework_4/2_Numbers_list.py index 6e1f3b3..87d8c0c 100644 --- a/Homework_4/2_Numbers_list.py +++ b/Homework_4/2_Numbers_list.py @@ -1,11 +1,21 @@ +#2a. Представлен список чисел. +# Необходимо вывести элементы исходного списка, значения которых больше предыдущего элемента. +#Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. +# Для формирования списка использовать генератор. +#Пример исходного списка: [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]. +#Результат: [12, 44, 4, 10, 78, 123]. import random -my_list = [random.randrange(100) for i in range(10)] +my_list = [random.randrange(100) for i in range(10)] #Заполняем список случайными значениями print(my_list) -second_list =[my_list[i+1] for i in range(len(my_list) - 1) if my_list[i+1] > my_list[i]] +second_list =[my_list[i+1] for i in range(len(my_list) - 1) if my_list[i+1] > my_list[i]] #Заполняем второй список элементами, со значением большим, чем предыдущий -print(second_list) +print(second_list) #Выводим +#2b (В методичке 3) +#Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. +# Необходимо решить задание в одну строку. +#Подсказка: использовать функцию range() и генератор. -third_list = [el_1 for el_1 in range(20,240) if el_1 %20 == 0 or el_1 %21 ==0] +third_list = [el_1 for el_1 in range(20,240) if el_1 %20 == 0 or el_1 %21 ==0] #Смотрим по каждому элементу с 20 до 240: делится ли оно на 20 или 21. print(third_list) diff --git a/Homework_4/3_No_regreats_and_repeats.py b/Homework_4/3_No_regreats_and_repeats.py index a0201fd..b3bf2bd 100644 --- a/Homework_4/3_No_regreats_and_repeats.py +++ b/Homework_4/3_No_regreats_and_repeats.py @@ -1,13 +1,14 @@ +#3. Представлен список чисел. Определить элементы списка, не имеющие повторений. +# Сформировать итоговый массив чисел, соответствующих требованию. +# Элементы вывести в порядке их следования в исходном списке. +# Для выполнения задания обязательно использовать генератор. +#Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. +#Результат: [23, 1, 3, 10, 4, 11] import random -my_list = [random.randrange(100) for i in range(10)] +my_list = [random.randrange(100) for i in range(10)] #Рандомим список -print(my_list) -second_list = [el for el in my_list[:] if my_list.count(el) == 1] +print(my_list) #Выводим на экран для сравнения. +second_list = [el for el in my_list[:] if my_list.count(el) == 1] #Проходим по копии списка. + #Добавляем в список только те элементы, которые вошли в список 1 раз. print(second_list) -#my_list_2 = [2, 5, 5, 10,10] -#for i in my_list_2.index(): -# print(i) -#print(mylist_2) - -#print(second_list) diff --git a/Homework_4/4. Reduce_100-1000.py b/Homework_4/4. Reduce_100-1000.py index ea00185..e7ab885 100644 --- a/Homework_4/4. Reduce_100-1000.py +++ b/Homework_4/4. Reduce_100-1000.py @@ -1,7 +1,10 @@ +#4. Реализовать формирование списка, используя функцию range() и возможности генератора. +# В список должны войти четные числа от 100 до 1000 (включая границы). +# Необходимо получить результат вычисления произведения всех элементов списка. from functools import reduce -elements_of_thousand = [el for el in range(100,1000) if el %2 == 0] -even_numbers = reduce(lambda x , y : x * y, elements_of_thousand) +elements_of_thousand = [el for el in range(100,1000) if el %2 == 0] #Выводим элемент из четных чисел в диапазоне от 100 до 1000 +even_numbers = reduce(lambda x , y : x * y, elements_of_thousand) #Через lambda высчитываем умножение каждого следующего числа print(even_numbers) #print(elements_of_thousand) diff --git a/Homework_4/5Numbers+1.py b/Homework_4/5Numbers+1.py index e1a3be9..8290327 100644 --- a/Homework_4/5Numbers+1.py +++ b/Homework_4/5Numbers+1.py @@ -1,15 +1,26 @@ +#5. Реализовать два небольших скрипта: +#а) итератор, генерирующий целые числа, начиная с указанного, +#б) итератор, повторяющий элементы некоторого списка, определенного заранее. + +#Подсказка: использовать функцию count() и cycle() модуля itertools. +#Обратите внимание, что создаваемый цикл не должен быть бесконечным. +# Необходимо предусмотреть условие его завершения. +#Например, в первом задании выводим целые числа, начиная с 3, а при достижении числа 10 завершаем цикл. +# Во втором также необходимо предусмотреть условие, при котором повторение элементов списка будет прекращено. #1. from itertools import count,cycle -for i in count(int(input('Введите начальное число: '))): +for i in count(int(input('Введите начальное число. Enter для остановки: '))): print(i) - + if i == 10: + break #2. repeat_this_list = [2 , 3 , 5 , 10 , 25 , 156 , 15 , 35 , 2 , 10] end_of_repeat = '' -iter = cycle(my_list) -while end_of_repeat != 'q': - print(next) \ No newline at end of file +iter = cycle(repeat_this_list) #Зацикливаем вывод списка +while end_of_repeat != 'q': #Повторять, пока пользователь не введет 'q' + print(next(iter), end = '') + end_of_repeat = input() \ No newline at end of file diff --git a/Homework_4/6Cycle_end.py b/Homework_4/6Cycle_end.py index b3bead1..0a7929e 100644 --- a/Homework_4/6Cycle_end.py +++ b/Homework_4/6Cycle_end.py @@ -1,14 +1,20 @@ +#6. Реализовать генератор с помощью функции с ключевым словом 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 +from math import factorial #Импортируем factorial, чтобы не считать вручную. -def cycle_gen(): +def cycle_gen(): #Функция-генератор, позволяющая считать факториалы и возвращать их. for el in count(1): yield factorial(el) numbers = 0 for i in cycle_gen(): - print('Factorial from {} is {}'.format(numbers + 1 , i)) + print('Factorial from {} is {}'.format(numbers + 1 , i)) #Отправляем число в функцию, начиная с 1 if numbers == 14: break - numbers = numbers + 1 \ No newline at end of file + numbers = numbers + 1 #В конце прибавляем 1. \ No newline at end of file