如何在Python中用逗号格式化数字

-5 投票
2 回答
2971 浏览
提问于 2025-04-18 02:36

我需要用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(列表)来存储结果。不过,由于零索引和一索引之间的转换,代码会显得不太清晰。

撰写回答