diff --git a/Lesson_4/task_1.py b/Lesson_4/task_1.py new file mode 100644 index 0000000..0e9a6f7 --- /dev/null +++ b/Lesson_4/task_1.py @@ -0,0 +1,24 @@ +# Реализовать скрипт, в котором должна быть предусмотрена функция +# расчёта заработной платы сотрудника. Используйте в нём формулу: +# (выработка в часах*ставка в час) + премия. Во время выполнения расчёта +# для конкретных значений необходимо запускать скрипт с параметрами. + +# from sys import argv +# +# file_name, hours, hrate, bonus = argv +# +# salary = (float(hours)*float(hrate))+float(bonus) +# print(f'Employee salary is: {salary}') + + def salary(): + try: + hours = int(input('Please enter hours worked: ')) + hrate = int(input('Please enter hourly rate: ')) + bonus = int(input('Please enter bonus: ')) + result = (hours * hrate) + bonus + print(f'Employee salary is: {result}') + except ValueError: + return print('Error. You must enter a numeric value!') + + + salary() diff --git a/Lesson_4/task_2.py b/Lesson_4/task_2.py new file mode 100644 index 0000000..9561b03 --- /dev/null +++ b/Lesson_4/task_2.py @@ -0,0 +1,9 @@ +# Представлен список чисел. Необходимо вывести элементы исходного списка, значения которых больше предыдущего элемента. +# Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. Для его формирования используйте генератор. +# Пример исходного списка: [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]. +# Результат: [12, 44, 4, 10, 78, 123]. + +my_list = [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55] +new_list = [i for el, i in enumerate(my_list) if my_list[el - 1] < my_list[el]] +print(f'Initial list is: {my_list}') +print(f'New list is: {new_list}') diff --git a/Lesson_4/task_3.py b/Lesson_4/task_3.py new file mode 100644 index 0000000..6c122d9 --- /dev/null +++ b/Lesson_4/task_3.py @@ -0,0 +1,5 @@ +# Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. +# Решите задание в одну строку. Подсказка: используйте функцию range() и генератор. + +print(f'The values that are multiples of 20 or 21: \ +{[i for i in range(20, 241) if i % 20 == 0 or i % 21 == 0]}') diff --git a/Lesson_4/task_4.py b/Lesson_4/task_4.py new file mode 100644 index 0000000..e94c303 --- /dev/null +++ b/Lesson_4/task_4.py @@ -0,0 +1,17 @@ +# Представлен список чисел. Определите элементы списка, не имеющие повторений. +# Сформируйте итоговый массив чисел, соответствующих требованию. +# Элементы выведите в порядке их следования в исходном списке. +# Для выполнения задания обязательно используйте генератор. +# Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]. +# Результат: [23, 1, 3, 10, 4, 11] + +my_list = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11, 35, 25, 25, 77, 78, 78] + +new_list = [i for i in my_list if my_list.count(i) == 1] +print(new_list) + +# result = [] +# for i in my_list: +# if my_list.count(i) == 1: +# result.append(i) +# print(result) \ No newline at end of file diff --git a/Lesson_4/task_5.py b/Lesson_4/task_5.py new file mode 100644 index 0000000..bfb0a94 --- /dev/null +++ b/Lesson_4/task_5.py @@ -0,0 +1,13 @@ +# Реализовать формирование списка, используя функцию range() и возможности генератора. +# В список должны войти чётные числа от 100 до 1000 (включая границы). +# Нужно получить результат вычисления произведения всех элементов списка. +# Подсказка: использовать функцию reduce(). + +from functools import reduce + + +def mfunc(i_prev, i): + return i_prev * i + +print(f'Multiplication result: {reduce(mfunc, [i for i in range (99,1001) if i%2==0])}') + diff --git a/Lesson_4/task_6.py b/Lesson_4/task_6.py new file mode 100644 index 0000000..6dafe84 --- /dev/null +++ b/Lesson_4/task_6.py @@ -0,0 +1,31 @@ +# Реализовать два небольших скрипта: итератор, генерирующий целые числа, начиная с указанного; +# итератор, повторяющий элементы некоторого списка, определённого заранее. +# Подсказка: используйте функцию count() и cycle() модуля itertools. +# Обратите внимание, что создаваемый цикл не должен быть бесконечным. +# Предусмотрите условие его завершения. Например, в первом задании выводим целые числа, начиная с 3. +# При достижении числа 10 — завершаем цикл. Вторым пунктом необходимо предусмотреть условие, +# при котором повторение элементов списка прекратится. + +from itertools import count, cycle + + +def count_func(start_num, stop_num): + for i in count(start_num): + if i > stop_num: + break + else: + print(i) + + +def cycle_func(mlist, output): + i = 0 + output_num = cycle(mlist) + while i < output: + print(next(output_num)) + i += 1 + + +count_func(start_num=int(input('Please enter start value: ')), + stop_num=int(input('Please enter stop value: '))) +cycle_func(mlist=[4, 10, 44, 7, 23, 99, 152, 3.14, 6.022, True, 'ABC', 'abc'], + output=int(input('Please enter the number of parameters to display: '))) diff --git a/Lesson_4/task_7.py b/Lesson_4/task_7.py new file mode 100644 index 0000000..ca690ff --- /dev/null +++ b/Lesson_4/task_7.py @@ -0,0 +1,24 @@ +# Реализовать генератор с помощью функции с ключевым словом 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 + +n = int(input('Please enter the last number to calculate factorial: ')) + + +def fact(): + for el in count(1): + yield factorial(el) + + +gen = fact() +j = 0 +for i in gen: + if j < n: + print(i) + j += 1 + else: + break