我的代码似乎在int(number)的第2行中断了,但我不知道为什么



请提供帮助。我有下面的练习,但我无法让我的代码工作。


对于每个正的总数n,你可以确定一个由两个数字m和p组成的唯一代码

  • 步骤1:将n写为二进制系统中的一个数字,作为二进制数字b。请参阅下面的解释
  • 第二步:把b倒写成一个二进制数a
  • 第三步:数字m是从数字1开始的零的数量
  • 第4步:通过将二进制数写为十进制中的数字来获得数字

例如,假设n=202。

  1. 二进制,你可以写为1100010
  2. 如果你把它倒过来写,你会得到01010011
  3. 这个数字以1乘以0开始
  4. 如果你忽略了这一点,你会得到1010011。用十进制再写一遍,你得到83

202的AB代码则是对1和83。编写一个程序,在最少的标准输入中取一个数字n。0<n<1000000000申请
程序将两行写入标准输出。第一行是数字m,第二行是数字p。

示例:
输入:202
输出:1 83


number = input()
a = f'{​​​​​​int(number):0b}​​​​​​'
a = str(a)
code = []
zeroes = 0
for i in a:
code.append(i)
code.reverse()
while True:
if code[0] == "0":
code.pop(0)
zeroes = zeroes + 1 
else:
break 
x = ''
for i in range(len(code)):
x = x + code[i]
newnum = int(x ,2)
print(str(zeroes))
print(newnum)

我不确定,但fString语句正确吗?或者应该是这样的:

f'int({number}(:0b'

最新更新