#python
#python
Вопрос:
Я новичок в python и пытаюсь быстро освоить его, путаясь. Поэтому я решил создать программу для лото. Выберите 3, числа 0-9, выберите три числа от 0-0-0 до 9-9-9. Я хотел бы добавить все числа, которые вызывались в прошлом, в переменную или кортеж. Эта переменная или кортеж проверяется перед печатью результатов. Это то, что я получил до сих пор.
import random
items = range (10)
random.sample([items]), 3
[4, 0, 2] # result
Как мне настроить переменную с числовыми результатами прошлых розыгрышей и результатами печати на основе большинства вызываемых?
Любая помощь будет оценена.
Спасибо
Комментарии:
1. Я не вижу никакого реального вопроса.
2. Это «случайный импорт», а не «Случайный импорт». Капитализация важна.
3. Вы уверены, что хотите использовать
random.sample(items, 3)
?random.sample
выберет 3 уникальных номераitems
и свяжет их как кортеж. Таким образом, делая это, вы лишаете себя возможности получать кортежи типа (1,1,1) или (2,2,3) .4. Что вы предлагаете мне использовать?
Ответ №1:
Получаем 5 одинаковых чисел
import random
items = range(10)
results = []
while len(results) < 5:
number = random.sample(items, 3)
if number not in results:
results.append(number)
print results
[[2, 6, 3], [8, 0, 4], [0, 3, 4], [7, 8, 6], [2, 6, 9]]
Получите 1000 не уникальных чисел и получите 3 наиболее распространенных результата
import random
import collections
items = range(10)
results = collections.Counter()
for __ in range(1000):
number = random.sample(items, 3)
results.update([tuple(number)])
print results.most_common(3)
[((2, 0, 6), 6), ((5, 4, 9), 6), ((1, 0, 3), 5)]
Я получил:
(2, 0, 6) — 6 раз,
(5, 4, 9) — 6 времена,
(1, 0, 3) — 5 времена,
Редактировать:
С числами 000
, 111
, 222
и сгруппированы по количеству выпавших.
import random
import collections
results = collections.Counter()
for __ in range(50):
digit1 = random.randint(0,9)
digit2 = random.randint(0,9)
digit3 = random.randint(0,9)
# results.update([(digit1,digit2,digit3)])
results.update([ '%d%d%d' % (digit1,digit2,digit3) ])
#print results
print
print '3 most common numbers:', results.most_common(3)
print
print '3 most common numbers:'
for x in results.most_common(3):
print '%s - %d times' % x
grouped_results = {}
for number, times in results.items():
if times not in grouped_results:
grouped_results[times] = []
grouped_results[times].append(number)
print
print 'grouped results:', grouped_results
for times, numbers in grouped_results.items():
print
print 'drawn %d time(s):' % times
print numbers
Результаты:
3 most common numbers: [('152', 2), ('799', 2), ('088', 2)]
3 most common numbers:
152 - 2 times
799 - 2 times
088 - 2 times
grouped results: {1: ['458', '603', '335', '660', '012', '750', '396', '177', '176', '399', '497', '231', '254', '641', '694', '956', '322', '938', '918', '917', '586', '587', '584', '140', '069', '082', '299', '779', '617', '462', '025', '267', '169', '226', '084', '840', '909', '537', '929', '350', '824', '513'], 2: ['152', '799', '088', '261']}
drawn 1 time(s):
['458', '603', '335', '660', '012', '750', '396', '177', '176', '399', '497', '231', '254', '641', '694', '956', '322', '938', '918', '917', '586', '587', '584', '140', '069', '082', '299', '779', '617', '462', '025', '267', '169', '226', '084', '840', '909', '537', '929', '350', '824', '513']
drawn 2 time(s):
['152', '799', '088', '261']
Комментарии:
1. ПРИВЕТ, спасибо за вашу помощь. Я хотел бы развить это немного дальше. Я пытаюсь создать переменную, в которой хранятся все предыдущие выигрышные номера. Исходя из этого, я хотел бы получить список из 10 или 20 чисел, которые можно было бы вызвать следующим. Итак, из списка ранее нарисованных чисел наиболее распространенные печатаются или соединяются вместе (например, 1 был нарисован 5 раз, в то время как 2 был нарисован 4 раза, а 3 был нарисован 3 раза. итак, 1,2,3 будут размещены вместе) Также необходимо получить повторяющиеся числа 111, 222, 004 и т.д.