Code:
import sys a,b,c = input().split() data = { "a" : int(a), "b" : int(b), "c" : int(c), } if data["a"] == 0: del(data["a"]) if data["b"] == 0: del(data["b"]) if data["c"] == 0: del(data["c"]) if len(data)==0: print("0") sys.exit() for i in data.keys(): if data[i] == 1: if "b" == i: data[i] = "x" if "c" == i: data[i] = "y" if data[i] == -1: if "b" == i: data[i] = "-x" if "c" == i: data[i] = "-y" else: if i == "b": if data[i] != "x": data[i] = "%sx" % data[i] if i == "c": if data[i] != "y": data[i] = "%sy" % data[i] a = b = c = "" for i in data.keys(): if i == "a": a += "%s+" % data[i] if i == "b": b += "%s+" % data[i] if i == "c": c += data[i] string = a+b+c string = list(string) i = 0 while i < len(string)-1: if string[i] == "+" and string[i+1] == "-": del(string[i]) i+=1 if string[len(string)-1] == "+": del(string[len(string)-1]) if "" == ''.join(string): print('0') else: print(''.join(string)) Task: School algebra (Time: 1 sec. Memory: 16 MB Complexity: 27%)
Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется коэффициентами a, b и c. Написать программу, которая по заданным a, b и c выводит соответствующий трёхчлен, записанный с использованием алгебраических соглашений: 1.коэффициент при члене, содержащем переменную, опускается, если его модуль равен единице; 2.член, коэффициент при котором равен нулю, опускается (кроме случая, когда все коэффициенты равны нулю, тогда трехчлен состоит из одной цифры 0); 3.знак "+" опускается, если он предшествует отрицательному коэффициенту; 4.знак "+" опускается, если он стоит в начале выражения (так называемый унарный плюс); 5.знак умножения между коэффициентом и переменной опускается. При этом запрещено менять местами члены. Во входном файле INPUT.TXT через пробел записаны целые коэффициенты a, b и с, каждое из которых не превосходит 30000 по абсолютной величине. Выходной файл OUTPUT.TXT должен содержать трехчлен, записанный с использованием алгебраических соглашений. Example:
0 2 -1 -> 2x-y3 0 -2 -> 3-2y
In the code I have a lot of conditional statements. How to reduce their count? And how to make the code beautiful?