【问题标题】:Iterate user input and convert to binary迭代用户输入并转换为二进制
【发布时间】:2018-09-19 16:18:54
【问题描述】:

我正在做一个二进制计数器程序。我需要它来打印十进制等价物和相应的二进制等价物......

到目前为止,我已经设法做到了这一点,但我需要将二进制从 0 转换为用户输入值,我一直在玩它,但我无法弄清楚:感谢任何帮助: )

Please enter number: 12

Decimal: 1  = binary: 1100
Decimal: 2  = binary: 1100
Decimal: 3  = binary: 1100
Decimal: 4  = binary: 1100
Decimal: 5  = binary: 1100
Decimal: 6  = binary: 1100
Decimal: 7  = binary: 1100
Decimal: 8  = binary: 1100
Decimal: 9  = binary: 1100
Decimal: 10  = binary: 1100
Decimal: 11  = binary: 1100
Decimal: 12  = binary: 1100

从此代码

dec = input('Please enter number')

new_list = []
index = 0
output = ''
counter = 0
dec = int(dec)
upper_range = int(dec)

#for x in range(0,upper_range):



while dec > 0:
        output += str(dec % 2)
        dec = (dec // 2)
output = output[::-1]

new_list.append(output)


while counter < upper_range:
    print('Decimal:', counter + 1, end=' ',)
    print(' = binary:' , *new_list)
    counter = counter + 1

【问题讨论】:

  • '{:04b}'.format(12)12 转换为带有前导零最多4 个字符的二进制字符串:'1100'。你可以免费获得那部分......
  • 谢谢,但我必须使用代码转换,我不能使用内置函数。代码本身也是一次性的,但我希望它从 0 转换为 user_input:)
  • 您只计算一个二进制表示...dec 的那个。这就是你在new_list 中的痛处。你应该为每个counter 计算一下。

标签: python python-3.x


【解决方案1】:

您应该改为在循环内进行十进制到二进制的转换;否则只做上限值的转换:

dec = input('Please enter number')

counter = 1
upper_range = int(dec)

while counter <= upper_range:
    binary = ''
    dec = counter
    while dec > 0:
        binary += str(dec % 2)
        dec = (dec // 2)
    binary = binary[::-1]
    print('Decimal:', counter, end=' ',)
    print(' = binary:' , binary)
    counter = counter + 1

【讨论】:

  • 感谢您向我展示了这一点,我还有很多东西要学。
  • 很高兴能提供帮助。如果您认为此答案正确,您能否将其标记为已接受? (点击问题旁边的灰色复选标记以接受。)
【解决方案2】:

n = int(input("请输入数字:"))

对于范围内的 i (1,n+1):

print "Decimal: "+str(i)+" = binary: "+str(format(i,'04b'))

【讨论】:

    【解决方案3】:

    我认为这可能会回答您的问题。您可以借助内置 bin 功能,也可以使用以下 convTobin 方法手动完成。

        #This is with the help of built-in
        n = int(input())
        for i in range(n+1):
            print('Decimal: ',i,' Binary: ',bin(i).split('b')[1]);
    
       #This is doing it manually
        n = int(input())
    
        def convTobin(num):
            if num == 0:
                return '0'
            s = ''
            while num:
                s = str(num&1) + s
                num = num>>1
            return s
    
        for i in range(n+1):
            print('Deciaml: ',i,'Binary: ',convTobin(i))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-30
      • 2014-11-28
      • 1970-01-01
      • 2017-01-03
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多