我有一个非常具体的问题,关于如何通过python将denary整数转换为二进制,而只使用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])
答案 0 :(得分:3)
num != 0
。modnum
支票。假设这些问题我们可以写
def func(num):
if num == 0:
return [num]
binary_digits = []
while num != 0:
modnum = int(num % 2)
num = int(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]
答案 1 :(得分:1)
num = int(input("Enter the Number"))
def func(num):
while num != 0:
modnum = int(num%2)
num = int(num/2)
alist.append(modnum)
alist = []
func(num)
print(alist)
print (alist[::-1])
您不需要if
添加正确的数字,只需使用变量modnum
即可。您还必须再次执行此while
- 循环。最后的函数调用func(num)
为您提供了这些随机数。
答案 2 :(得分:0)
您可以使用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 作为输入时,这将进入无限循环。但那是你要修理
答案 3 :(得分: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)
答案 4 :(得分:0)
您可以通过执行
快速实现此功能def func(num):
binary_digits = list("{0:b}".format(num))
return binary_digits