求解,在测试点1处,solution1和solution2的输出完全相同,但solution1过不了,solution2可以。报错显示line-1 col-4 read 6,expect 1.可是明明就是 1 啊,哪来的 6 ???这两个solution都是我写的,就莫名其妙。
def solution1(equal):
left, right = equal.split("=")
if left[0] != "-":
left = "+" + left
if right[0] != "-":
right = "+" + right
def getNode(a):
start = 0
nodes = []
for i in range(1, len(a)):
if a[i] in "+-":
nodes += [a[start:i]]
start = i
nodes += [a[start:]]
return nodes
def getAns(left, right):
global equal
for i in equal:
if i.isalpha():
unknown = i
break
nleft, nright = 0, 0
for i in left:
if i[-1].isalpha():
if len(i) == 2:
nleft += int(i[0]+"1")
else:
nleft += int(i[:-1])
elif i[-1].isdigit():
nright += -int(i)
for i in right:
if i[-1].isalpha():
if len(i) == 2:
nleft += -int(i[0]+"1")
else:
nleft += -int(i[:-1])
elif i[-1].isdigit():
nright += int(i)
return "%s=%.3f" % (unknown, abs(nright/nleft) if nright/nleft == 0 else nright/nleft)
left_nodes, right_nodes = getNode(left), getNode(right)
return getAns(left_nodes, right_nodes)
def solution2(equal):
left, right = equal.split("=")
if left[0] != "-":
left = "+" + left
if right[0] != "-":
right = "+" + right
sign = "+-"
def getNode(equal):
nodes = []
start = 0
flag = True
for i in range(1, len(equal)):
if equal[i] in sign:
nodes += [equal[start:i]]
start = i
flag = False
if start <= len(equal) - 1:
nodes += [equal[start:]]
flag = False
if flag:
nodes += [equal]
return nodes
def changeNodes(left, right):
i = 0
while i < len(right):
for j in right[i]:
if j.isalpha():
if right[i][0] == "+":
left += ["-" + right[i][1:]]
elif right[i][0] == "-":
left += ["+" + right[i][1:]]
right.pop(i)
i -= 1
break
i += 1
i = 0
while i < len(left):
for j in left[i]:
if j.isalpha():
break
else:
if left[i][0] == "+":
right += ["-" + left[i][1:]]
elif left[i][0] == "-":
right += ["+" + left[i][1:]]
left.pop(i)
i -= 1
i += 1
return left, right
leftNodes = getNode(left)
rightNodes = getNode(right)
changeNodes(leftNodes, rightNodes)
unKnown = leftNodes[0][-1]
ratio = 0
num = 0
for i in leftNodes:
if i[0] == "+":
if i[1:-1]:
ratio += int(i[1:-1])
else:
ratio += 1
else:
if i[1:-1]:
ratio -= int(i[1:-1])
else:
ratio -= 1
for i in rightNodes:
if i[0] == "+":
num += int(i[1:])
else:
num -= int(i[1:])
return "%s=%.3f" % (unKnown, abs(num/ratio) if num/ratio == 0 else num/ratio)
equal = input()
a = solution1(equal)
b = solution2(equal)
print(a, b, a==b)