我的程序旨在生成彩票号码。我想用一位数字在前面填充零。例如02.我尝试了zfill(2)
和'.02d'
的各种方式,但仍然找不到我做错的事情。
from random import randint, sample
lotteryNumbers = []
for number in range(0,10):
lotteryNumbers.append(sorted(sample(range(69), 5)))
r = randint(1,26)
lotteryNumbers[number].append('PB: ' +str(r))
print(' QP','A.', format(lotteryNumbers[0], '02d'))
print(' QP','B.', format(lotteryNumbers[1]))
# TypeError: unsupported format string passed to list.__format__
答案 0 :(得分:0)
您的lotteryNumbers
元素是由 string 组成的5个数字的异构列表,例如:
>>> lotteryNumbers[0]
[11, 52, 54, 61, 68, 'PB: 8']
但是内置的format
函数使用'02d'格式规范,可以在数字上使用。它不适用于列表。
>>> format(8, '02d')
'08'
>>> format([8], '02d')
TypeError: unsupported format string passed to list.__format__
我的建议是仅在列表中存储数字,即使数据同质,然后编写用于显示/格式化数据的单独功能。此函数应接受数字列表作为输入。
请参阅https://pyformat.info,以获取有关Python中字符串格式化的良好资源。