gpt4 book ai didi

python - 如何在Python中实现b进制扩展?

转载 作者:行者123 更新时间:2023-12-01 05:25:30 27 4
gpt4 key购买 nike

我必须实现这个伪代码(来自离散数学书):

过程以b为底扩展(n,b:b>1的正整数

q :=n
k :=0

while q does not equal 0
a_k := q mod b
q = q div b
k = k + 1

return (a_k-1, .... a_1, a_0) {(a_k-1... a_1a_0)_b 是 n 的基扩展}

这是迄今为止我的代码:

def expansion(n,b):
q = n
k = 0
a = []
i = len(str(n))

for x in range(0,1000):
a.append(0)

while q != 0:
a[k] = q % b
q = q / b

return a[k]

print expansion(444,2)

我只是不知道我做错了什么,它通常说索引超出范围或者没有打印足够的数字。

最佳答案

在您的代码中,您没有更新 k ,

while q != 0:
a[k] = q % b
q = q / b

# You need to update k
k += 1

此外,您只需返回 a a[k]

此外,请了解,对于当前参数( 4442 ),您至少需要 1085放在数组中 q 之前变为零。您不需要根据索引进行分配,而是在计算值时将值附加到列表中。

所以,

def expansion(n,b):
q = n
k = 0
a = []
i = len(str(n))

while q != 0:
a.append(q % b)
q = q / b
k += 1

return a

这样您就可以避免事先分配位置。

关于python - 如何在Python中实现b进制扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421038/

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