问题描述
所以我正在制作这个减法程序,真的不知道为什么它不适用于这两个值。对于其他每个而言,它还能工作吗?
def binmin(x,y):
lenx = len(x)
leny = len(y)
x1 = list(x)
y1 = list(y)
difference= 0
one = 0
result = ""
for i in range(len(x)):
difference = str((int(x1[lenx - 1 - i])) - int(y1[leny - 1 - i]))
if difference == "-1":
difference = 2 - int(y1[leny - 1 - i])
one = 1
elif difference == "-2":
one = 1
difference = 0
else:
one = 0
y1[leny - i - 2] = int(y1[leny - i - 2]) + one
result = str(difference) + str(result)
return result
print(binmin("11110000","00010001"))
解决方法
更改:
if difference == "-1":
difference = 2 - int(y1[leny - 1 - i])
one = 1
收件人:
if difference == "-1":
difference = 1
one = 1
difference
最初是"-1"
时,您需要借用,因此您可以有效地将2
添加到差额中。由于差异最初是-1
,因此您希望2-1
= 1
来获得新的差异。
原始调整仅在int(y1[leny - 1 - i])
为1
的情况下才有效,如果先前已通过较早的借阅进行了调整(在这种情况下可能为2
)则可能不起作用。 / p>