故事如下。用户输入一个数字。Python将字符串转换为int,并使用算法生成二进制数。例如:
firstdecimal=input("Please enter your first denary number: ")
> 45
StrToInt = int(firstdecimal)
InputInt = ToBin(StrToInt) # a working binary conversion function
print(InputInt)
> [1, 0, 1, 1, 0, 1]
我需要的是函数Addzero(x)
能够获得二进制数字列表(InputInt
),并将0
s添加到开头。如果列表中已经有8
元素,则不需要添加0
。在
我找不到允许我在开头添加元素的代码,所以我只是实现了一个反向特性来避开它。在
当我打印这个函数的内容时。。。在
> None
这显然不是预期的结果。我需要输出。(一个完整的8
元素列表,由0
、1
组成)
像这样:
> [0, 0, 1, 0, 1, 1, 0, 1]
我想其他解决方案也很合适,但为什么不直接使用:
注意,格式字符串中的}将被转换为一个零填充的8长度二进制字符串。在
08b
表示参数{它返回
None
的原因很简单,因为您的return
语句缺少一个表达式:因此,
return
的意思是:“我们完成了,停止执行这个函数,不应该返回任何东西。”。在而且,并不是所有的代码路径都会执行return语句。最后,你的
AddZero
似乎只添加了一个单零,这可能是低效的。在更好的解决方案可能是:
^{pr2}$这里的表达式}。现在我们需要添加这个的次数是
[0]*n
表示在列表中重复0
n次。所以[0]*4
将产生{max(0,8-len(value))
。实际上,max(0,...)
甚至不需要,因此可以将其重写为:因此,这意味着我们必须缩短生成八项列表的元素数量被构造为一个零的列表。我们用
+
将原始列表添加(追加)到它。在正如@Later42在his answer中所示,您可以通过先执行
len
检查来提高效率,如果它等于8,则返回列表本身:演示使用Python的交互式shell:
这可能有用吗?我没有亲自测试过,但我觉得应该没问题。在
相关问题 更多 >
编程相关推荐