gpt4 book ai didi

python - 减去 2 到 10 之间任何基数的两个数

转载 作者:行者123 更新时间:2023-12-02 04:01:34 25 4
gpt4 key购买 nike

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

最佳答案

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

情况一: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所以您可以确定这一点。

关于python - 减去 2 到 10 之间任何基数的两个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com