2014-06-23 2 views
0

저는 파이썬에 익숙하지 않고 어지럽 혀서 빨리 배우려고합니다. 그래서 로또 프로그램을 만들기로 결정했습니다. 그것의 선택 3, 숫자 0-9, 0-0-0에서 9-9-9까지 세 숫자를 선택하십시오. 과거에 호출 된 모든 숫자를 변수 또는 튜플에 추가하고 싶습니다. 이 변수 또는 튜플은 결과를 인쇄하기 전에 검사됩니다. 이것은 내가 지금까지 얻은 것이다.첫 번째 파이썬 프로그램 "로또 예측"

import random 
    items = range (10) 
    random.sample([items]), 3 
    [4, 0, 2] # result 

대부분의 전화 번호를 기준으로 과거 그리기 결과와 결과를 숫자로 변수를 설정하려면 어떻게해야합니까?

도움을 주시면 감사하겠습니다.

감사

+2

나는 실제 질문을 볼 수 없습니다. –

+0

"가져 오기 무작위"가 아니라 "임의로 가져 오기"입니다. 대문자 사용이 중요합니다. –

+0

'random.sample (items, 3)'를 사용 하시겠습니까? 'random.sample'은'items'에서 3 * unique * 수를 선택하여 터플로 묶습니다. 이렇게하면 (1,1,1) 또는 (2,2,3)과 같은 튜플을 얻을 수있는 가능성이 사라집니다. – Shashank

답변

2

가져 오 개 누구와도 바꿀 수없는 다이애나 번호

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]] 

1,000 누구와도 바꿀 수없는 다이애나하지 번호를 확인하고

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 번, 0 123, (5, 4, 9) - 6 회
(1, 0, 3) - 5 회


EDIT : 숫자 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'] 
+0

도와 주셔서 감사합니다. 나는 이것을 조금 더 발전시키고 싶다. 나는 모든 이전 우승 번호가 저장되는 변수를 만들려고합니다. 이를 기반으로 다음에 전화 할 수있는 10 개 또는 20 개의 숫자 목록을 원합니다. 따라서 이전에 그려진 숫자 목록에서 가장 일반적인 것이 인쇄되거나 결합됩니다 (예 : 1 번은 5 번, 2 번은 4 번, 3 번은 3 번 그리기 때문에 1,2,3 번 함께 배치됩니다) 또한 반복 번호 111, 222, 004 등을 얻을 필요가 있습니다. – user3765901

+0

내 대답을 다시보십시오. – furas

관련 문제