diff --git a/Homework_4/1_Workers_prize.py b/Homework_4/1_Workers_prize.py new file mode 100644 index 0000000..a59a833 --- /dev/null +++ b/Homework_4/1_Workers_prize.py @@ -0,0 +1,13 @@ +#Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. +#В расчете необходимо использовать формулу: (выработка в часах * ставка в час) + премия. +# Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами. +from sys import argv + +script_name, money, hours, prize = argv #Задаем параметры: Имя(по умолчанию), ставка в час, премия + +money = int(money) #Приводим параметры к int +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..87d8c0c --- /dev/null +++ b/Homework_4/2_Numbers_list.py @@ -0,0 +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)] #Заполняем список случайными значениями +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) #Выводим + +#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] #Смотрим по каждому элементу с 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 new file mode 100644 index 0000000..b3bf2bd --- /dev/null +++ b/Homework_4/3_No_regreats_and_repeats.py @@ -0,0 +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)] #Рандомим список + +print(my_list) #Выводим на экран для сравнения. +second_list = [el for el in my_list[:] if my_list.count(el) == 1] #Проходим по копии списка. + #Добавляем в список только те элементы, которые вошли в список 1 раз. +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..e7ab885 --- /dev/null +++ b/Homework_4/4. Reduce_100-1000.py @@ -0,0 +1,11 @@ +#4. Реализовать формирование списка, используя функцию range() и возможности генератора. +# В список должны войти четные числа от 100 до 1000 (включая границы). +# Необходимо получить результат вычисления произведения всех элементов списка. +from functools import reduce + +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) + +#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..8290327 --- /dev/null +++ b/Homework_4/5Numbers+1.py @@ -0,0 +1,26 @@ +#5. Реализовать два небольших скрипта: +#а) итератор, генерирующий целые числа, начиная с указанного, +#б) итератор, повторяющий элементы некоторого списка, определенного заранее. + +#Подсказка: использовать функцию count() и cycle() модуля itertools. +#Обратите внимание, что создаваемый цикл не должен быть бесконечным. +# Необходимо предусмотреть условие его завершения. +#Например, в первом задании выводим целые числа, начиная с 3, а при достижении числа 10 завершаем цикл. +# Во втором также необходимо предусмотреть условие, при котором повторение элементов списка будет прекращено. +#1. + +from itertools import count,cycle + +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(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 new file mode 100644 index 0000000..0a7929e --- /dev/null +++ b/Homework_4/6Cycle_end.py @@ -0,0 +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 #Импортируем 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)) #Отправляем число в функцию, начиная с 1 + if numbers == 14: + break + numbers = numbers + 1 #В конце прибавляем 1. \ No newline at end of file