Я получил эту функцию и из счетчика я хотел извлечь числа каждого элемента в списке и преобразовать их в проценты, чтобы я мог знать процент каждого элемента в списке.

from collections import Counter
import random

dice_rolls = []
for i in range(0, dice_amount):
    dice_rolls.append(random.randint(1,dice_face))
num = Counter(dice_rolls)
-1
Samuel Molero Badia 27 Сен 2022 в 22:02
total = sum(num.values(); percentages = {roll: count * 100.0 / total for roll, count in num.items()}
 – 
0x5453
27 Сен 2022 в 22:08

1 ответ

Конечно - получите общее количество с помощью sum по значениям счетчика (хотя вы могли бы просто использовать len(dice_rolls) или dice_amount для этого, конечно), а затем распечатать.

Counter - это словарь, поэтому вы можете просто использовать .items(), но вы также можете использовать .most_common(), что дает пары в порядке убывания счета.

import collections
import random

dice_rolls = []
dice_amount = 42
dice_face = 6
for i in range(dice_amount):
    dice_rolls.append(random.randint(1, dice_face))
num = collections.Counter(dice_rolls)

total = sum(num.values())
for face, count in num.most_common():
    print(f"{face}: {count} ({count/total:.2%})")

Распечатывает, например

6: 8 (19.05%)
3: 8 (19.05%)
2: 7 (16.67%)
1: 7 (16.67%)
4: 6 (14.29%)
5: 6 (14.29%)
2
AKX 27 Сен 2022 в 22:08