Условия задачи:

 

Лотерея PowerBall. Для того чтобы сыграть в лотерею PowerBall, покупают билет, в ко­тором имеется пять чисел от 1 до 69 и число PowerBall в диапазоне от 1 до 26. (Эти чис­ла можно выбрать самому либо дать билетному автомату их выбрать за вас случайным
образом.) Затем в заданный день автомат случайным образом отбирает выигрышный рядчисел. Если первые пять чисел совпадают с первыми пятью выигрышными числами в любом порядке и ваше число PowerBall соответствует выигрышному числу PowerBall,
то вы выигрываете джек-пот, который составляет очень крупную сумму денег. Если ва­ши числа совпадают лишь с некоторыми выигрышными числами, то вы выигрываете меньшую сумму в зависимости от того, сколько выигрышных номеров совпало.
Среди исходного кода главы 8 вы найдете файл pbnumbers.txt, содержащий выигрышные номера PowerBall, которые бьши отобраны между 3 февраля 2010 года и 11 мая 2016 года (файл содержит 654 набора выигрышных чисел). На рис. 8.7 показаны первые
несколько строк этого файла. Каждая строка в файле содержит набор из шести чисел, которые бьши выбраны в заданную дату. Числа разделены пробелом, и последнее число в каждой строке является числом PowerBall для этого дня. Например, первая строка
в файле показывает числа за 3 февраля 2010 года, которые равнялись 17, 22, 36, 37, 52, и число PowerBall, равное 24. ]
Напишите одну или несколько программ, которые работают с этим файлом и показы­
вают:
-10 наиболее распространенных чисел, упорядоченных по частоте;
-10 наименее распространенных чисел, упорядоченных по частоте;
-10 наиболее "созревших" чисел (чисел, которые не использовались долгое время), упорядоченных от наиболее "созревших" до наименее "созревших";

-частоту каждого числа от 1 до 69 и частоту каждого PowerBall-чиcлa от 1 до 26.

 

Решение задачи:

def main():
    def get_lists():
        list_all = []
        list_game = []
        list_ball = []
        with open('pbnumbers.txt', 'r') as in_file:
            for i in in_file:
                line = in_file.readline().rstrip('\n').split()

                list_ball += line[5:]
                list_game += line[:5]
                list_all += line

        return list_all, list_game, list_ball
    list_all, list_game, list_ball = get_lists()
    def sort_unick(list_value):
        
        #nums_str = ' '.join(list_value)
        #print(nums_str)
       # nums_list = list(nums_str)
        #print(nums_list)
        unuck_list = []
        for i in list_value:
            if i not in unuck_list:
                unuck_list.append(i)
        nums_count_list = []
        for i in unuck_list:
            num_count= list_value.count(i)
            nums_count_list.append(num_count)

        for i in range(len(nums_count_list)):
            for c in range(len(nums_count_list)-1):
                if nums_count_list[c] > nums_count_list[c+1]:
                    nums_count_list[c], nums_count_list[c+1] = nums_count_list[c+1], nums_count_list[c]
                    unuck_list[c], unuck_list[c+1] = unuck_list[c+1], unuck_list[c]
        return unuck_list

    unick_list_all = sort_unick(list_all)
    print(f'1О наиболее распространенных чисел -{unick_list_all[-11 : -1]}\n'
          f'1О наименее распространенных чисел {unick_list_all[0:10]}')
    unick_list_game = sort_unick(list_game)
    print(f'Частота каждого числа от 1 до 69 {unick_list_game}')
    unick_list_ball = sort_unick(list_ball)
    print(f'Частота каждого PowerBall числа  {unick_list_ball}')
main()