我有一个非常具体的问题,关于如何通过 python 将十进制整数转换为二进制,但只使用 mod (%) 和 除 (/) 函数。
到目前为止,我已经成功创建了实际的函数并循环本身,但该函数似乎永远循环并添加了随机数 0 和 1,尽管转换成功。
例如,输入4,输出[0, 0, 1, 0, 1]。可以看到,它已经成功获取了[0, 0, 1],二进制为4,但在末尾添加了0和1。
我认为这与我引用和传递参数的方式有关,但很乐意接受一些帮助。
num = int(input("Enter the Number"))
def func(num)
if num == 1:
alist.append(1)
return num
while num != 1:
modnum = int(num%2)
num = int(num/2)
if modnum == 0:
alist.append(0)
print(alist)
elif modnum == 1:
alist.append(1)
print(alist)
func(num)
alist = []
func(num)
print(alist)
print (alist[::-1])
最佳答案
- 删除了递归。
- 条件应为
num != 0
。 - 使用
divmod
built-in function用于获取商和余数。 - 删除了多余的
modnum
检查。
假设这些问题我们可以写
def func(num):
if num == 0:
return [num]
binary_digits = []
while num != 0:
num, modnum = divmod(num, 2)
binary_digits.append(modnum)
return list(reversed(binary_digits))
num = int(input("Enter the Number"))
binary_digits = func(num)
print(binary_digits)
示例:
>>> func(100)
[1, 1, 0, 0, 1, 0, 0]
关于python - 在 Python 中将整数转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44242910/