Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 12 additions & 0 deletions lesson1/1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

# Поработайте с переменными, создайте несколько, выведите на экран,
# запросите у пользователя несколько чисел и строк и сохраните в переменные, выведите на экран.
my_var1 = "String"
my_var2 = 12345
print(my_var1)
print(my_var2)
my_var3 = int(input("Введите число: "))
print(my_var3)

my_var4 = input("Введите строку: ") # input() всегда возвращает строку.
print(my_var4)
8 changes: 8 additions & 0 deletions lesson1/2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Пользователь вводит время в секундах.
# Переведите время в часы, минуты и секунды и выведите в формате чч:мм:сс.
# Используйте форматирование строк.

import datetime

seconds = int(input("Введите количество секунд "))
print(print("Время в формате чч:мм:сс , %s!" % str(datetime.timedelta(seconds=seconds))))
14 changes: 14 additions & 0 deletions lesson1/3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Узнайте у пользователя число n. Найдите сумму чисел n + nn + nnn.
# Например, пользователь ввёл число 3. Считаем 3 + 33 + 333 = 369.

user_number = int(input("ВВедите положительное целое число: "))
number = 1
total = 0
n = ""
while number <= user_number:
n = n + str(user_number)
total = int(n)+total
print(n)
number = number+1

print(total)
15 changes: 15 additions & 0 deletions lesson1/4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Пользователь вводит целое положительное число.
# Найдите самую большую цифру в числе. Для решения используйте цикл while и арифметические операции.


user_number = input("ВВедите положительное целое число: ")

number = 0
max = 0
while number < len(user_number):

if max < int(user_number[number]):
max = int(user_number[number])

number +=1
print("max number: %s" % str(max))
16 changes: 16 additions & 0 deletions lesson1/5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Запросите у пользователя значения выручки и издержек фирмы. Определите, с каким финансовым результатом работает
# фирма (прибыль — выручка больше издержек, или убыток — издержки больше выручки). Выведите соответствующее
# сообщение. Если фирма отработала с прибылью, вычислите рентабельность выручки (соотношение прибыли к выручке).
# Далее запросите численность сотрудников фирмы и определите прибыль фирмы в расчете на одного сотрудника.


proceeds = float(input("Введите сумму выручки: "))
costs = float(input("Введите сумму издержек: "))
if costs < proceeds:
print("Имеется прибыль")
var = ((proceeds - costs)/proceeds) * 100 # in %
print("рентабельность выручки %s " % var)
user_counts = int(input("Количество сотрудников: "))
print("прибыль фирмы в расчете на одного сотрудника: %s" % ((proceeds - costs)/user_counts) )
else:
print("Убыток")
19 changes: 19 additions & 0 deletions lesson1/6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Спортсмен занимается ежедневными пробежками. В первый день его результат составил a километров. Каждый день
# спортсмен увеличивал результат на 10 % относительно предыдущего. Требуется определить номер дня, на который
# результат спортсмена составит не менее b километров. Программа должна принимать значения параметров a и b и
# выводить одно натуральное число — номер дня.

a = int(input("результат за первый день: "))
b = int(input("результат n-го дня: "))
days = 1
result = float(a)
while True:
days += 1
result = result + (result * 0.1)
print("%.2f" % result)
if result <= b:

continue
else:
print("на %s день спортсмен достиг результата — не менее %s км." % (days, b))
break
7 changes: 7 additions & 0 deletions lesson2/1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Task 1 Создать список и заполнить его элементами различных типов данных. Реализовать скрипт проверки типа данных
# каждого элемента. Использовать функцию type() для проверки типа. Элементы списка можно не запрашивать у
# пользователя, а указать явно, в программе.

my_list = ['string', True, 2344, 234.344, ['1', 2], {'key': 'value'}, ([], {})]
for item in my_list:
print(type(item))
26 changes: 26 additions & 0 deletions lesson2/2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Task 2
# Для списка реализовать обмен значений соседних элементов, т.е. Значениями обмениваются элементы с индексами
# 0 и 1, 2 и 3 и т.д. При нечетном количестве элементов последний сохранить на своем месте. Для заполнения списка
# элементов необходимо использовать функцию input().

my_list = []
cl = int(input("Введите количество элементов списка: "))
number = 0
while number < cl:
my_list.append(input("Введите значение списка № %s: " % (number+1)))

number += 1

number = 0
l = len(my_list)
if len(my_list) % 2 > 0:
l = (len(my_list)) - 1

while number < l:
a = my_list[number+1]
my_list[number+1] = my_list[number]
my_list[number] = a
number += 2


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

my_list = {1: "Зима", 2: "Зима", 3: "весна", 4: "весна", 5: "весна", 6: "лето", 7: "лето", 8: "лето", 9: "осень", 10: "осень", 11: "осень", 12: "Зима"}
print("Сейчас %s " % my_list.get(int(input("Введите месяц в виде целого числа от 1 до 12: "))))
13 changes: 13 additions & 0 deletions lesson2/4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# task 4
# Пользователь вводит строку из нескольких слов, разделённых пробелами. Вывести каждое слово с новой строки.
# Строки необходимо пронумеровать. Если в слово длинное, выводить только первые 10 букв в слове.

my_string = input("Введите строку из нескольких слов, разделённых пробелами: ")

number = 1
for word in my_string.split(" "):
if len(word) >10:
print("№%s %s" % (number, word[:10]))
else:
print("№%s %s" % (number, word))
number += 1
30 changes: 30 additions & 0 deletions lesson2/5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Task 4
# Реализовать структуру «Рейтинг», представляющую собой не возрастающий набор натуральных чисел. У
# пользователя необходимо запрашивать новый элемент рейтинга. Если в рейтинге существуют элементы с одинаковыми
# значениями, то новый элемент с тем же значением должен разместиться после них. Подсказка. Например,
# набор натуральных чисел: 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].

my_list = [7, 5, 3, 3, 2]
item = int(input("Введите число: "))
ind = -1
if item in my_list:
ind = my_list.index(item)

if ind > 0:
my_list.insert(ind+1, item)

if ind == -1:

number = 0
while True:
if my_list[len(my_list)-1] > item:
my_list.append(item)
break
if my_list[number] < item:
my_list.insert(number, item)
break

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

num_product = int(input("Enter number products: "))
number = 0
products = []
while number < num_product:
print("Товар №%s" % (number+1))
product_name = input("Введите название товара: ")
product_cost = int(input("Введите цену товара: "))
product_count = int(input("Введите количество товара: "))
product_ed = input("Введите eд: ")
print("Добавлен.")
print("Название: %s, Цена: %s, Количество: %s, Ед: %s" % (product_name, product_cost, product_count, product_ed))

products.append((number, {'название': product_name, 'цена': product_cost, 'количество': product_count, 'ед': product_ed}))
number += 1

print(products)
stat = {"название": [], "цена": [], "количество": [], "ед": []}
for product in products:
stat["название"].append(product[1].get('название'))
stat["цена"].append(product[1].get('цена'))
stat["количество"].append(product[1].get('количество'))
stat["ед"].append(product[1].get('ед'))
print(stat)

11 changes: 11 additions & 0 deletions lesson3/1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Task 1
# Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. Числа
# запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль.
def my_f(dividend, divisor):
if divisor == 0:
return "На ноль делить нельзя!"
else:
return dividend / divisor


print(my_f(float(input("Введите число (Делимое): ")), float(input("Введите число (делитель): "))))
8 changes: 8 additions & 0 deletions lesson3/2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Task 2 Реализовать функцию, принимающую несколько параметров, описывающих данные пользователя: имя, фамилия,
# год рождения, город проживания, email, телефон. Функция должна принимать параметры как именованные аргументы.
# Реализовать вывод данных о пользователе одной строкой.

def my_f(name, surname, birthday, city, email, phone):
print("Фио: %s %s, Дата рождения: %s, Город: %s , email: %s, Телефон: %s" % (name, surname, birthday, city, email, phone))

my_f("Ivan", "Ivanov", "01.03.2001", "London", "Ivan28@gmail.com" , "+87 345 544 5544")
12 changes: 12 additions & 0 deletions lesson3/3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Task 3
# Реализовать функцию my_func(), которая принимает три позиционных аргумента, и возвращает сумму наибольших
# двух аргументов.


def my_func(arg1, arg2, arg3):
numbers = [arg1, arg2, arg3]
numbers.sort()
return numbers[1] + numbers[2]


print(my_func(12.43, 56.4, 32))
22 changes: 22 additions & 0 deletions lesson3/4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Task 4
# Программа принимает действительное положительное число x и целое отрицательное число y. Необходимо выполнить
# возведение числа x в степень y. Задание необходимо реализовать в виде функции my_func(x, y). При решении задания
# необходимо обойтись без встроенной функции возведения числа в степень. Подсказка: попробуйте решить задачу двумя
# способами. Первый — возведение в степень с помощью оператора **. Второй — более сложная реализация без оператора
# **, предусматривающая использование цикла.

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


print(my_func(4, -3))

def my_func2(x, y):
n = x
for i in range((y * (-1)) -1):
n *= x

return (1/n)

print(my_func2(4, -3))

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



s = 0
while True:
nums = list(input("Выход - Q, \nВведите числа через пробел: ").upper().split(" "))
if "Q" in nums:
nums.pop(nums.index("Q"))
s = s + sum([float(i) for i in nums])
print("Сумма %s" % s)
break
else:
s = s + sum([float(i) for i in nums ])
print("Сумма %s" % s)


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

def int_func(text):
return text.title()
print(int_func("text"))

str = "но каждое слово должно начинаться с заглавной буквы"
print(" ".join(list(map(int_func, list(str.split())))))
29 changes: 29 additions & 0 deletions lesson4/1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import argparse
# Task 1
# Реализовать скрипт, в котором должна быть предусмотрена функция расчета заработной платы сотрудника. В расчете
# необходимо использовать формулу: (выработка в часах*ставка в час) + премия. Для выполнения расчета для конкретных
# значений необходимо запускать скрипт с параметрами.


def my_func(hours, rate, premium):
return (hours * rate) + premium


parser = argparse.ArgumentParser(description='Script')
parser.add_argument('-v', action="store", dest="hours", default=0, type=int, help='выработка в часах')
parser.add_argument('-r', action="store", dest="rate", default=0, type=int, help='ставка в час')
parser.add_argument('-p', action="store", dest="premium", default=0, type=int, help='премия')
args = parser.parse_args()

if __name__ == '__main__':
print(f'Salary: {my_func(args.hours, args.rate, args.premium)}')



#usage: 1.py [-h] [-v HOURS] [-r RATE] [-p PREMIUM]
#Script
#optional arguments:
# -h, --help show this help message and exit
# -v HOURS выработка в часах
# -r RATE ставка в час
# -p PREMIUM премия
11 changes: 11 additions & 0 deletions lesson4/2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Task 2
# Представлен список чисел. Необходимо вывести элементы исходного списка, значения которых больше предыдущего элемента.
# Подсказка: элементы, удовлетворяющие условию, оформить в виде списка. Для формирования списка использовать генератор.
# Пример исходного списка: [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]
print([i for i in my_list if my_list.index(i) != 0 and i > my_list[my_list.index(i) - 1]])



Loading