Skip to content
24 changes: 24 additions & 0 deletions Lesson_4/task_1.py
Original file line number Diff line number Diff line change
@@ -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()
9 changes: 9 additions & 0 deletions Lesson_4/task_2.py
Original file line number Diff line number Diff line change
@@ -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}')
5 changes: 5 additions & 0 deletions Lesson_4/task_3.py
Original file line number Diff line number Diff line change
@@ -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]}')
17 changes: 17 additions & 0 deletions Lesson_4/task_4.py
Original file line number Diff line number Diff line change
@@ -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)
13 changes: 13 additions & 0 deletions Lesson_4/task_5.py
Original file line number Diff line number Diff line change
@@ -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])}')

31 changes: 31 additions & 0 deletions Lesson_4/task_6.py
Original file line number Diff line number Diff line change
@@ -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: ')))
24 changes: 24 additions & 0 deletions Lesson_4/task_7.py
Original file line number Diff line number Diff line change
@@ -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