2301_79712201 2023-10-23 16:22 采纳率: 77.8%
浏览 10
已结题

为什么我写的这个程序二进制转换不了十进制啊

img


为什么这个程序二进制转换不了十进制啊,代码好像没有问题,怎么回事

  • 写回答

3条回答 默认 最新

  • 梦幻精灵_cq 2023-10-23 18:20
    关注
    • ocr您截图的代码

      img


      run的输出为0,输入是2

      img

    ocr代码

    #<程序2.2:改进后的二-十进制转换>
    b=input('\nPlease enter a binary number: ')
    d=0;weight=2**(len(b)-1) ;
    
    for i in range(0, len(b)):
        
        if b[i]=='i':
            d = d+weight ;
        
        weight=weight//2;
    
    print(d)
    
    

    • 您的代码有一点不足、一点错误

      1、不足点:代码书写极其不规范
      一般不要在行写多条语句;python语句行末不用分号,直接回车就好;有些地方该留的一个空格还是要留。
      建议看看关于“代码书写规范”的文字,养成“规范”代码,好处多多。(我csdn学习笔记末有两篇关于“规范”的文章,可以跳转看看大佬的规范讲究。)

      2、错误:您把
      下面代码==后引号中的1,写成了i。
      if b[i]=='1':
           d = d + weight
    
    • 修改后就对啰😄

      img

    调整后的代码(也适当“规范”了一下下)

    
     # <程序2.2:改进后的二-十进制转换> #
    b = input(f"\nPlease enter a binary number: \n\n{'':>12}_").strip() # 变量b接收键盘输入并去除前后空格。
    d = 0 # 十进制结果初值。
    weight = 2**(len(b)-1) # 二进制数位权重。
    
    for i in range(len(b)):
        
        if b[i] == '1':
            d = d + weight
        
        weight = weight//2
    
    print(d)
    
    

    • 您这二-十进制转换的思路很高级!👍👍
      还可以把代码写得更python

      img

    更python的代码

    
    # <程序2.2:改进后的二-十进制转换> 
    b = input(f"\nPlease enter a binary number: \n\n{'':>12}_").strip() # 变量b接收键盘输入并去除前后空格。
    d = [int(i[1])*2**i[0] for i in zip(range(len(b))[::-1], b)]
    print('\n权重和二进制数位用zip函数组成元组:\n', *zip(range(len(b))[::-1], b), f"\n\n据元组计算二进制数位的十进制值:\n{d} = {sum(d)}")
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 已采纳回答 10月23日
  • 创建了问题 10月23日