输入一个仅由整数、某个小写字母以及'+','-','='三种数学符号组成的一元一次方程,方程中的小写字母代表未知数,并且:(1) 因为这是一元一次方程,所以只有一种字母会出现在方程中;(2) 所有方程中出现的所有整数都小于10000;(3) 请注意,减号字符'-'也可以作为负号使用;(4) 请注意,当结果为0时应避免答案具有负号。形如x=-0.000的答案不可得分。题目保证输入的所有一元一次方程均是一个合法的方程且有唯一实数解,例如下面3个一元一次方程都是合法的:
a+1=2
2x-4=x+8
-7+z=10086
输入:
输入一行字符串,即题目所述的一元一次方程。字符串长度小于100。
输出:
输出一个字母、字符'='和一个保留到小数点后三位的小数,表示一元一次方程的解。
输入示例:
a+1=2a-9
输出示例:
a=10.000
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
def reverse_var(var): if '-' in var: res = var[1:] elif '+' in var: res = '-' + var[1:] else: res = '-' + var return res if __name__ == '__main__': s = input() x = '' var = '' is_reverse = False coff_list = [] const_list = [] for i in range(len(s)): if x == '' and s[i].isalpha(): x = s[i] break for i in range(len(s)): if s[i] == x: coff_list.append(reverse_var(var) if is_reverse else var) var = '' continue if s[i] == '=': if var != '': const_list.append(reverse_var(var) if is_reverse else var) is_reverse = True var = '' continue var = var + s[i] if var != '': const_list.append(reverse_var(var) if is_reverse else var) print(coff_list) print(const_list) coff_list = list(map(int, coff_list)) const_list = list(map(int, const_list)) ans = sum(const_list) / sum(coff_list) * (-1) print(x + "=" + f"{ans:.3f}") |
