我有一个正整数变量,其值可以在0到999之间.然后将该整数传递给软件.
要传入此软件,整数应始终为3位数.但问题是,它应该有尾随零.
例如:
1 should be passed as 100
19 should be passed as 190
255 should be passed as 255
Run Code Online (Sandbox Code Playgroud)
可以通过检查变量的长度并乘以10或100来完成,具体取决于长度.但有没有更好的Python替代方案.这对于值0也不起作用.
(注意:尾随零是因为整数值实际上是一个毫秒值.软件逐位读取值,它总是需要3位数)
Sha*_*ger 12
你甚至不需要格式化操作符,只需要简单的str方法.用零来正确地证明:
x.zfill(3)
Run Code Online (Sandbox Code Playgroud)
用零左对齐:
x.ljust(3, '0')
Run Code Online (Sandbox Code Playgroud)
如果当前是这样的话,你需要首先包装x在str这个场景中.此时,可能值得使用格式化运算符,因为其他人已经建议在需要调整时直接生成final ,而没有中间.xintstrstr
我不知道为什么零被砍掉(理想情况下你应该解决问题的根源),但是你可以将数字格式化为字符串然后将它们变回ints:
numbers = [1, 19, 255]
numbers = [int('{:<03}'.format(number)) for number in numbers]
Run Code Online (Sandbox Code Playgroud)
这左对齐每个数字<,在3字符宽的字段中填充额外的字符0.
您可以通过使用ljust和执行此操作str,然后将结果转换为int.
>>> numbers = [1, 19, 255]
>>> [int(str(num).ljust(3, '0')) for num in numbers]
[100, 190, 255]
Run Code Online (Sandbox Code Playgroud)
更多信息请ljust访问:https:
//docs.python.org/2/library/stdtypes.html#string-methods