Написать класс Sausage, имитирующий киберколбасу. Киберколбаса может быть проинициализирована нулём значений (создаётся один батон с фаршем "pork!"), одним (фарш типа str) и двумя (фарш, и объём типа Fraction). Длина целого батона киберколбасы — 12 символов фарша и 2 символа оболочки. Колбаса единичного объёма — это один полный батон, более, чем единичного — это несколько батонов (последний, возможно, неполон). Неполный батон заканчивается срезом. Киберколбаса поддерживает операции умножения и деления на целое неотрицательное число, сложение и вычитание с другой киберколбасой (фарш результата совпадает с фаршем первого операнда), а также взятие абсолютного значения (возвращается объём). Отрицательного объёма не бывает, в этом случае он делается нулевым. Если объём киберколбасы нулевой, батон считается пустым. При выводе округлять двенадцатые доли батона в сторону ближайшего меньшего.

   1 a, b, c = Sausage(), Sausage("HAM", "5/6"), Sausage("SPAM.", 1.25)
   2 print(a, b, c, sep='\n')
   3 print(a + b + c, abs(a + b + c))
   4 print(b * 2, 4 * c / 5, sep="\n")
   5 d, e = 2 * b + a / 3 - 25 * c / 16, a - c
   6 print(d, not d, abs(d))
   7 print(e, not e, abs(e))

/------------\
|pork!pork!po|
|pork!pork!po|
|pork!pork!po|
\------------/
/----------|
|HAMHAMHAMH|
|HAMHAMHAMH|
|HAMHAMHAMH|
\----------|
/------------\/---|
|SPAM.SPAM.SP||SPA|
|SPAM.SPAM.SP||SPA|
|SPAM.SPAM.SP||SPA|
\------------/\---|
/------------\/------------\/------------\/-|
|pork!pork!po||pork!pork!po||pork!pork!po||p|
|pork!pork!po||pork!pork!po||pork!pork!po||p|
|pork!pork!po||pork!pork!po||pork!pork!po||p|
\------------/\------------/\------------/\-| 37/12
/------------\/--------|
|HAMHAMHAMHAM||HAMHAMHA|
|HAMHAMHAMHAM||HAMHAMHA|
|HAMHAMHAMHAM||HAMHAMHA|
\------------/\--------|
/------------\
|SPAM.SPAM.SP|
|SPAM.SPAM.SP|
|SPAM.SPAM.SP|
\------------/
/|
||
||
||
\| False 3/64
/|
||
||
||
\| True 0


CategoryHomework

LecturesCMC/PythonIntro2024/Homework_CyberSausage (last edited 2024-10-30 21:30:04 by FrBrGeorge)