Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

사용자로부터 세 자리 숫자를 입력받아 가능한 모든 조합을 출력하는 Python 프로그램

사용자로부터 입력받은 숫자들로 만들 수 있는 모든 조합을 출력해야 할 때는 중첩 루프(nested loop)를 활용하면 간단하게 해결할 수 있습니다. 이 글에서는 Python으로 세 개의 숫자를 입력받고, 해당 숫자들로 만들 수 있는 모든 조합을 화면에 출력하는 프로그램을 단계별로 살펴보겠습니다.

예제 코드

first_num = int(input("첫 번째 숫자를 입력하세요 : "))
second_num = int(input("두 번째 숫자를 입력하세요 : "))
third_num = int(input("세 번째 숫자를 입력하세요 : "))
my_list = []
print("입력된 첫 번째 숫자는 ")
print(first_num)
print("입력된 두 번째 숫자는 ")
print(second_num)
print("입력된 세 번째 숫자는 ")
print(third_num)

my_list.append(first_num)
my_list.append(second_num)
my_list.append(third_num)

for i in range(0, 3):
    for j in range(0, 3):
        for k in range(0, 3):
            if(i != j and j != k and k != i):
                print(my_list[i], my_list[j], my_list[k])

실행 결과

첫 번째 숫자를 입력하세요 : 3
두 번째 숫자를 입력하세요 : 5
세 번째 숫자를 입력하세요 : 8
입력된 첫 번째 숫자는 
3
입력된 두 번째 숫자는 
5
입력된 세 번째 숫자는 
8
3 5 8
3 8 5
5 3 8
5 8 3
8 3 5
8 5 3

코드 설명

  • 사용자로부터 세 개의 숫자를 차례대로 입력받습니다.

  • 조합을 저장하기 위한 빈 리스트(my_list)가 생성됩니다.

  • 입력받은 세 개의 숫자가 콘솔에 출력됩니다.

  • append() 메서드를 사용해 세 숫자를 리스트에 추가합니다.

  • 세 겹의 중첩 for 루프를 사용해 리스트의 요소들을 반복 탐색합니다.

  • if 조건문에서 세 인덱스가 서로 다른 경우에만 조합을 출력합니다. 즉, 같은 숫자가 중복되는 조합은 자동으로 제외됩니다.

더 간결한 방법: itertools 활용

위 방식 외에도 Python 표준 라이브러리인 itertoolspermutations 함수를 사용하면 훨씬 간결하게 동일한 결과를 얻을 수 있습니다.

from itertools import permutations

nums = [3, 5, 8]
for combo in permutations(nums):
    print(*combo)

permutations는 주어진 시퀀스의 모든 순열을 자동으로 생성해 주므로, 중복 제거 로직을 직접 작성할 필요가 없습니다. 실무에서는 코드 가독성과 유지보수 측면에서 이 방법을 권장합니다.