有没有办法在Python中显示带有前导零的数据< = 9,但不使用字符串?
我帮助学生完成作业,他的模块计算随机数列表并将该列表返回给他的主程序。因此,在这种情况下无法使用format()。
import random
list = []
x = 0
while x < 6:
number = random.randint(1,70)
if number <= 9:
temp = str(number)
temp = temp.zfill(2)
list.append(temp)
else:
list.append(str(number))
x+=1
print(list)
示例输出:
['16', '41', '17', '40', '01', '28']
期望的输出:
[16, 41, 17, 40, 01, 28]
答案 0 :(得分:0)
嗯,您可以存储没有前导零的数字,然后在打印时可以将其格式化为带有前导零的字符串:
import random
lst = [] # Avoid using keywords
x = 0
while x < 6:
number = random.randint(1,70)
lst.append(number)
x+=1
print("[" + ", ".join(['%02d' % x for x in lst]) + "]")
最后一行非常奇怪,让我们分解一下:
'%02d' % x
是string formatting
['%02d' % x for x in lst]
在python中是list comprehension。
", ".join(...)
连接列表中用逗号分隔的所有元素。
然而,关于python的一个很酷的事情是你可以用简单的方式做复杂的事情,例如你的代码可以简化为几行代码:
import random
lst = random.sample(range(1, 70), 6)
print("[" + ", ".join(['%02d' % x for x in lst]) + "]")