python - 在 Python 中将整数转换为二进制

标签 python python-3.x loops parameters arguments

我有一个非常具体的问题,关于如何通过 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/

相关文章:

python - Numpy 中括号和方括号有什么区别?

python - 查找列表元素的最接近值

python - 用另一个列表中的值替换列表中的特定值

python - 为什么在这个函数中使用self?

Python 3,循环中的变量

Python 在 linux 上找不到 CasADi

python - 根据属性将两个人匹配在一起

python - 如何在我的代码中添加显示列数的新行

linux - 多次复制的文件内容

c++ - 循环遍历变量