mirror of
https://github.com/denis-on/basicsPython.git
synced 2026-02-03 08:00:51 +03:00
dz less04
This commit is contained in:
parent
3e515756ea
commit
a03616f9f7
15
less-04/task-01.py
Normal file
15
less-04/task-01.py
Normal file
@ -0,0 +1,15 @@
|
||||
# Реализовать скрипт, в котором должна быть предусмотрена функция расчёта заработной
|
||||
# платы сотрудника. Используйте в нём формулу: (выработка в часах*ставка в час) + премия.
|
||||
# Во время выполнения расчёта для конкретных значений необходимо запускать скрипт с параметрами.
|
||||
import sys
|
||||
|
||||
def salary(hous, rate, prem):
|
||||
return (hous*rate)+prem
|
||||
|
||||
#if __name__ == '__main__':
|
||||
# print(salary(12,24,100))
|
||||
|
||||
if len(sys.argv)<4:
|
||||
print('добавте агрументы. "выработка в часах" "ставка в час" "премия" task.py 10 2 100')
|
||||
else:
|
||||
print(salary(int(sys.argv[1]),int(sys.argv[2]),int(sys.argv[3])))
|
||||
12
less-04/task-02.py
Normal file
12
less-04/task-02.py
Normal file
@ -0,0 +1,12 @@
|
||||
# Представлен список чисел. Необходимо вывести элементы исходного списка,
|
||||
# значения которых больше предыдущего элемента.
|
||||
def my_func(list):
|
||||
new_list = []
|
||||
for i in range(1, len(list), 1):
|
||||
if list[i]>list[i-1]: new_list.append(list[i])
|
||||
|
||||
return new_list
|
||||
|
||||
temp_list = [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]
|
||||
print(temp_list)
|
||||
print(my_func(temp_list))
|
||||
7
less-04/task-03.py
Normal file
7
less-04/task-03.py
Normal file
@ -0,0 +1,7 @@
|
||||
#Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. Решите задание в одну строку.
|
||||
|
||||
# список генерируемый for
|
||||
print([n for n in range(20,240,1) if not n % 20 or not n % 21])
|
||||
|
||||
# генератор () - распечатываем значения
|
||||
for i in (n for n in range(20,240,1) if not n % 20 or not n % 21) : print(i, end=" ")
|
||||
41
less-04/task-04.py
Normal file
41
less-04/task-04.py
Normal file
@ -0,0 +1,41 @@
|
||||
# Представлен список чисел. Определите элементы списка, не имеющие повторений.
|
||||
# Сформируйте итоговый массив чисел, соответствующих требованию.
|
||||
# Элементы выведите в порядке их следования в исходном списке.
|
||||
# Для выполнения задания обязательно используйте генератор.
|
||||
|
||||
temp_list = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]
|
||||
print(temp_list)
|
||||
|
||||
rep = set()
|
||||
work_list = temp_list.copy()
|
||||
print( [x for x in temp_list if x not in rep and not work_list.remove(x) and x not in work_list or not not rep.add(x)] )
|
||||
|
||||
|
||||
|
||||
|
||||
# позволил себе вариации на тему возможных решений
|
||||
# т.к. по мне записаное выше сложно в понимании (читабельности)
|
||||
|
||||
# вариан решения 1 не эфективный count()
|
||||
print([n for n in temp_list if temp_list.count(n) == 1])
|
||||
|
||||
|
||||
# вариан решения 2
|
||||
|
||||
def my_uni_el(list):
|
||||
uni = set()
|
||||
rep = set()
|
||||
for el in list:
|
||||
if el in rep:
|
||||
continue
|
||||
if el in uni:
|
||||
rep.add(el)
|
||||
uni.discard(el)
|
||||
continue
|
||||
uni.add(el)
|
||||
return uni
|
||||
|
||||
unique = my_uni_el(temp_list) #построим словарь уникальных элементов
|
||||
print([n for n in temp_list if n in unique])
|
||||
|
||||
|
||||
8
less-04/task-05.py
Normal file
8
less-04/task-05.py
Normal file
@ -0,0 +1,8 @@
|
||||
# Реализовать формирование списка, используя функцию range() и возможности генератора.
|
||||
# В список должны войти чётные числа от 100 до 1000 (включая границы).
|
||||
# Нужно получить результат вычисления произведения всех элементов списка.
|
||||
|
||||
from functools import reduce
|
||||
|
||||
|
||||
print( reduce(lambda a,b: a*b, [n for n in range(100,1000+1,2)]) )
|
||||
36
less-04/task-06.py
Normal file
36
less-04/task-06.py
Normal file
@ -0,0 +1,36 @@
|
||||
# Реализовать два небольших скрипта:
|
||||
# итератор, генерирующий целые числа, начиная с указанного;
|
||||
# итератор, повторяющий элементы некоторого списка, определённого заранее.
|
||||
# Подсказка: используйте функцию count() и cycle() модуля itertools.
|
||||
# Обратите внимание, что создаваемый цикл не должен быть бесконечным. Предусмотрите условие его завершения.
|
||||
# Например, в первом задании выводим целые числа, начиная с 3. При достижении числа 10 — завершаем цикл.
|
||||
# Вторым пунктом необходимо предусмотреть условие, при котором повторение элементов списка прекратится.
|
||||
|
||||
from itertools import count, cycle
|
||||
|
||||
|
||||
# итератор, генерирующий целые числа, начиная с указанного;
|
||||
def iter_num(n):
|
||||
for i in count(n):
|
||||
yield i
|
||||
|
||||
# итератор, повторяющий элементы некоторого списка, определённого заранее.
|
||||
def iter_el(list):
|
||||
for el in cycle(list):
|
||||
yield el
|
||||
|
||||
# выводим целые числа, начиная с 3. При достижении числа 10 — завершаем цикл.
|
||||
for i in iter_num(3):
|
||||
if i > 10:
|
||||
break
|
||||
print(i, end=' ')
|
||||
|
||||
print('')
|
||||
#повторение элементов списка
|
||||
count = 10
|
||||
char = 'a' # прикратим цикл если встретим символ 'a' 10 раз
|
||||
for el in iter_el('qwrasqwe'):
|
||||
if count < 0:
|
||||
break
|
||||
print(el, end=' ')
|
||||
if el == char: count -= 1
|
||||
24
less-04/task-07.py
Normal file
24
less-04/task-07.py
Normal file
@ -0,0 +1,24 @@
|
||||
# Реализовать генератор с помощью функции с ключевым словом yield, создающим очередное значение.
|
||||
# При вызове функции должен создаваться объект-генератор. Функция вызывается следующим образом:
|
||||
# for el in fact(n). Она отвечает за получение факториала числа.
|
||||
# В цикле нужно выводить только первые n чисел, начиная с 1! и до n!
|
||||
|
||||
|
||||
def fact_gen():
|
||||
f = 1
|
||||
n = 1
|
||||
while True:
|
||||
n += 1
|
||||
yield f
|
||||
f *= n
|
||||
|
||||
def fact(n):
|
||||
list = []
|
||||
f = fact_gen()
|
||||
for _ in range(n):
|
||||
list.append(next(f))
|
||||
return list
|
||||
|
||||
|
||||
for el in fact(10):
|
||||
print(el)
|
||||
Loading…
x
Reference in New Issue
Block a user