X Tutup
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
29 changes: 28 additions & 1 deletion lesson01/home_work/hw01_easy.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Melchuk Andrey'
import random

# Задача-1: Дано произвольное целое число (число заранее неизвестно).
# Вывести поочередно цифры исходного числа (порядок вывода цифр неважен).
Expand All @@ -8,6 +9,15 @@
# * при желании решите задачу с применением цикла for.

# код пишем тут...
print("\ntask 1")
src_value = int(random.random() * 10000)
print("value = ", src_value)

while src_value > 0:
r = int(src_value % 10)
print(r)
src_value = (src_value - r) / 10



# Задача-2: Исходные значения двух переменных запросить у пользователя.
Expand All @@ -17,8 +27,25 @@
# или через арифметические действия
# Не нужно решать задачу так:
# print("a = ", b, "b = ", a) - это неправильное решение!
print("\ntask 2")


a = 4
b = 5

print("a = ", a, ", b = ", b)
a += b
b = a - b
a -= b

print("a = ", a, ", b = ", b)

# Задача-3: Запросите у пользователя его возраст.
# Если ему есть 18 лет, выведите: "Доступ разрешен",
# иначе "Извините, пользование данным ресурсом только с 18 лет"
print("\ntask 3")

if int(input("Enter your age:")) < 18:
print("Извините, пользование данным ресурсом только с 18 лет")
else:
print("Доступ разрешен")
10 changes: 9 additions & 1 deletion lesson01/home_work/hw01_hard.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Melchuk Andrey'

# Задание-1:
# Ваня набрал несколько операций в интерпретаторе и получал результаты:
Expand All @@ -14,3 +14,11 @@
# если точно известно, что её значение не изменялось?

# Подсказка: это значение точно есть ;)

print('hard task 1')

a = float("inf")

print(a == a ** 2)
print(a == a * 2)
print(a > 999999)
56 changes: 54 additions & 2 deletions lesson01/home_work/hw01_normal.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

__author__ = 'Ваши Ф.И.О.'

__author__ = 'Melchuk Andrey'
import random
import math
# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа.
# Например, дается x = 58375.
# Нужно вывести максимальную цифру в данном числе, т.е. 8.
Expand All @@ -9,6 +10,21 @@
# Подсказки:
# * постарайтесь решить задачу с применением арифметики и цикла while;
# * при желании и понимании решите задачу с применением цикла for.
print("\ntask 1")
src_value = int(random.random() * 10000)
print("value = ", src_value)


#src_value = 58375
m = 0
while src_value > 0:
r = int(src_value % 10)
if r > m:
m = r
src_value = (src_value - r) / 10

print("max number used = ", m)



# Задача-2: Исходные значения двух переменных запросить у пользователя.
Expand All @@ -17,6 +33,22 @@
# Подсказки:
# * постарайтесь сделать решение через действия над числами;
# * при желании и понимании воспользуйтесь синтаксисом кортежей Python.
print("\ntask 2")


a = 4
b = 5

print("a = ", a, ", b = ", b)

a ^= b
b ^= a
a ^= b

print("a = ", a, ", b = ", b)

a, b = b, a
print("a = ", a, ", b = ", b)


# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида
Expand All @@ -25,3 +57,23 @@
# Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math:
# import math
# math.sqrt(4) - вычисляет корень числа 4
print("\ntask 3")
a = 2
b = 6
c = 4
#x ??

if a == 0:
print('Error. Division by zero. a = 0.')
quit()


if (b * b - 4 * a * c) >= 0:

x = (-1 * b + math.sqrt(b * b - 4 * a * c)) / (2 * a)
print('x1 = ', x)
x = (-1 * b - math.sqrt(b * b - 4 * a * c)) / (2 * a)
print('x2 = ', x)

else:
print('D is negative.')
35 changes: 35 additions & 0 deletions lesson02/home_work/hw02_easy.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
__author__ = 'Melchuk Andrey'
# Задача-1:
# Дан список фруктов.
# Напишите программу, выводящую фрукты в виде нумерованного списка,
Expand All @@ -13,13 +14,47 @@

# Подсказка: воспользоваться методом .format()

_list = ["яблоко", "банан", "киви", "арбуз"]
for elem in range(4):
print("{0}. {1}".format(elem + 1, _list[elem]))




# Задача-2:
# Даны два произвольные списка.
# Удалите из первого списка элементы, присутствующие во втором списке.
print("\n\ntask2")
l1 = [1, 2, 3]
l2 = [2, 3, 4]

print(l1)
print(l2)

# вариант 1
l3 = list(set(l1) - set(l2))
print('Variant 1: ', l3)

# вариант 2
l4 = list(set(l1).difference(l2))
print('Variant 2: ', l4)



# Задача-3:
# Дан произвольный список из целых чисел.
# Получите НОВЫЙ список из элементов исходного, выполнив следующие условия:
# если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два.
print("\n\ntask3")

my_list = [1, 2, 3, 5, 7]
new_list = []

print(my_list)
for elem in my_list:
if not elem % 2:
new_list.append(elem/4)
else:
new_list.append(elem * 2)
print(new_list)

86 changes: 81 additions & 5 deletions lesson02/home_work/hw02_hard.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,29 @@
__author__ = 'Melchuk Andrey'
import datetime

# Задание-1: уравнение прямой вида y = kx + b задано в виде строки.
# Определить координату y точки с заданной координатой x.

equation = 'y = -12x + 11111140.2121'
x = 2.5
# вычислите и выведите y
print("\n\ntask1")

if equation.find('='):
split_eq = equation.split('=')
print(split_eq)

if split_eq[1].find('x'):
split_x = split_eq[1].split('x')
print(split_x)

k = float(split_x[0].replace(' ', ''))
print("k =", k)
b = float(split_x[1].replace(' ', ''))
print("b =", b)
y = k * x + b

print(y)

# Задание-2: Дата задана в виде строки формата 'dd.mm.yyyy'.
# Проверить, корректно ли введена дата.
Expand All @@ -17,13 +36,38 @@
# (т.е. 2 символа для дня, 2 - для месяца, 4 - для года)

# Пример корректной даты
date = '01.11.1985'
date1 = '01.11.1985'

# Примеры некорректных дат
date = '01.22.1001'
date = '1.12.1001'
date = '-2.10.3001'
date2 = '01.22.1001'
date3 = '1.12.1001'
date4 = '-2.10.3001'

print("\n\ntask2")


def is_date_valid(date_ptr):
split_date = date_ptr.split('.')
print('\ndate =', split_date)

if not (len(split_date[0]) == 2 and len(split_date[1]) == 2 and len(split_date[2]) == 4):
print("Incorrect format.")
else:

day = int(split_date[0])
month = int(split_date[1])
year = int(split_date[2])

if day < 1 or day > 31 or month < 1 or month > 12 or year < 0 or year > 9999:
print("Incorrect date values")
else:
print("Correct date")


is_date_valid(date1)
is_date_valid(date2)
is_date_valid(date3)
is_date_valid(date4)

# Задание-3: "Перевёрнутая башня" (Задача олимпиадного уровня)
#
Expand Down Expand Up @@ -53,4 +97,36 @@
# Выход: 6 2
#
# Вход: 11
# Выход: 5 3
# Выход: 5 3


print("\n\ntask3")


def get_room(dest_room):
print('\nEntrance = ', dest_room)
count = 0
stage = 0
top_floor_of_stage = 0

while (count < dest_room):
stage += 1
count += stage * stage
top_floor_of_stage += stage
# print('counted =', count, 'stage =', stage, 'top_floor =', top_floor_of_stage)

in_stage_count = stage * stage - (count - dest_room)
# print('in_stage_count', in_stage_count)

in_stage_floor = (in_stage_count - 1) // stage + 1
# print('in_stage_floor', in_stage_floor)

dest_floor = stage + in_stage_floor
print('Exit::floor = ', dest_floor)

dest_exit = stage - (in_stage_floor * stage - in_stage_count)
print('Exit::door', dest_exit)


get_room(11)
get_room(13)
49 changes: 49 additions & 0 deletions lesson02/home_work/hw02_normal.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,74 @@

__author__ = 'Melchuk Andrey'

import datetime
import random


# Задача-1:
# Дан список, заполненный произвольными целыми числами, получите новый список,
# элементами которого будут квадратные корни элементов исходного списка,
# но только если результаты извлечения корня не имеют десятичной части и
# если такой корень вообще можно извлечь
# Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2]
print("\n\ntask1")
l1 = [2, -5, 8, 9, -25, 25, 4]
l2 = []

print(l1)
l2 = [int(elem**.5) for elem in l1 if elem >= 0 and (elem ** .5).is_integer()]
print(l2)

# Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013.
# Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года.
# Склонением пренебречь (2000 года, 2010 года)
print("\n\ntask2")

date_time_str = '02.11.2013'
date = datetime.datetime.strptime(date_time_str, '%d.%m.%Y')
print(date)


months = ["", "января", "Февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября",
"ноября", "декабря"]
date01_31 = ["", "первое", "второе", "третье", "четвертое", "пятое", "шетое", "седьмое", "восьмое", "девятое", "десятое",
"одинадцатое", "двенадцатое", "тринадцатое", "четырнадцатое", "пятнадцатое", "шестнадцатое", "семнадцатое",
"восемнадцатое", "девятнадцатое", "двадцатое", "двадцать первое", "двадцать второе", "двадцать третье",
"двадцать четвертое", "двадцать пятое", "двадцать шестое", "двадцать седьмое", "двадцать восьмое",
"двадцать девятое", "тридцатое", "тридцать первое"]

month = date.month
year = date.year
day = date.day

print(date01_31[day], months[month], year, "года")


# Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами
# в диапазоне от -100 до 100. В списке должно быть n - элементов.
# Подсказка:
# для получения случайного числа используйте функцию randint() модуля random
print("\n\ntask3")
random_list = []
n = 20

for i in range(n):
random_list.append( random.randint(-100, 100))

print(random_list)

# Задача-4: Дан список, заполненный произвольными целыми числами.
# Получите новый список, элементами которого будут:
# а) неповторяющиеся элементы исходного списка:
# например, lst = [1, 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 2, 4, 5, 6]
# б) элементы исходного списка, которые не имеют повторений:
# например, lst = [1 , 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 4, 6]
print("\n\ntask4")

lst = [1, 2, 4, 5, 6, 2, 5, 2]
lst2 = list(set(lst))
lst3 = [elem for elem in lst if lst.count(elem) == 1]

print(lst)
print(lst2)
print(lst3)
Loading
X Tutup