我正在计算从整数到二进制数的转换错误。我输入了整数6并找回了二进制数0.这绝对是错误的。你们能帮忙吗?顺便说一句,我正在使用python 3。
def ConvertNtoBinary(n):
binaryStr = ''
if n < 0:
print('Value is a negative integer')
if n == 0:
print('Binary value of 0 is 0')
else:
if n > 0:
binaryStr = str(n % 2) + binaryStr
n = n > 1
return binaryStr
def main():
n = int(input('Enter a positive integer please: '))
binaryNumber = ConvertNtoBinary(n)
print('n converted to a binary number is: ',binaryNumber)
main()
答案 0 :(得分:3)
这里的问题是:
n = n > 1
这是布尔比较“是否大于1?”。你可能想要的是n&gt;&gt; 1,哪个位移n。
编辑:此外,你只是做了一次这个过程 - 我想你会想要在某些条件下做这件事,比如
while n > 0:
EDIT2:John Machin的评论表格是正确的,我修正了上述内容以反映这一点。
答案 1 :(得分:0)
内置函数“bin”怎么样?
>>> bin(4711)
'0b1001001100111'
包括电池!
答案 2 :(得分:0)
这取决于你在做什么,但执行此操作的Python函数是bin()
。如果要将转换为二进制文件,可以执行bin(numbertoconvert)
。如果要从二进制转换,可以执行int(numbertoconvert, 2)
。 int()
对其使用的基础采用可选参数。要从bin()
获取常规二进制数,您可以执行int(bin(numbertoconvert)[2:])
答案 3 :(得分:0)
这里的问题是if n>0
应该是一个while循环,而不是if语句。