|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 喜欢小翘臀 于 2016-9-28 20:30 编辑
甲鱼老师的17讲动动手2题,将十进制转为2进制的题目‘
我是这么想的:
定义一个函数,shangchuyi2(),该函数目的是除2取余再倒序排列。
然后定义一个十进制转为二进制的函数,我称为DSTBS(),该函数是把一个数字拆成整数和小数部分,分别调用2的函数,再以字符串形式 拼接。
这是我编的:
def DSTBS(x):
def 整数换算(y):
if y < 2:
return str(y)
total = []
a = 3
b = 3
while a != 0:
a = x / 2
b = x % 2
x = a
total.append(b)
total.reverse()
return (str(total))
def 小数换算(y):
total = []
b = 0
while y % 1 != 0 and b <= 20:
y *= 2
total.append(0)
b += 1
if b == 20:
total.append(1)
return(str(total))
c = int (x)
d = x - c
if d!= 0:
return '0b' + 整数换算(c) + 小数换算(d)
else :
return '0b' + 整数换算(c)
然后运行时如果输入3以上的数字,会显示:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
DSTBS(3)
File "H:/python作业/017-2.py", line 22, in DSTBS
return '0b' + shangchuyi2(c)
File "H:/python作业/017-2.py", line 11, in shangchuyi2
a = x / 2
UnboundLocalError: local variable 'x' referenced before assignment
请教一下论坛里的伙伴们,这个该如何解决? |
|