如何在Python中用逗号格式化数字
我需要用Python 3.4写一个掷骰子的程序。程序运行得很好,但我想把结果显示成列表,而不是一行一行的。我还想在数字的合适地方加上逗号。请问我需要为每一个结果单独写一个打印函数吗?还是有更简单的方法?有没有办法在代码中全局应用这种格式?
我非常感谢任何帮助。
谢谢!
这是我的代码:
import random
random.seed()
I = 0
II = 0
III = 0
IV = 0
V = 0
VI = 0
for count in range(6000000):
die = random.randint(1, 6)
if die == 1:
I = I+1
elif die == 2:
II = II+1
elif die == 3:
III = III+1
elif die == 4:
IV = IV+1
elif die == 5:
V = V+1
else:
if die == 6:
VI = VI+1
print('Here are the results:', '1 =', V, '2 =', II, '3 =', III, '4 =', IV, \
'5 =', V, '6 =', VI)
print('Total Rolls equal:', I+II+III+IV+V+VI)
2 个回答
0
这里是你程序的简化版,并且用逗号作为千位分隔符:
import random
from collections import Counter
counts = Counter()
for count in range(6000000):
counts[random.randint(1, 6)] += 1
print('Here are the results:', end=' ')
for i, c in sorted(counts.items()):
print('{} = {:,}'.format(i, c), end=' ')
print('Total rolls equal: {:,}'.format(sum(counts.values())))
这样输出的结果和你例子中的一样,只是分隔符不同。不过我觉得去掉 end=' '
会让它看起来更好。
1
你可以用一个 dict
(字典)来存储你掷骰子的结果,这样做会简单很多。这样你就可以一次性处理所有结果,而不需要为每个结果写一个单独的 print
语句。这也会让你的代码变得更简洁!
举个例子:
import random
results = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}
for count in range(6000000):
die = random.randint(1, 6)
results[die] += 1
print('Here are the results:')
# Loop over the *keys* of the dictionary, which are the die numbers
for die in results:
# The format(..., ',d') function formats a number with thousands separators
print(die, '=', format(results[die], ',d'))
# Sum up all the die results and print them out
print('Total rolls equal:', sum(results.values()))
这里有一些示例输出:
Here are the results:
1 = 1,000,344
2 = 1,000,381
3 = 999,903
4 = 999,849
5 = 1,000,494
6 = 999,029
Total rolls equal: 6000000
需要注意的是,在这个简单的例子中,我们也可以用一个 list
(列表)来存储结果。不过,由于零索引和一索引之间的转换,代码会显得不太清晰。