Python
파이썬으로 처음 코딩 공부를 시작하는데 어렵네요..

 이번에 파이썬을 시작으로 처음 코딩을 배우고 있습니다. 
 로또를 활용하여 리스트에서 모든 경우의 수를 뽑아내고 
 그 중 제가 원하는 범위만 추출하는 방식으로 프로그램을 만들고 있습니다. 
 그런데 이렇게 계속 if문을 반복해서 쓰는건 아닌 것 같아서 조언을 듣고 싶습니다. 
 보다 좋은 코드를 알려주시면 감사하겠습니다. 

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
21,22,23,24,25,26,27,28,29,30,
31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45
]

answer = []
def nCr(n, ans, r):
    if n == len(nums):
        if len(ans) == r:
            temp = [i for i in ans]
            answer.append(temp)
        return

    ans.append(nums[n])
    nCr(n + 1, ans, r)
    ans.pop()
    nCr(n + 1, ans, r)
nCr(0, [], 6)


for row in answer:
     if 21<sum(row)<37 :
      if 14<row[0]+row[1]+row[2]<91 :
          if 59<row[3]+row[4]+row[5]<131 :
            if 29< max(row)+min(row) <66 :
             if 16< max(row)-min(row) <44 :
                print(len(row))
                   print(row[0], row[1], row[2],row[3], row[4],row[5])


 '''            
- 모든 경우의 수 //

- 총합 90~200 //

- 가장 높은 수와 낮은 수의 합(30~65) //

- 가장 높은 수와 낮은 수의 차(17~43) //

- 1, 2, 3 자리 수 합 15~90 //

- 4,5,6 자리 수 합 60~130 //

- 첫수합(십의 자리 수 더한 총 합 3~19)

- 끝수합(일의 자리 수 더한 총 합 11~38)

- 일의 자리가 3개 이상 같은 경우 제거

- 3의 배수 (6개 중 1개~4개 포함)

- 5의 배수 (6개 중 0개~3개 포함)

- 25 이상만 제거 

- 25 이하만 제거 

- 홀수만 제거 %2 = 1

- 짝수만 제거 %2 = 0

- 연속수 (4자리 이상 연속/ 1234,891011…)

- 같은 자릿수 4개 이상 제외 

'''


#print(answer) #경우의 수 리스트
print(len(answer)) #총 경우의 갯수
from pprint import pprint
pprint(answer, indent=1, width=30)

 

댓글 2