Условия задачи:
Лотерея 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()