我有一个正整数变量,其值可以在0到999之间。然后将这个整数传递给一个软件。
要传入此软件,整数应始终为3位数。但问题是,它应该有尾随零。
例如:
1 should be passed as 100
19 should be passed as 190
255 should be passed as 255
可以通过检查变量的长度并乘以10或100来完成,具体取决于长度。但有没有更好的Python替代方案。这对于值0也不起作用。
(注意:尾随零是因为整数值实际上是一个毫秒值。软件逐位读取值,它总是需要3位数)
答案 0 :(得分:10)
您甚至不需要格式化运算符,只需要普通的str
方法。用零判断右对齐:
x.zfill(3)
左对齐零:
x.ljust(3, '0')
如果x
当前是str
,则您需要先在此x
int
中填充str
。此时,可能值得使用格式化运算符,因为其他人建议在需要调整时直接生成最终str
,没有中间<form action="duel.php" name="duel" id="duel">
<input type="text" id="betamount" name="betamount">
<?php
$data = $_GET['betamount'];
echo $data;
?>
</form>
。
答案 1 :(得分:5)
我不知道为什么零被砍掉(理想情况下你应该解决问题的根源),但你可以将数字格式化为字符串,然后将它们转回int
s:
numbers = [1, 19, 255]
numbers = [int('{:<03}'.format(number)) for number in numbers]
左对齐每个号码<
,字段3
字符宽,用0
填充额外字符。
答案 2 :(得分:5)
您可以使用ljust
和str
执行此操作,然后将结果转换为int
。
>>> numbers = [1, 19, 255]
>>> [int(str(num).ljust(3, '0')) for num in numbers]
[100, 190, 255]
有关ljust
的更多信息,请点击此处:
https://docs.python.org/2/library/stdtypes.html#string-methods
答案 3 :(得分:2)
如问题中所述,毫秒应该是1 -> 001
,而不是100
。一毫秒是千分之一秒,而不是十分之一。
[str(num).zfill(3) for num in numbers]
或使用具有相反路线的Tigerhawk方法:
["{:>03}".format(num) for num in numbers]