鱼C论坛

 找回密码
 立即注册
查看: 2537|回复: 6

Python第17课的课后题问题求助

[复制链接]
发表于 2016-11-26 12:12:02 | 显示全部楼层 |阅读模式
1鱼币
#这是我自己编的十进制转化为二进制课后题,运行之后总是会少2,
#求指导
def zhuan(a,d=2):
    q = a//d
    r = a%d
    if r == 0:
        b = '0'
    else:
        b = '1'            
    while q != 0:
        if r == 0:
            b = '0' + b
            a = q
            q = a//d
            r = a%d
        else :
            b = '1' + b
            a = q
            q = a//d
            r = a%d
    print ('转化后的二进制数为:',b)

#******main********
a = int(input('请输入待转化的十进制数'))
zhuan(a)
       
        

最佳答案

查看完整内容

运行一下程序: #假设a取22 程序走起。 q=11 r=0 第1次循环 r==0了,走if,b="00" a=11 q=5 r=1 第2次循环 现在r=1了,走else,b="100" a=5 q=2 r=1 第3次循环 现在r=1,走else,b="1100" a=2 q=1 r=0 第4次循环 现在r=0,走if,b="01100" a=1 q=0 r=1 第四次循环 现在q=0 不满足条件 结束循环 LZ你看一下你的思路,整数二进制是除2余然后倒序, 你的情况是else的时候r=0,也就是余数是0,但你却 ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-26 12:12:03 | 显示全部楼层
运行一下程序:
#假设a取22
程序走起。
q=11
r=0

第1次循环
r==0了,走if,b="00"
a=11
q=5
r=1
第2次循环
现在r=1了,走else,b="100"
a=5
q=2
r=1
第3次循环
现在r=1,走else,b="1100"
a=2
q=1
r=0
第4次循环
现在r=0,走if,b="01100"
a=1
q=0
r=1
第四次循环
现在q=0
不满足条件
结束循环

LZ你看一下你的思路,整数二进制是除2余然后倒序,
你的情况是else的时候r=0,也就是余数是0,但你却加了在前面1,你应该是想结果是要倒序过来的,于是你就取了0的反面1
但这样是不可行的  比如10110,倒序是01101 ,取反面是01001,但这样和你的结果好像还不一样,

自习再研究一下,其实你是用q在判断余数取谁,正确是应该是用r,即余数判断,这样就对了。
lz可以试一下修改代码、
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-26 12:54:17 From FishC Mobile | 显示全部楼层
你这循环里面的结果没有 因为没有调用函数 没出结果,只是一直循环b=0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-26 13:13:13 | 显示全部楼层
你可以运行一下试试运行能通,只是最后结果不对,应该是程序的逻辑出问题了,我当局者迷啊😂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-26 13:14:02 | 显示全部楼层
zua 发表于 2016-11-26 12:54
你这循环里面的结果没有 因为没有调用函数 没出结果,只是一直循环b=0

你可以运行一下试试运行能通,只是最后结果不对,应该是程序的逻辑出问题了,我当局者迷啊😂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-26 14:06:49 | 显示全部楼层
感觉程序有些乱,我安装你的思路重写了一下。
  1. def zhuan(a,d=2):
  2.     b = ''
  3.     while True:
  4.         r = a%d
  5.         a = a//d

  6.         if r == 0:
  7.             b = '0' + b
  8.         else :
  9.             b = '1' + b
  10.         if a == 0:
  11.             break
  12.     print ('转化后的二进制数为:',b)

  13. #******main********
  14. a = int(input('请输入待转化的十进制数'))
  15. zhuan(a)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-27 08:15:57 | 显示全部楼层
zua 发表于 2016-11-26 14:15
运行一下程序:
#假设a取22
程序走起。

哦,好的👌
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-24 03:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表