减去2到10之间的任意两个数

时间:2017-01-14 07:15:36

标签: python

对于作为基数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

1 个答案:

答案 0 :(得分:1)

你对整数如何在python中工作感到困惑。正如上面的评论所说:python总是以二进制形式存储整数,并且只在打印时将它们转换为基数。根据你获得x和y的方式以及你需要如何回馈z,代码需要不同

情况1:x,y和z都是整数

在这种情况下,你只需要做

z = x - y

你已经完成了。

情况2:x,y和z都是字符串

在这种情况下,您首先需要将字符串转换为具有正确基数的整数。我认为这是你的情况,因为你已经处理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,所以你可以采取这个确定。