请提供帮助。我有下面的练习,但我无法让我的代码工作。
对于每个正的总数n,你可以确定一个由两个数字m和p组成的唯一代码
- 步骤1:将n写为二进制系统中的一个数字,作为二进制数字b。请参阅下面的解释
- 第二步:把b倒写成一个二进制数a
- 第三步:数字m是从数字1开始的零的数量
- 第4步:通过将二进制数写为十进制中的数字来获得数字
例如,假设n=202。
- 二进制,你可以写为1100010
- 如果你把它倒过来写,你会得到01010011
- 这个数字以1乘以0开始
- 如果你忽略了这一点,你会得到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'