我编写了一个程序,在不使用bin()
的情况下将整数转换为二进制。但是,执行时,此函数会添加前导零。
def decimalToBinary(n):
def helper(n):
if n == 0:
return '0'
else:
if n%2 == 1:
binaryDigit = '1'
else:
binaryDigit = '0'
return helper(n//2) + binaryDigit
helper(n)
print(helper(n))
输出:
>>> decimalToBinary(100)
01100100
如何更改此设置,以便在输入100
时输出为1100100
,而不是01100100
?
答案 0 :(得分:0)
我的建议是
print(str(helper(n)).lstrip("0"))
或
print(str(helper(n))[1:])
除非helper(n)已经返回一个字符串,在这种情况下,请删除示例中的str()。
答案 1 :(得分:0)
使用某种修剪功能。
我相信python你会发现类似的东西:
trimStart("0") // example from C#
这是一种原始方法,但肯定会起作用:)
答案 2 :(得分:0)
在if n == 0: return ""
中使用空字符串跳过此零。
只有0
需要“前导零”,因此您必须使用额外的if
来识别此值并返回0
def decimalToBinary(n):
def helper(n):
if n == 0:
return '' # <- empty string
else:
if n%2 == 1:
binaryDigit = '1'
else:
binaryDigit = '0'
return helper(n//2) + binaryDigit
if n == 0:
result = '0' # <- "leading zero" only for `n == 0`
else:
result = helper(n)
print(result)
# --- test ---
for x in range(16):
decimalToBinary(x)
答案 3 :(得分:-2)
我很久以前在远处的一个星系中找到的东西:
n = 100
b = ''
while n > 0:
b = str(n % 2) + b
n >>= 1
print(b) # 1100100