【问题标题】:Decimal to binary with visualisation in python十进制到二进制与python中的可视化
【发布时间】:2020-02-22 22:31:43
【问题描述】:

我需要创建函数将十进制数转换为二进制,并以这种方式可视化该过程:

例如 15:

15|1
7 |1
3 |1
1 |1

number 15 in binary is 1111 (from bottom to up).

我一直在尝试这样做,但我什至不知道,我的功能是否正确。我知道python有一个内置的“bin”函数,但它不可能用于可视化(或者我错了吗?)。

我最后的代码:

FinalList = []
dividedList = []

number = 29
while number != 1:
    divided = number%2
    number = int(number/2)
    FinalList.append(divided)
    dividedList.append(number)
    print(divided)

if number == 0:
    print(0)
    FinalList.append(divided)
    dividedList .append(0)
else:
    print(1)
    FinalList.append(1)
    dividedList.append(1)


print(FinalList)
print(dividedList)

有人可以帮我吗?

我对 230 号的输出:

[0, 1, 1, 0, 0, 1, 1, 1]

[115, 57, 28, 14, 7, 3, 1, 1]

应该是:

[0, 1, 1, 0, 0, 1, 1, 1]

[230,115, 57, 28, 14, 7, 3, 1]

【问题讨论】:

  • 假设 27 会输出什么
  • listaWynikowlistaDzielenia 哪里来的?
  • 你得到什么输出,你期望什么输出?
  • 帖子已编辑。有错误请见谅
  • 我得到['1', '1', '1', '0', '0', '1', '1', '0'] [230, 102, 38, 6, 6, 6, 2, 0] 230

标签: python converters


【解决方案1】:

希望这会有所帮助!

对您的代码进行细微更改

FinalList = []
dividedList = []

number = 29

print(bin(number))

while number != 1:
    _new_number, divided =  divmod(number, 2)
    print("{}|{}".format(number, divided))
    number = _new_number
    FinalList.append(divided)
    dividedList.append(number)

if number == 0:
    print('0|0')
    FinalList.append(divided)
    dividedList .append(0)
else:
    print('1|1')
    FinalList.append(1)
    dividedList.append(1)


print(FinalList[::-1]) # should match with the `bin` result
print(dividedList)

【讨论】:

    【解决方案2】:

    循环遍历数字的二进制表示,将余数转换回十进制

    number = 230
    str = "{:b}".format(number)
    b = []
    d = []
    for i,x in enumerate(str):
      b.append(x)
      d.append(int(str[i:],2))
    print b
    print d
    

    对于数字 = 15

    ['1', '1', '1', '1']
    [15, 7, 3, 1]
    

    对于数字 = 230

    ['1', '1', '1', '0', '0', '1', '1', '0']
    [230, 102, 38, 6, 6, 6, 2, 0]
    

    【讨论】:

      猜你喜欢
      • 2012-10-08
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 2022-10-14
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多