python - 使用函数将十进制转换为二进制
问题描述
我正在尝试通过函数获取输入并以二进制形式返回数字。到目前为止,这是我的代码,我不太确定如何进行。对于评论,我理解bin()
是一个内置函数,但我需要创建自己的二进制输出方式。
另请注意:我已经更新了代码,并且我已经将所有 1 正确添加到输出中,但我不确定如何添加 0。
def dectobin(x):
e=0
output=""
p=0
while p <= x:
p=2**e
e+=1
if 2**e >= x:
x = x - 2**(e-1)
e=0
p=0
p=2**e
output+=str(1)
if 2**e > x:
p = p//2
if p > x:
p=p//2
output+=0
x = x = p
output+=1
return output
print(dectobin(99))
解决方案
此功能内置在 Python 中。bin
是名字。这是帮助消息:
模块内置函数 bin 的帮助:
bin(number, /) 返回整数的二进制表示。
>>> bin(2796202) '0b1010101010101010101010'
这是我为自己的解决方案提出的:
def binary(n):
if n == 0:
return '0'
orders = []
i = 1
while i <= n:
orders.append(i)
i *= 2
orders = orders[::-1] # decreasing powers of n
# for each `order` we need a 0 or a 1
b = ''
for o in orders:
if o <= n:
b += '1'
n -= o
else:
b += '0'
return b
我的检查是(效率低下,但是¯_(ツ)_/¯):
assert(all(bin(n)[2:] == binary(n) for n in range(1025)))
推荐阅读
- python - 我可以得到两种模式(统计)吗?
- javascript - Nightwatch - 无法单击 Safari 中的元素(Catalina)
- python - 使用 Gertboard 设置 Raspberry Pi 以使用 Arduino 引脚
- jquery - 使用 JQueryUI 自动完成更新多个字段
- kotlin - 范围是否在后台默默地处理异常/失败?
- java - JAVA aws s3client:抛出异常:java.lang.BootstrapMethodError:引导方法初始化异常
- python - 为什么 Pandas 在选择列时有时似乎会更改字符串编码?
- r - 将多个 CSV 合并为一个 R 数据
- hive - 在 Hive 中编码元信息
- python - 如何使用线性回归评估 Spark Pipeline 中模型的性能(准确度)