Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions lesson02/task_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# 1. Создать список и заполнить его элементами различных типов данных.
# Реализовать скрипт проверки типа данных каждого элемента. Использовать функцию type() для проверки типа.
# Элементы списка можно не запрашивать у пользователя, а указать явно, в программе.


my_list = [1, 1.2, 'soap', False, [1, 2, 3]]
for types in my_list:
print(type(types))
18 changes: 18 additions & 0 deletions lesson02/task_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# 2. Для списка реализовать обмен значений соседних элементов, т.е.
# Значениями обмениваются элементы с индексами 0 и 1, 2 и 3 и т.д.
# При нечетном количестве элементов последний сохранить на своем месте.
# Для заполнения списка элементов необходимо использовать функцию input().

#a = input('Введите элементы списка: ')
my_list = [1, 2, 3, 4, 5]
#for i in my_list:
#print(my_list[2::-1])
print(my_list[:2:])
#print(my_list.index(5))

#print(my_list.reverse())
#my_list.reverse()
#print(my_list)

# не хватило времени вникнуть в срезы которые меняют порядок - [::-1]

39 changes: 39 additions & 0 deletions lesson02/task_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# 3. Пользователь вводит месяц в виде целого числа от 1 до 12.
# Сообщить к какому времени года относится месяц (зима, весна, лето, осень).
# Напишите решения через list и через dict.

mon = int(input('Введите номер месяца: '))
year = {'зима': (1, 2, 12), 'весна': (3, 4, 5), 'лето': (6, 7, 8), 'осень': (9, 10, 11)}
for key in year.keys():
if mon in year[key]:
print(key)
break

# со словарем легко

month = int(input('Введите номер месяца: '))
#winter = [1, 2, 12]
#spring = [3, 4, 5]
#summer = [6, 7, 8]
#autumm = [9, 10, 11]
#year = ['winter', 'spring', 'summer', 'autumm']
#year = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
#print(year[0])
for season in year:
if month == 1 or 2 or 12:
season = 'winter'
print(season)
break
elif month == 3 or 4 or 5:
season = 'spring'
print(season)
#break
#elif month == 6 or 7 or 8:
#break
#elif month == 9 or 10 or 11:
#season = 'осень'
#print(season)
#break


# со списком, не понял как input прикрепить к списку и через цикл вывести
18 changes: 18 additions & 0 deletions lesson02/task_4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# 4. Пользователь вводит строку из нескольких слов, разделённых пробелами.
# # Вывести каждое слово с новой строки.
# # Строки необходимо пронумеровать.
# # Если в слово длинное, выводить только первые 10 букв в слове.


words = input('Введите несколько слов через пробел: ').split()
#a = [words]
#for a in words:

print(len(words))
#for word in words:
#print(word)
#a = '\n'
#word = '\n'words


# стопнулся на том, как разбить строку на слова
9 changes: 9 additions & 0 deletions lesson02/task_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# 5. Реализовать структуру «Рейтинг», представляющую собой не возрастающий набор натуральных чисел.
# У пользователя необходимо запрашивать новый элемент рейтинга.
# Если в рейтинге существуют элементы с одинаковыми значениями,
# то новый элемент с тем же значением должен разместиться после них.
# Подсказка. Например, набор натуральных чисел: 7, 5, 3, 3, 2.
# Пользователь ввел число 3. Результат: 7, 5, 3, 3, 3, 2.
# Пользователь ввел число 8. Результат: 8, 7, 5, 3, 3, 2.
# Пользователь ввел число 1. Результат: 7, 5, 3, 3, 2, 1.
# Набор натуральных чисел можно задать непосредственно в коде, например, my_list = [7, 5, 3, 3, 2].
21 changes: 21 additions & 0 deletions lesson02/task_6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 6. *Реализовать структуру данных «Товары». Она должна представлять собой список кортежей.
# Каждый кортеж хранит информацию об отдельном товаре.
# В кортеже должно быть два элемента — номер товара и словарь с параметрами
# (характеристиками товара: название, цена, количество, единица измерения).
# Структуру нужно сформировать программно, т.е. запрашивать все данные у пользователя.
# Пример готовой структуры:
# [
# (1, {“название”: “компьютер”, “цена”: 20000, “количество”: 5, “eд”: “шт.”}),
# (2, {“название”: “принтер”, “цена”: 6000, “количество”: 2, “eд”: “шт.”}),
# (3, {“название”: “сканер”, “цена”: 2000, “количество”: 7, “eд”: “шт.”})
# ]
# Необходимо собрать аналитику о товарах. Реализовать словарь,
# в котором каждый ключ — характеристика товара, например название,
# а значение — список значений-характеристик, например список названий товаров.
# Пример:
# {
# “название”: [“компьютер”, “принтер”, “сканер”],
# “цена”: [20000, 6000, 2000],
# “количество”: [5, 2, 7],
# “ед”: [“шт.”]
# }
13 changes: 13 additions & 0 deletions lesson03/task_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# 1. Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление.
# Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль.

def s_div():
try:
first_n = float(input('Введите первое число: '))
sec_n = float(input('Введите второе число: '))
gen_n = first_n / sec_n
except ZeroDivisionError:
print('Деление на ноль')
return
return gen_n
print(s_div())
8 changes: 8 additions & 0 deletions lesson03/task_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# 2. Реализовать функцию, принимающую несколько параметров, описывающих данные пользователя:
# имя, фамилия, год рождения, город проживания, email, телефон.
# Функция должна принимать параметры как именованные аргументы.
# Реализовать вывод данных о пользователе одной строкой.

def g_unit(name, surname, birth, city, email, phone):
print(name, surname, birth, city, email, phone)
g_unit(name='', surname='', birth='', city='', email='', phone='')
8 changes: 8 additions & 0 deletions lesson03/task_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#3. Реализовать функцию my_func(), которая принимает три позиционных аргумента,
# и возвращает сумму наибольших двух аргументов.

def my_func(a, b, c):
num = [a, b, c]
num.remove(min(a, b, c, key=int))
return sum(num)
print(my_func(90, 8, 4))
31 changes: 31 additions & 0 deletions lesson03/task_4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# 4. Программа принимает действительное положительное число x и целое отрицательное число y.
# Необходимо выполнить возведение числа x в степень y. Задание необходимо реализовать в виде функции my_func(x, y).
# При решении задания необходимо обойтись без встроенной функции возведения числа в степень.
# Подсказка: попробуйте решить задачу двумя способами.
# Первый — возведение в степень с помощью оператора **.
# Второй — более сложная реализация без оператора **, предусматривающая использование цикла.


def my_func(x, y):
return x ** abs(y)

print(my_func(3, -3))


#def my_func(x, y):
#for i in range(abs(y-1)):
#b = i * x
#return b




#print(my_func(2, -2))








26 changes: 26 additions & 0 deletions lesson03/task_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 5. Программа запрашивает у пользователя строку чисел, разделенных пробелом.
# # При нажатии Enter должна выводиться сумма чисел.
# Пользователь может продолжить ввод чисел, разделенных пробелом и снова нажать Enter.
# Сумма вновь введенных чисел будет добавляться к уже подсчитанной сумме.
# Но если вместо числа вводится специальный символ, выполнение программы завершается.
# Если специальный символ введен после нескольких чисел,
# то вначале нужно добавить сумму этих чисел к полученной ранее сумме и после этого завершить программу.


line = list(input('Введите числа: '))
num = int(line)
result = sum(line)
print(result)

#list(map(int, "42 0".split()))

#aa = input('введите числа')
#dd = aa.split(" : ")
#print(dd)







7 changes: 7 additions & 0 deletions lesson03/task_6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# 6. Реализовать функцию int_func(), принимающую слово из маленьких латинских букв и возвращающую его же,
# но с прописной первой буквой. Например, print(int_func(‘text’)) -> Text.
# Продолжить работу над заданием.
# В программу должна попадать строка из слов, разделенных пробелом.
# Каждое слово состоит из латинских букв в нижнем регистре.
# Сделать вывод исходной строки, но каждое слово должно начинаться с заглавной буквы.
# Необходимо использовать написанную ранее функцию int_func().
6 changes: 6 additions & 0 deletions lesson04/task_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# 1. Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника.
# В расчете необходимо использовать формулу:
# (выработка в часах * ставка в час) + премия.
# Для выполнения расчета для конкретных значений необходимо запускать скрипт с параметрами.


10 changes: 10 additions & 0 deletions lesson04/task_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 2. Представлен список чисел.
# Необходимо вывести элементы исходного списка, значения которых больше предыдущего элемента.
#Подсказка: элементы, удовлетворяющие условию, оформить в виде списка.
# Для формирования списка использовать генератор.


a = [0, 1, 2, 4, 5, 6, 5]
b = [el for el in a if el > el - 1]
print(b)

5 changes: 5 additions & 0 deletions lesson04/task_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# 3. Для чисел в пределах от 20 до 240 найти числа, кратные 20 или 21. Необходимо решить задание в одну строку.
# Подсказка: использовать функцию range() и генератор.

my_list = [el for el in range(20, 240) if el % 20 == 0 or el % 21 == 0]
print(my_list)
10 changes: 10 additions & 0 deletions lesson04/task_4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 4. Представлен список чисел.
# Определить элементы списка, не имеющие повторений.
# Сформировать итоговый массив чисел, соответствующих требованию.
# Элементы вывести в порядке их следования в исходном списке.
# Для выполнения задания обязательно использовать генератор.


my_list = [1, 5, 3, 3, 4, 4, 7, 2, 9]
new_list = [el for el in set(my_list)]
print(new_list)
10 changes: 10 additions & 0 deletions lesson04/task_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 5. Реализовать формирование списка, используя функцию range() и возможности генератора.
# В список должны войти четные числа от 100 до 1000 (включая границы).
# Необходимо получить результат вычисления произведения всех элементов списка.
# Подсказка: использовать функцию reduce().

from functools import reduce

my_list = [el for el in range(100, 1001) if el % 2 == 0]
new_list = reduce(lambda x, y: x * y, my_list)
print(new_list)
28 changes: 28 additions & 0 deletions lesson04/task_6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 6. Реализовать два небольших скрипта:начиная с указанного,
# а) бесконечный итератор, генерирующий целые числа,
# б) бесконечный итератор, повторяющий элементы некоторого списка, определенного заранее.
# Подсказка: использовать функцию count() и cycle() модуля itertools.


from itertools import count, cycle

for z in count(-100): # 1
print(z)
if z > 99:
break


phone = ['xiaomi', 'iphone', 'samsumg', 'Huawei', 'Sony'] # 2
iter = cycle(phone)
print(next(iter))
print(next(iter))
print(next(iter))
print(next(iter))
print(next(iter))







27 changes: 27 additions & 0 deletions lesson04/task_7.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 7. Реализовать генератор с помощью функции с ключевым словом yield, создающим очередное значение.
# При вызове функции должен создаваться объект-генератор.
# Функция должна вызываться следующим образом: for el in fibo_gen().
# Функция отвечает за получение факториала числа, а в цикле необходимо выводить только первые 15 чисел.
# Подсказка: факториал числа n — произведение чисел от 1 до n. Например, факториал четырёх 4! = 1 * 2 * 3 * 4 = 24.



def fibo_gen(n):
fac = 1
for el in range(1, n + 1):
fac *= el
yield fac

factorial = input(input('factorial yuo would like to know? '))
for i in fibo_gen(n):
print(i)










9 changes: 9 additions & 0 deletions lesson05/task_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# 1. Создать программно файл в текстовом формате, записать в него построчно данные,
# вводимые пользователем.
# Об окончании ввода данных свидетельствует пустая строка.

with open('my_file.txt', 'w') as f:
while True:
line = input('Введите строку: ')
break
f.write(line + '\n')
8 changes: 8 additions & 0 deletions lesson05/task_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# 2. Создать текстовый файл (не программно), сохранить в нем несколько строк,
# выполнить подсчет количества строк, количества слов в каждой строке.

with open('test.txt') as f:
lines = f.readlines()
print('Колличество строк:', len(lines))
for num_line, line in enumerate(lines, start=1):
print('{} строка содержит ‚ - {} слов'.format(num_line, len(line.split())))
15 changes: 15 additions & 0 deletions lesson05/task_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# 3. Создать текстовый файл (не программно), построчно записать фамилии сотрудников и величину их окладов.
# Определить, кто из сотрудников имеет оклад менее 20 тыс., вывести фамилии этих сотрудников.
# Выполнить подсчет средней величины дохода сотрудников.



with open('salaries.txt') as f:
salaries = []
lines = f.readlines()
for line in lines:
name, salary = line.split(' - ')
salaries.append(int(salary))
if int(salary) < 20000:
print(line, end='')
print('\nСредняя зарплата:', sum(salaries) / len(salaries))
24 changes: 24 additions & 0 deletions lesson05/task_4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 4. Создать (не программно) текстовый файл со следующим содержимым:
# One — 1
# Two — 2
# Three — 3
# Four — 4
# Необходимо написать программу, открывающую файл на чтение и считывающую построчно данные.
# При этом английские числительные должны заменяться на русские.
# Новый блок строк должен записываться в новый текстовый файл.


with open('eng.txt') as f:
lines = f.readlines()

with open('rus.txt', 'w') as f:
for line in lines:
if '1' in line:
line = line.replace('One', 'Один')
elif '2' in line:
line = line.replace('Two', 'Два')
elif '3' in line:
line = line.replace('Three', 'Три')
elif '4' in line:
line = line.replace('Four', 'Четыре')
f.write(line)
Loading