Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将整数转换为二进制_Python_Python 3.x_Loops_Parameters_Arguments - Fatal编程技术网

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

在Python中将整数转换为二进制,python,python-3.x,loops,parameters,arguments,Python,Python 3.x,Loops,Parameters,Arguments,我有一个非常具体的问题,关于如何通过python将一元整数转换为二进制,但只使用mod(%)和divide(/)函数 到目前为止,我已经成功地创建了实际的函数和循环本身,但是该函数似乎永远循环,并添加了0和1的数量,尽管转换成功 例如,输入4,输出[0,0,1,0,1]。正如您所看到的,它成功地获得了[0,0,1],这是二进制的4,但在末尾添加了0和1 我认为这与我引用和传递论点的方式有关,但我很乐意接受一些帮助 num = int(input("Enter the Number")) def

我有一个非常具体的问题,关于如何通过python将一元整数转换为二进制,但只使用mod(%)和divide(/)函数

到目前为止,我已经成功地创建了实际的函数和循环本身,但是该函数似乎永远循环,并添加了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])

您可以使用while循环来完成您要做的事情。您可以尝试以下方法:

num = int(input("Enter the Number"))
def func(num):
    #this while loop breaks when num == 1
    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)
    #when is breaks, append 1 to your list
    alist.append(1)

alist = []
func(num)
print(alist)
print (alist[::-1])
当您输入,0作为输入时,这将进入一个无限循环。但这是您需要解决的问题

请尝试以下方法:

def func(num):

if num <= 1:
    alist.append(num)
    return 
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)
    func(num)
def func(num):
如果num
  • 删除递归
  • 条件应为
    num!=0
  • 用于获取商和余数
  • 已删除冗余的
    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]

添加正确的数字不需要
if
,只需使用变量
modnum
。您还必须在循环一次时执行此
func(num)
末尾的函数调用提供这些随机数。

您可以通过

def func(num):
    binary_digits = list("{0:b}".format(num))
    return binary_digits

递归和循环?看起来你需要选择一种或另一种方式。你能解释一下吗?我知道我在循环中使用递归,但在这种情况下,这是否重要?我是新来的,所以任何帮助都将不胜感激。还有,为什么不直接使用
list({0:b}).format(num))
来获取列表?@SudheeshSinganamalla我将如何利用它呢?
def func(num):
    binary_digits = list("{0:b}".format(num))
    return binary_digits