diff --git a/task_1_lesson4.py b/task_1_lesson4.py new file mode 100644 index 0000000..4220b43 --- /dev/null +++ b/task_1_lesson4.py @@ -0,0 +1,21 @@ +# Задание №1 +# Реализовать скрипт, в котором должна быть предусмотрена функция расчёта заработной +# платы сотрудника. Используйте в нём формулу: (выработка в часах*ставка в час) + премия. Во +# время выполнения расчёта для конкретных значений необходимо запускать скрипт с +# параметрами. + +from sys import argv +task_1_lesson4, number_hours, rate_hour, bonus = argv +''' Определение параметров + +task_1_lesson4 - имя скрипта +number_hours - Количество отработанных часов +rate_hour - Ставка в час +bonus - Сумма премии + +''' +print(f'Количество отработанных часов: {number_hours}') +print(f'Ставка в час: {rate_hour}') +print(f'Сумма премии: {bonus}') +salary = round((float(number_hours) * float(rate_hour) + float(bonus)), 2) +print(f'Заработная плата сотрудника: {salary} руб.') diff --git a/task_2_lesson4.py b/task_2_lesson4.py new file mode 100644 index 0000000..b3b1ad3 --- /dev/null +++ b/task_2_lesson4.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]. + +list_data = [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55] +new_list = [el for i, el in enumerate(list_data) if i > 0 and list_data[i] > list_data[i-1]] +print(f'Исходный список: {list_data}') +print(f'Результат: {new_list}') diff --git a/task_3_lesson4.py b/task_3_lesson4.py new file mode 100644 index 0000000..47d8a13 --- /dev/null +++ b/task_3_lesson4.py @@ -0,0 +1,9 @@ +# Задание №3 +# Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. Решите задание в одну +# строку. +# Подсказка: используйте функцию range() и генератор. + +numbers_list = [number for number in range(20, 241, 20)] +numbers_list_1 = [number for number in range(21, 241, 21)] +print(f'Список чисел кратных 20 в диапазоне от 20 до 240 включительно: {numbers_list}') +print(f'Список чисел кратных 21 в диапазоне от 20 до 240 включительно: {numbers_list_1}') diff --git a/task_4_lesson4.py b/task_4_lesson4.py new file mode 100644 index 0000000..1e80a3e --- /dev/null +++ b/task_4_lesson4.py @@ -0,0 +1,12 @@ +# Задание №4 +# Представлен список чисел. Определите элементы списка, не имеющие повторений. +# Сформируйте итоговый массив чисел, соответствующих требованию. Элементы выведите в +# порядке их следования в исходном списке. Для выполнения задания обязательно используйте +# генератор. +# Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. +# Результат: [23, 1, 3, 10, 4, 11] + +list_data = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11] +new_list = [el for el in list_data if list_data.count(el) == 1] +print(f'Исходный список: {list_data}') +print(f'Результат: {new_list}') diff --git a/task_5_lesson4.py b/task_5_lesson4.py new file mode 100644 index 0000000..00e2993 --- /dev/null +++ b/task_5_lesson4.py @@ -0,0 +1,13 @@ +# Задание №5 +# Реализовать формирование списка, используя функцию range() и возможности генератора. В +# список должны войти чётные числа от 100 до 1000 (включая границы). Нужно получить +# результат вычисления произведения всех элементов списка. +# Подсказка: использовать функцию reduce(). + +from functools import reduce + +my_list = [number for number in range(100, 1001) if number % 2 == 0] +result = reduce(lambda a, b: a * b, my_list) + +print(f'Сформирован список: \n{my_list}') +print(f'Результат вычисления произведения всех элементов списка: \n{result}') diff --git a/task_6_1_lesson4.py b/task_6_1_lesson4.py new file mode 100644 index 0000000..861cf2a --- /dev/null +++ b/task_6_1_lesson4.py @@ -0,0 +1,27 @@ +# Задание №6 часть 2 +# Реализовать два небольших скрипта: +# итератор, генерирующий целые числа, начиная с указанного; +# итератор, повторяющий элементы некоторого списка, определённого заранее. +# Подсказка: используйте функцию count() и cycle() модуля itertools. Обратите внимание, что +# создаваемый цикл не должен быть бесконечным. Предусмотрите условие его завершения. +# Например, в первом задании выводим целые числа, начиная с 3. При достижении числа 10 — +# завершаем цикл. Вторым пунктом необходимо предусмотреть условие, при котором +# повторение элементов списка прекратится. + +from sys import argv +from itertools import cycle +task_6_1_lesson4, number_rep = argv +''' Определение параметров + +task_6_lesson4 - имя скрипта +number_rep - число повторений элементов списка + +''' +a = 1 +my_list = ['Hello', 'World'] +for el in cycle(my_list): + if a > int(number_rep): + break + else: + print(el) + a += 1 diff --git a/task_6_lesson4.py b/task_6_lesson4.py new file mode 100644 index 0000000..6788db4 --- /dev/null +++ b/task_6_lesson4.py @@ -0,0 +1,24 @@ +# Задание №6 часть 1 +# Реализовать два небольших скрипта: +# итератор, генерирующий целые числа, начиная с указанного; +# итератор, повторяющий элементы некоторого списка, определённого заранее. +# Подсказка: используйте функцию count() и cycle() модуля itertools. Обратите внимание, что +# создаваемый цикл не должен быть бесконечным. Предусмотрите условие его завершения. +# Например, в первом задании выводим целые числа, начиная с 3. При достижении числа 10 — +# завершаем цикл. Вторым пунктом необходимо предусмотреть условие, при котором +# повторение элементов списка прекратится. + +from sys import argv +from itertools import count +task_6_lesson4, start_number = argv +''' Определение параметров + +task_6_lesson4 - имя скрипта +start_number - число с которого начинать формировать список + +''' +for el in count(int(start_number)): + if el > 10: + break + else: + print(el) diff --git a/task_7_lesson4.py b/task_7_lesson4.py new file mode 100644 index 0000000..0aa7221 --- /dev/null +++ b/task_7_lesson4.py @@ -0,0 +1,18 @@ +# Задание №7 +# Реализовать генератор с помощью функции с ключевым словом yield, создающим очередное +# значение. При вызове функции должен создаваться объект-генератор. Функция вызывается +# следующим образом: for el in fact(n). Она отвечает за получение факториала числа. В цикле +# нужно выводить только первые n чисел, начиная с 1! и до n!. +# Подсказка: факториал числа n — произведение чисел от 1 до n. Например, факториал +# четырёх 4! = 1 * 2 * 3 * 4 = 24. + +def fact(n): + temp = 1 + for i in range(1, n+1): + temp *= i + yield temp + + +n = int(input('Введите число, факториал которого Вы хотите узнать: ')) +for i in fact(n): + print(i)