Защита полей от записей

Прямоугольник

Задан прямоугольник координатами левой верхней точки х, y и шириной (w) и высотой (h).

Добавьте защиту на изменение данных такую что:

  • при попытке записать отрицательную высоту (ширину) бросалось исключение;
  • при попытке записать отрицательную высоту (ширину) изменялись координаты левой верхней точки так, чтобы ширина и высота были положительными. (Т.е если координата x, y была 1, 2, то при ширине -3 мы трактуем, что "от текущей точки, которую мы считаем левой верхней, отсчитать -3 по ширине и получим противоположный угол; в этом случае координаты левой верхней точки были x = 1+(-3)=-2, y=2, w = 3 (стала полжительной).

Задачи, не вошедшие ни в один семинар

min 1D отрезков

Допишите класс Segment1, чтобы можно было найти наименьший отрезок из данных.

Даны отрезки по 1 отрезку на строку. Напечатать самый короткий отрезок. Если несколько отрезков такой длины, то взять из них самый левый.

sort 1D отрезков

Допишите класс Segment1, чтобы можно было найти наименьший отрезок из данных.

Даны отрезки по 1 отрезку на строку. Напечатать самый короткий отрезок. Если несколько отрезков такой длины, то взять из них самый левый.

Обед-1 - сумма

Студент покупает обед в столовой. На вход дано что купил студент в формате: название rrr.kk rub По 1 товару на строку. Напечатать список товаров и сколько они стоят, отсортировать от дорогих к дешевым. Напечатать сколько стоит весь обед в формате rrr.kk

Для этого реализовать класс Rub и функции:

class Rub(object):
    """ Класс для работы с рублями и копейками."""
    def __init__(self, rub=0, kop=0):
        self.rub = rub
        self.kop = kop
        self.normalize()

    def __str__(self):
        # тут нужно написать код

    def __lt__(self, other):
        # тут нужно написать код

    def __add__(self, other):
        res = Rub()
        # тут нужно написать код
        return res

class Goods(object):
    """ Класс описания товара: название и цена"""
    def __init__(self, name='', rub=0, kop=0):
        self.name = name
        self.price = Rub(rub, kop)

Пример:

Input:
rice 10.50
tea 6.30
cake 10.12
salad 20.00
Output:
salad 20.00 rub
rice 10.50 rub
cake 10.12 rub
tea 6.30 rub
-----
total 46.92 rub

Обед-2 - сдача

В последней задаче после печати total нужно спросить сколько дал денег покупатель:

t = input('tender:')

Потом напечатать сколько надо дать сдачи (change)

Пример:

# Input:
rice 10.50
tea 6.30
cake 10.12
salad 20.00
#Output:
salad 20.00 rub
rice 10.50 rub
cake 10.12 rub
tea 6.30 rub
-----
total 46.92 rub
# Input:
tender 100
# Output:
tender 100.00 rub
change 53.08 rub

Обед-3 - цена за 1 кг и вес

Некоторые товары могут быть заданы как цена за 1 кг и вес в кг.

Их нужно напечатать в чеке в следующем формате:

# Input
rice 43.00 0.5
apple 63 0.127
# Output
rice 43.00x0.5 = 21.50
apple 63.00x0.127 = 8.00

При округлении части копеек лишнее - отбросить.

63.00x0.127 = 8.001, но мы округлили (отбросили лишнее) до 8.00

1.239 округляем до 1.23

results matching ""

    No results matching ""