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