Skip to content
Open
32 changes: 30 additions & 2 deletions lesson01/home_work/hw01_easy.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Тошматов Д. Д.'

# Задача-1: Дано произвольное целое число (число заранее неизвестно).
# Вывести поочередно цифры исходного числа (порядок вывода цифр неважен).
# Подсказки:
# * постарайтесь решить задачу с применением арифметики и цикла while;
# * при желании решите задачу с применением цикла for.

# код пишем тут...
x = list(input("Введите число: "))

i = 0
while i < len(x):
print(x[i])
i += 1

print("А теперь второй способ:")

for i in x:
print(i)

# Задача-2: Исходные значения двух переменных запросить у пользователя.
# Поменять значения переменных местами. Вывести новые значения на экран.
Expand All @@ -18,7 +27,26 @@
# Не нужно решать задачу так:
# print("a = ", b, "b = ", a) - это неправильное решение!

a = input("Введите первую переменную: ")
b = input("Введите вторую переменную: ")

c = a

a = b
b = c

print("Новые значения: первая переменная =", a, ", вторая переменная =", b)

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

age = int(input('Введите ваш возраст: '))
minAge = 18

if age >= minAge:
print('Доступ разрешен')
else:
print('Извините, пользование данным ресурсом только с 18 лет')

input()
5 changes: 4 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__ = 'Тошматов Д. Д.'

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

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


# Как делается не понял
48 changes: 47 additions & 1 deletion lesson01/home_work/hw01_normal.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

__author__ = 'Ваши Ф.И.О.'
__author__ = 'Тошматов Д. Д.'

# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа.
# Например, дается x = 58375.
Expand All @@ -10,7 +10,28 @@
# * постарайтесь решить задачу с применением арифметики и цикла while;
# * при желании и понимании решите задачу с применением цикла for.

x = list(input("Введите число: "))

i = 0
maxNum = 0

while i < len(x):
elemX = int(x[i])
if elemX >= maxNum:
maxNum = elemX
i += 1
else:
i += 1

print(maxNum)

print("А теперь второй способ:")

for i in x:
if int(i) >= int(maxNum):
maxNum = i

print(maxNum)
# Задача-2: Исходные значения двух переменных запросить у пользователя.
# Поменять значения переменных местами. Вывести новые значения на экран.
# Решите задачу, используя только две переменные.
Expand All @@ -19,9 +40,34 @@
# * при желании и понимании воспользуйтесь синтаксисом кортежей Python.


x = input("Введите первую переменную: ")
y = input("Введите вторую переменную: ")

kort = (x, y)
invert = (y, x)
print (invert)

# Задача-3: Напишите программу, вычисляющую корни квадратного уравнения вида
# ax² + bx + c = 0.
# Коэффициенты уравнения вводятся пользователем.
# Для вычисления квадратного корня воспользуйтесь функцией sqrt() модуля math:
# import math
# math.sqrt(4) - вычисляет корень числа 4

import math

a = int(input('Введите первый коэффициент a: '))
b = int(input('Введите второй коэффициент b: '))
c = int(input('Введите свободный член с: '))

D = (b ** 2) - 4 * (a * c)

if D != 0:
xFirst = (-b + math.sqrt(D)) / (2 * a)
xSec = (-b - math.sqrt(D)) / (2 * a)

print('Первый корень равен', xFirst, ', второй корень равен', xSec)
else:
print("D < 0, корней нет")

input()
17 changes: 13 additions & 4 deletions lesson03/home_work/hw03_easy.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
# Для решения задачи не используйте встроенные функции и функции из модуля math.

def my_round(number, ndigits):
pass
mid_res = number*(10**ndigits)
perc = mid_res%1
if perc > 0.5:
mid_res += 1

return int(mid_res)/(10**ndigits)

print(my_round(2.1234567, 5))
print(my_round(2.1999967, 5))
Expand All @@ -20,9 +24,14 @@ def my_round(number, ndigits):
# !!!P.S.: функция не должна НИЧЕГО print'ить

def lucky_ticket(ticket_number):
pass

ticket_num = str(ticket_number)
first_part = sum(map(int, ticket_num[:3]))
sec_part = sum(map(int, ticket_num[3:]))
if first_part == sec_part:
return "Lucky ticket!"
else:
return "Unlucky ticket:("

print(lucky_ticket(123006))
print(lucky_ticket(12321))
print(lucky_ticket(436751))
print(lucky_ticket(436751))
83 changes: 83 additions & 0 deletions lesson03/home_work/hw03_hard.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,85 @@
# Ввод: -2/3 - -2
# Вывод: 1 1/3

a = input('Введите дроби. Дроби вводятся в формате:\n'
'n x/y ,где n - целая часть, x - числитель, у - знаменатель.\n'
'Дроби могут быть отрицательные и не иметь целой части, или иметь только целую часть.')

# Примеры:
# Ввод: 5/6 + 4/7 (всё выражение вводится целиком в виде строки)
# Вывод: 1 17/42 (результат обязательно упростить и выделить целую часть)
# Ввод: -2/3 - -2
# Вывод: 1 1/3
plus = 1
if '+' in a:
start = a.split('+')
else:
start = a.split('-')
plus = 0

# first part
part_one = start[0].split()
n_first = int()

# searching for n
if '/' in part_one[0]:
n_first = 0
else:
n_first = int(part_one[0])
part_one.pop(0)


if len(part_one) != 0:
x_first, y_first = part_one[0].split('/')
x_first = int(x_first)
y_first = int(y_first)
else:
x_first, y_first = 0, 0
#
# second part!!
part_two = start[1].split()
n_sec = int()

# searching for n
if '/' in part_two[0]:
n_sec = 0
else:
n_sec = int(part_two[0])
part_two.pop(0)

if n_sec < 0 and plus == 1:
n_sec = n_sec * (-1)
plus = 0
elif n_sec < 0 and plus == 0:
n_sec = n_sec * (-1)
plus = 1


if len(part_two) != 0:
x_sec, y_sec = part_two[0].split('/')
x_sec = int(x_sec)
y_sec = int(y_sec)
if x_sec < 0 and plus == 1:
x_sec = x_sec * (-1)
plus = 0
elif x_sec < 0 and plus == 0:
x_sec = x_sec * (-1)
plus = 1
else:
x_sec, y_sec = 0, 0

# the MATH
n_res = n_first + n_sec
y_res = y_first * y_sec
x_res = (x_first * y_sec) + (x_sec * y_first)

if x_res > y_res:
n_res += x_res//y_res
x_res = x_res % y_res



Как считать, если первая дробь отрицательная - не понял, думал долго, сдаюсь.

# Задание-2:
# Дана ведомость расчета заработной платы (файл "data/workers").
Expand All @@ -18,6 +97,8 @@
# они получают удвоенную ЗП, пропорциональную норме.
# Кол-во часов, которые были отработаны, указаны в файле "data/hours_of"

Логику задания понял.
Не ясно, нужно ли информацию вытаскивать из файла с помощью программы или вручную.

# Задание-3:
# Дан файл ("data/fruits") со списком фруктов.
Expand All @@ -31,3 +112,5 @@
# Подсказка:
# Чтобы получить список больших букв русского алфавита:
# print(list(map(chr, range(ord('А'), ord('Я')+1))))

Не понял.
31 changes: 29 additions & 2 deletions lesson03/home_work/hw03_normal.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,14 @@
# Первыми элементами ряда считать цифры 1 1

def fibonacci(n, m):
pass
fibo_list = [1, 1]
for i in range(m):
count = len(fibo_list) - 2
last = len(fibo_list) - 1
fibo_list.append(fibo_list[count] + fibo_list[last])
return fibo_list[n:m+1]

print(fibonacci(1, 9))

# Задача-2:
# Напишите функцию, сортирующую принимаемый список по возрастанию.
Expand All @@ -12,16 +19,36 @@ def fibonacci(n, m):


def sort_to_max(origin_list):
pass
start = origin_list[:]
res = []

while len(start) > 0:

lesser = start[0]

for i in range(len(start)):
if start[i] <= lesser:
lesser = start[i]
res.append(lesser)
start.remove(lesser)


return res

sort_to_max([2, 10, -12, 2.5, 20, -11, 4, 4, 0])

# Задача-3:
# Напишите собственную реализацию стандартной функции filter.
# Разумеется, внутри нельзя использовать саму функцию filter.

# Не ясно, какой именно фильтр надо было написать?
# Т.е. я понял, как именно ф-ия фильтр работает, но что именно написать - не понял.

# Задача-4:
# Даны четыре точки А1(х1, у1), А2(x2 ,у2), А3(x3 , у3), А4(х4, у4).
# Определить, будут ли они вершинами параллелограмма.

# Задание не совсем понятно


input()
25 changes: 25 additions & 0 deletions lesson04/home_work/hw04_easy.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,38 @@
# квадратами элементов исходного списка
# [1, 2, 4, 0] --> [1, 4, 16, 0]

from random import randint

a = [randint(0, 10) for i in range(10)]
b = [i**2 for i in a]

print(a)
print(b)

# Задание-2:
# Даны два списка фруктов.
# Получить список фруктов, присутствующих в обоих исходных списках.

fruit_1 = ['яблоки', 'апельсины', 'груши', 'киви', 'сливы', 'абрикосы']
fruit_2 = ['персики', 'груши', 'абрикосы', 'апельсины', 'ананасы', 'манго']

fruits = [i for i in fruit_1 if i == i in fruit_2]

print(fruits)

# Задание-3:
# Дан список, заполненный произвольными числами.
# Получить список из элементов исходного, удовлетворяющих следующим условиям:
# + Элемент кратен 3
# + Элемент положительный
# + Элемент не кратен 4

from random import randint

c = [randint(-1000, 1000) for i in range(15)]
result = [i for i in c if i > 0 and i % 4 != 0 and i % 3 == 0]

print(c)
print(result)

input()
Loading