python 문제풀이 복습 : 반복문 (tuple)

STUDY_J·2024년 7월 17일

파이썬 문제풀이

목록 보기
2/9

문제

사용자로부터 숫자 5개를 입력받고, 가장 큰 값을 찾아서 반환하는 함수를 작성하고, 가장 큰 입력값을 출력하는 프로그램을 작성하시오.

<요구사항>

  • 입력되는 숫자 5개는 모두 0보다 큰 양수로 가정함.
  • 자료의 정렬 알고리즘이 적용된 함수를 사용하지 않음.

손코딩 과정

1) 우선 def를 사용하여 프로그램을 작성해야한다.
2) 5개의 입력을 받는 것이 전제조건이므로 list(map(int, input().split())) 을 사용하여 5개의 정수를 입력받는다.
여기서 주의할 점은 5개의 입력을 받지 않는다면, 개수를 정확하게 입력하라는 조건문이 필요하다
3) 5개의 정수를 리스트로 입력받았으므로, max(list)를 사용하지 않고 리스트의 첫 번째 값을 가장 큰 값으로 가정한다
4) for문을 통해 리스트를 순회하며 첫 번째의 값과 각각의 값을 비교하며 큰 값을 가장 큰 값으로 저장한다.

코드 작성 및 결과 확인

def find_max():
    # 5개의 입력을 받아야 하는데, 이런식으로 작성하면 입력 값의 개수가 틀리면 다시 수행하라는 출려값을 내주어야함
    nums = list(map(int, input().split()))
    
    if len(nums) != 5:
        print(f'입력 값 : {nums}의 개수가 {len(nums)}개 입니다. 5개를 입력해주세요')

    else:
        max_nums = nums[0]

        for i in nums:
            if i > max_nums:
                max_nums = i

    return max_nums

result = find_max()
print(f'입력하신 5개의 정수에서 가장 큰 값은 {result}입니다')
# 입력 값 => 1 2 3 4 5
# 출력 : 입력하신 5개의 정수에서 가장 큰 값은 5입니다
  • 여기서 출력 값에 내가 입력한 정수 5개의 값을 나타내고 싶어 아래와 같이 수정해보았다.
  • 1) return 값을 tuple로 (가장 큰 값, 정수 5개의 리스트) 로 반환하도록 수정하였다
    2) print에서 tuple의 인덱스를 사용하여 tuple[0]. tuple[1]로 f-string을 사용하였다.
def find_max():
    # 5개의 입력을 받아야 하는데, 이런식으로 작성하면 입력 값의 개수가 틀리면 다시 수행하라는 출려값을 내주어야함
    nums = list(map(int, input().split()))
    
    if len(nums) != 5:
        print(f'입력 값 : {nums}의 개수가 {len(nums)}개 입니다. 5개를 입력해주세요')

    else:
        max_nums = nums[0]

        for i in nums:
            if i > max_nums:
                max_nums = i

    return max_nums, nums #return 값을 튜플로 반환하도록 수정하였다.

result = find_max()
print(f'입력하신 5개의 정수{result[1]}에서 가장 큰 값은 {result[0]}입니다')
# 입력 값 => 1 2 3 4 5
# 출력 : 입력하신 5개의 정수[1, 2, 3, 4, 5]에서 가장 큰 값은 5입니다

내가 원하는대로 출력되는 것을 확인하였다.

이 문제에서 복기할 내용은
1) 함수에서 반환 값을 tuple 또는 list로 할 수 있다는 점이다.
2) 반환 값을 변수애 지정하고 f-string을 사용하여 출력하면 원하는 출력 결과를 확인할 수 있다.

0개의 댓글