def f(d): if d==1: return '1' else: return f(d//2)+str(d%2) ########## Begin ########## def DecToBin_int(d): if d==0: return'0' sign='' if d<0: d=-d sign='-' b='' while d!=0: b = f(b) return sign +b ########## End ########## d = int(input()) print(DecToBin_int(d))
这是最初做的,但是运行下来显示错误
Traceback (most recent call last): File "src/step7/student7.py", line 20, in <module> print(DecToBin_int(d)) File "src/step7/student7.py", line 16, in DecToBin_int b = f(b) File "src/step7/student7.py", line 5, in f return f(d//2)+str(d%2) TypeError: unsupported operand type(s) for //: 'str' and 'int'
到目前,还暂不知道应该如何修改,可能本来这样的表述就是错误的吧。这个是我根据前面做题的思路写的,可能当时做题的时候有一点混乱,但回过头检查,感觉这个程序可行。等以后学好了再回头来看吧。
根据老师的讲解,写出来了下面这个更加简单,思路清晰的答案。
def f(d):
if d==1:
return '1'
else:
return f(d//2)+str(d%2)
########## Begin ##########
def DecToBin_int(d):
if d==0:
return'0'
if d>0:
return f(d)
if d<0:
return '-'+f(-d)
########## End ##########
d = int(input())
print(DecToBin_int(d))