본문 바로가기
코딩 연습/파이썬 기초(예제)

입력된 숫자에서 홀수 찾기, 원하는 숫자 들어간 숫자 찾기, 자주 사용된 숫자 찾기

by good4me 2022. 5. 11.

goodthings4me.tistory.com

[파이썬기초예제] 네이버 지식인에 올라온 문제를 코딩한 것. 숫자 6개를 키보드로부터 입력받아서 '홀수 찾기, 원하는 숫자가 들어간 수 찾기, 가장 많이 나온 숫자 찾기, 종료' 메뉴를 만들고 각각 실행 결과를 출력한다.

 

 

입력된 숫자에서 홀수, 최대 사용된 숫자 등 찾기

본 문제에서 재미있는 점은

  • 입력된 6개의 숫자에 대해 0~9 사이 중 어떤 숫자를 입력하면 6개의 숫자에 대해 찾는 것과
  • 입력된 6개의 숫자를 문자열로 보고 0~9의 각 숫자가 몇 번 있는지 찾는 부분이다.

   

[파이썬 소스 코드]

def main():
    numbers = []
    print('*숫자 6개를 입력하세요. 숫자는 (1~99)까지의 자연수 값만 입력해야 합니다. *')
    cnt = 1
    while True:
        if len(numbers) == 6:
            break
        try:
            num = int(input(f'{cnt}번째 숫자는 ? > '))
            if num <= 0 or num > 99:
                print('(1~99)까지 값만 입력해야 합니다. 다시 입력하세요.')
                continue
            numbers.append(num)
            cnt += 1
        except:
            print('숫자를 입력하세요!')
            continue

    # print(f'\n입력된 숫자 ({", ".join(str(n) for n in numbers)})')
    print(f'\n입력된 숫자 {tuple(numbers)}')
    while True:
        print('-----------------------------')
        print('1. 홀수 찾기')
        print('2. 원하는 숫자가 들어간 수 찾기')
        print('3. 가장 많이 나온 숫자 찾기')
        print('4. 종료')
        print('-----------------------------\n')  

        select_no = int(input('번호 선택(1~4): '))

        if select_no == 1:
            for i in numbers:
                if i % 2 != 0:
                    print(i, end=' ')
            print()

        if select_no == 2:
            num = input('어떤 숫자가 들어간 수를 찾고 싶나요?\n(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)중 입력하세요. : ')
            for n in numbers:
                if num in str(n):
                    print(n, end=' ')
            print()

        if select_no == 3:
            nums = [i for n in numbers for i in str(n)]
            n_dict = {}

            for i in range(10):
                n_dict[i] = nums.count(str(i))

            for k, v in n_dict.items():
                if max(n_dict.values()) == v:
                    print(f'숫자: {k} - 횟수: {v}')
    
        if select_no == 4:
            break

main()
  • 입력된 숫자 6개 중 0~9에서 선택한 숫자가 들어간 입력된 숫자를 찾는 부분(select_no == 2)은 6개의 숫자를 str()로 만들어서 찾는 숫자가 포함이 되었는지 확인하고 출력한다.
  • 0~9 숫자가 입력된 6개의 숫자에 몇 개씩 있는지 확인하여 최대 사용 횟수의 숫자를 찾는 부분(select_no == 3)에서는 이중 for문을 리스트 컴프리헨션으로 처리한 후 각 숫자의 사용 횟수를 딕셔너리에 추가하고 딕셔너리 값 중 최대값(max(n_dict.values()))과 일치하는 모든 숫자를 찾아 출력한다.

 

[실행 결과]

*숫자 6개를 입력하세요. 숫자는 (1~99)까지의 자연수 값만 입력해야 합니다. *
1번째 숫자는 ? > 43
2번째 숫자는 ? > 392
(1~99)까지 값만 입력해야 합니다. 다시 입력하세요.
2번째 숫자는 ? > 92
3번째 숫자는 ? > -21
(1~99)까지 값만 입력해야 합니다. 다시 입력하세요.
3번째 숫자는 ? > a2
숫자를 입력하세요!
3번째 숫자는 ? > 21
4번째 숫자는 ? > 24
5번째 숫자는 ? > 44
6번째 숫자는 ? > 2

입력된 숫자 (43, 92, 21, 24, 44, 2)
----------------------------- 
1. 홀수 찾기
2. 원하는 숫자가 들어간 수 찾기
3. 가장 많이 나온 숫자 찾기    
4. 종료
-----------------------------  

번호 선택(1~4): 1
43 21
-----------------------------  
1. 홀수 찾기
2. 원하는 숫자가 들어간 수 찾기
3. 가장 많이 나온 숫자 찾기    
4. 종료
-----------------------------  

번호 선택(1~4): 2
어떤 숫자가 들어간 수를 찾고 싶나요?
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)중 입력하세요. : 4
43 24 44
-----------------------------  
1. 홀수 찾기
2. 원하는 숫자가 들어간 수 찾기
3. 가장 많이 나온 숫자 찾기    
4. 종료
-----------------------------  

번호 선택(1~4): 3
숫자: 2 - 횟수: 4
숫자: 4 - 횟수: 4
-----------------------------  
1. 홀수 찾기
2. 원하는 숫자가 들어간 수 찾기
3. 가장 많이 나온 숫자 찾기    
4. 종료
-----------------------------  

번호 선택(1~4): 4

 

 

good4me.co.kr

 

 

 

댓글