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

__author__ = 'Petr Okunev'

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

# код пишем тут...
i = 1
j = 1
num = ''
while not num.isnumeric():
num = input('enter integer number: ')

num = int(num)

if num != 0:
while num // i >= 1:
print('digit',j,':',((num) // i) % 10)
i *= 10
j += 1
else:
print('digit',j,':',num)


# Задача-2: Исходные значения двух переменных запросить у пользователя.
# Поменять значения переменных местами. Вывести новые значения на экран.
# Подсказка:
# * постарайтесь сделать решение через дополнительную переменную
# или через арифметические действия
# Не нужно решать задачу так:
# print("a = ", b, "b = ", a) - это неправильное решение!
a = input('enter a: ')
b = input('enter b: ')
c = a
a = b
b = c
print('now a:',a,' and b:',b)

# Задача-3: Запросите у пользователя его возраст.
# Если ему есть 18 лет, выведите: "Доступ разрешен",
# иначе "Извините, пользование данным ресурсом только с 18 лет"
age = ''
while not age.isnumeric():
age = input('Введите ваш возраст: ')

age = int(age)

if age >= 18:
print("Доступ разрешен")
else:
print("Извините, пользование данным ресурсом только с 18 лет")
17 changes: 17 additions & 0 deletions lesson01/home_work/P.O.hw01_hard.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

__author__ = 'Petr Okunev'

# Задание-1:
# Ваня набрал несколько операций в интерпретаторе и получал результаты:
# Код: a == a**2
# Результат: True
# Код: a == a*2
# Результат: True
# Код: a > 999999
# Результат: True

# Вопрос: Чему была равна переменная a,
# если точно известно, что её значение не изменялось?

# Подсказка: это значение точно есть ;)
float('inf')
68 changes: 68 additions & 0 deletions lesson01/home_work/P.O.hw01_normal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@

__author__ = 'Petr Okunev'

# Задача-1: Дано произвольное целое число, вывести самую большую цифру этого числа.
# Например, дается x = 58375.
# Нужно вывести максимальную цифру в данном числе, т.е. 8.
# Подразумевается, что мы не знаем это число заранее.
# Число приходит в виде целого беззнакового.
# Подсказки:
# * постарайтесь решить задачу с применением арифметики и цикла while;
# * при желании и понимании решите задачу с применением цикла for.
i = 1
j = 1
max = 0
num = ''
while not num.isnumeric():
num = input('enter integer number: ')

num = int(num)

if num != 0:
while num // i >= 1:
c = ((num) // i) % 10

if c > max:
max = c

i *= 10
j += 1
print('max digit here:',max)
else:
print('max digit here:',num)

# Задача-2: Исходные значения двух переменных запросить у пользователя.
# Поменять значения переменных местами. Вывести новые значения на экран.
# Решите задачу, используя только две переменные.
# Подсказки:
# * постарайтесь сделать решение через действия над числами;
# * при желании и понимании воспользуйтесь синтаксисом кортежей Python.
a = int(input('enter a: '))
b = int(input('enter b: '))
a = b - a
b = b - a
a = a + b
print('now a:',a,' and b:',b)

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

D = b**2 - 4*a*c;
print("Дискриминант D = ", D)
if D > 0:
x1 = (-b + math.sqrt(D)) / (2 * a)
x2 = (-b - math.sqrt(D)) / (2 * a)
print("x1 = ", x1, ", x2 = ", x2)
elif D == 0:
x = -b / (2 * a)
print("x = ", x)
else:
print("Корней тут нет")
24 changes: 22 additions & 2 deletions lesson02/home_work/hw02_easy.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,34 @@
# 4. арбуз

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

fruits = ["груша", "яблоко", "слива", "банан", "киви", "дыня", "арбуз"]
i=1
for fruit in fruits:
print('{0:d}.{1:>10}'.format(i, fruit))
i+=1

# Задача-2:
# Даны два произвольные списка.
# Удалите из первого списка элементы, присутствующие во втором списке.

lst1 = ['q','w','e','r','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m']
print('list before removing:', lst1)
lst2 = ['p','k','n','g','r','d','z']
print('removing these items:', lst2)
for li in lst1:
if li in lst2:
lst1.remove(li)
print('list after removing:', lst1)

# Задача-3:
# Дан произвольный список из целых чисел.
# Получите НОВЫЙ список из элементов исходного, выполнив следующие условия:
# если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два.
numint1 = [48,939,23565,23,9948,26,80,13,800,23551,736]
numint2 = []
for lnum in numint1:
if lnum % 2 == 0:
numint2.append(lnum / 4)
else:
numint2.append(lnum * 2)
print('first list:', numint1)
print('second list:', numint2)
43 changes: 36 additions & 7 deletions lesson02/home_work/hw02_hard.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@
equation = 'y = -12x + 11111140.2121'
x = 2.5
# вычислите и выведите y

seq = equation.strip()
posx = seq.find('x')
startk = seq.rfind(' ',0,posx)+1
k = float(seq[startk:posx])
startb = seq.rfind(' ',posx)+1
b = float(seq[startb:])
y = k * x + b
print(equation)
print('x = ',x)
print('y = ',y)

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

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

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

# date = '01.22.1001'
# date = '1.12.1001'
# date = '-2.10.3001'
date = input('Введите дату в виде строки формата "dd.mm.yyyy": ')
try:
dl = date.split('.')
if len(dl[0]) == 2 and len(dl[1]) == 2 and len(dl[2]) == 4:
if dl[0].isdigit() and dl[1].isdigit() and dl[2].isdigit():
dd = int(dl[0])
mm = int(dl[1])
yyyy = int(dl[2])
if 1 < yyyy <= 9999 and 1 < mm <= 12:
if (mm in (1, 3, 5, 7, 8, 10, 12) and 1 < dd <= 31) or (mm in (2, 4, 6, 9, 11) and 1 < dd <= 30):
print('Дата выглядит корректно!')
else:
print('Несоответствие чисел и месяцев!')
else:
print('Год меньше 1 или больше 9999!')
else:
print('Введенная дата содержит не только цифры!')
else:
print('Введенная дата не в виде строки формата "dd.mm.yyyy"!')
except:
print('Ошибка при вводе даты!')

# Задание-3: "Перевёрнутая башня" (Задача олимпиадного уровня)
#
Expand Down Expand Up @@ -53,4 +82,4 @@
# Выход: 6 2
#
# Вход: 11
# Выход: 5 3
# Выход: 5 3
38 changes: 35 additions & 3 deletions lesson02/home_work/hw02_normal.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,54 @@
# но только если результаты извлечения корня не имеют десятичной части и
# если такой корень вообще можно извлечь
# Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2]

import math as mt
lst1 = [3, -7, 8, 16, 9, -25, 25, 4, 1, 23, 49, -4]
print('дано:', lst1)
lst2 = []
for li in lst1:
if li >= 0 and mt.sqrt(li) - int(mt.sqrt(li)) == 0:
lst2.append(int(mt.sqrt(li)))
print('результат:', lst2)

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

days = {'01': 'первое', '02': 'второе', '03': 'третье', '04':'четвертое', '05': 'пятое', '06': 'шестое', '07': 'седьмое', '08': 'восьмое', '09': 'девятое', '10': 'десятое', '11': 'одиннадцатое', '12': 'двенадцатое', '13': 'тринадцатое', '14': 'четырнадцатое', '15': 'пятнадцатое', '16': 'шестнадцатое', '17': 'семнадцатое', '18': 'восемнадцатое', '19': 'девятнадцатое', '20': 'двадцатое', '21': 'двадцать первое', '22': 'двадцать второе', '23': 'двадцать третье', '24': 'двадцать четвертое', '25': 'двадцать пятое', '26': 'двадцать шестое', '27': 'двадцать седьмое', '28': 'двадцать восьмое', '29': 'двадцать девятое', '30': 'тридцатое', '31': 'тридцать первое'}
months = {'01': 'января', '02': 'февраля', '03': 'марта', '04':'апреля', '05': 'мая', '06': 'июня', '07': 'июля', '08': 'августа', '09': 'сентября', '10': 'октября', '11': 'ноября', '12': 'декабря'}
dt = input('Введите дату в формате dd.mm.yyyy, например: 02.11.2013: ')
sdt = dt.split('.')
dd = days.get(sdt[0])
mm = months.get(sdt[1])
yyyy = sdt[2]
print('Введено: {0} {1} {2} года'.format(dd, mm, yyyy))

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

n = int(input('enter number of elements: '))
import random as rnd
rlst = []
i = 0
while i < n:
rlst.append(rnd.randint(-100, 100))
i += 1
print('random list: ', rlst)

# Задача-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]
lst = [1, 2, 4, 5, 6, 2, 5, 2, 1, 8, 9, 3, 4]
print('список, заполненный произвольными целыми числами: ', lst)
lst2 = []
lst3 = []
for li in lst:
if li not in lst2:
lst2.append(li)
if lst.count(li) <= 1:
lst3.append(li)
print('неповторяющиеся элементы исходного списка:', lst2)
print('элементы исходного списка, которые не имеют повторений:', lst3)
40 changes: 37 additions & 3 deletions lesson03/home_work/hw03_easy.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,27 @@
# Округление должно происходить по математическим правилам (0.6 --> 1, 0.4 --> 0).
# Для решения задачи не используйте встроенные функции и функции из модуля math.

def my_round(number, ndigits):
pass
def my_round(number, nd):
lnum = str(number).split('.')
if len(lnum[1]) > nd:
dr = int(lnum[1][0:nd])
ld = int(lnum[1][nd])
if ld >= 5:
dr += 1
snewdr = str(dr)
else:
snewdr = str(dr)

if len(snewdr) > nd:
sdi = str(int(lnum[0]) + 1)
snewdr = snewdr[1:]
else:
sdi = str(int(lnum[0]))

my_round = '{}.{}'.format(sdi, snewdr)
else:
my_round = str(number)
return my_round


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

def lucky_ticket(ticket_number):
pass
ltn = str(ticket_number)
if len(ltn) == 6:
ls = 0
rs = 0
for li in ltn[0:3]:
ls = ls + int(li)
for li in ltn[3:6]:
rs = rs + int(li)
if ls == rs:
lucky_ticket = 'Lucky ticket! {} == {}'.format(ls, rs)
else:
lucky_ticket = 'Unlucky ticket! {} != {}'.format(ls, rs)
else:
lucky_ticket = 'Strange ticket! Not 6 digits!'
return lucky_ticket



print(lucky_ticket(123006))
Expand Down
Loading