对于作为基数b的两个数字x和y,这是否适用于减去它们?数字以字符串格式给出,并且2< = b< = 10。
def n2b(n, b): # function to convert number n from base 10 to base b
if n == 0:
return 0
d = []
while n:
d.append(int(n % b))
n /= b
return ''.join(map(str,d[::-1]))
x = int(x,b) # convert to integers in base 10
y = int(y,b)
z = x - y
z = n2b(z,b) # convert back to base b, still in integer form
答案 0 :(得分:1)
你对整数如何在python中工作感到困惑。正如上面的评论所说:python总是以二进制形式存储整数,并且只在打印时将它们转换为基数。根据你获得x和y的方式以及你需要如何回馈z,代码需要不同
在这种情况下,你只需要做
z = x - y
你已经完成了。
在这种情况下,您首先需要将字符串转换为具有正确基数的整数。我认为这是你的情况,因为你已经处理int(x, b)
将字符串转换为整数是正确的(例如int("11", 2)
给出3
(基数为10的整数)。我会建议你将你的代码改造成这样的东西:
x_int = int(x, b)
y_int = int(y, b)
z_str = n2b(x_int - y_int, b)
在你的代码中,x首先是一个字符串,然后是一个整数,这是不好的做法。所以例如使用x_int
代替x
。
现在归结为你的n2b
功能是否正确。从远处看起来很好,虽然你没有处理大于10的标志和基础。有一个被广泛接受的convert integer to base b answer,所以你可以采取这个确定。