파이썬 리스트에서 최대값, 최소값 찾기

파이썬을 활용한 게임 레벨 리스트화 및 최고/최저 레벨 찾기

게임을 하다 보면 청팀과 홍팀의 각 플레이어 레벨이 얼마나 되는지를 알고 싶은 순간이 있습니다. 특히, 최고 레벨의 플레이어와 최저 레벨의 플레이어가 누군지 아는 것은 전략을 세우는 데 유리합니다. 본 글에서는 파이썬의 map 함수를 이용하여 각 팀의 레벨을 리스트로 변환하고, 최고 및 최저 레벨을 찾아내는 방법을 단계별로 설명합니다.

파이썬의 map 함수와 리스트 변환

map 함수는 파이썬에서 매우 유용하게 사용되는 함수 중 하나로, 주로 입력 데이터를 변환하여 새로운 리스트를 만들 때 사용합니다. 이 함수는 기본적으로 두 개의 인자를 받으며, 첫 번째 인자는 적용할 함수, 두 번째 인자는 반복 가능한 데이터입니다. map 함수는 두 번째 인자에 있는 모든 요소에 첫 번째 인자로 받은 함수를 적용한 결과를 반환합니다.

예를 들어, 사용자가 게임 레벨을 공백으로 구분하여 입력한다고 가정해 보겠습니다. 이 입력값을 정수로 변환하여 리스트로 만드는 것이 목표입니다.

# 사용자 입력을 받아서 리스트로 변환하는 예제
# 방법 설명: str.split()과 map을 사용하여 문자열을 정수 리스트로 변환
level_input = "10 20 30 40 50"
levels = list(map(int, level_input.split()))
print(levels) # 출력: [10, 20, 30, 40, 50]

위 코드는 각 레벨을 공백으로 구분하여 입력받은 후 split() 메서드를 사용하여 문자열을 분리합니다. 그 후, map 함수를 통해 문자열을 정수로 변환합니다. 변환된 결과는 리스트로 변환하여 출력됩니다.

최고 및 최저 레벨 찾기

리스트에서 최고 혹은 최저 값을 찾는 것은 maxmin 함수를 사용하면 쉽게 할 수 있습니다. 이 함수들은 리스트 내의 숫자 중 최대값과 최소값을 각각 반환합니다. 이를 활용하여 청팀과 홍팀의 최고 및 최저 레벨을 뽑아낼 수 있습니다.

# 각각 최고 레벨과 최저 레벨을 찾는 방법
# 방법 설명: max()와 min() 함수를 사용하여 리스트 내의 최대값과 최소값 찾기
blue_team = [10, 20, 30, 40, 50]
red_team = [15, 25, 35, 45, 55]

max_blue = max(blue_team)
min_blue = min(blue_team)

max_red = max(red_team)
min_red = min(red_team)

print("청팀 최고 레벨:", max_blue)
print("청팀 최저 레벨:", min_blue)
print("홍팀 최고 레벨:", max_red)
print("홍팀 최저 레벨:", min_red)

위 코드에서는 각각의 팀 리스트에서 최고 및 최저 레벨을 maxmin 함수를 통해 찾아내어 출력합니다. 이로써 각 팀의 레벨 분포를 빠르게 파악할 수 있습니다.

입출력을 결합한 실용 프로그램

지금까지 설명한 내용을 바탕으로 사용자가 직접 두 팀의 레벨을 입력받아 최고 및 최저 레벨을 출력하는 실용 프로그램을 만들어 보겠습니다. 이 프로그램은 사용자가 두 줄로 청팀과 홍팀의 레벨을 입력하면, 각 팀의 최고 및 최저 레벨을 출력하는 간단한 프로그램입니다.

# 실용 프로그램 예제: 사용자 입력을 받아 각 팀의 최고 및 최저 레벨 출력
# 방법 설명: 입력받은 문자열을 map으로 리스트화 후 max/min으로 최대/최소값 출력
blue_input = input("청팀의 레벨 입력: ")
red_input = input("홍팀의 레벨 입력: ")

blue_levels = list(map(int, blue_input.split()))
red_levels = list(map(int, red_input.split()))

print("청팀 최고 레벨:", max(blue_levels))
print("청팀 최저 레벨:", min(blue_levels))
print("홍팀 최고 레벨:", max(red_levels))
print("홍팀 최저 레벨:", min(red_levels))

위 프로그램은 사용자가 입력한 문자열을 리스트로 변환한 후, 각 팀의 최고 및 최저 레벨을 출력합니다. 실무에서도 이러한 방식을 통해 다양한 입력 데이터를 처리할 수 있습니다.

함수를 이용한 효율적인 코드 구성

이제 코드를 조금 더 효율적으로 구성하기 위해 함수를 활용해 보겠습니다. 함수는 반복되는 코드를 줄이고, 가독성을 높이며, 유지보수가 용이하게 합니다. 이를 통해 입력받은 팀의 레벨을 처리하는 기능을 함수로 분리하여 코드를 구조화하겠습니다.

# 함수 도입: 각 팀의 레벨을 처리하는 함수 정의
# 함수 활용: 가독성과 재사용성 향상

def get_levels(team_name):
input_levels = input(f"{team_name}의 레벨 입력: ")
return list(map(int, input_levels.split()))

blue_team_levels = get_levels("청팀")
red_team_levels = get_levels("홍팀")

print("청팀 최고 레벨:", max(blue_team_levels))
print("청팀 최저 레벨:", min(blue_team_levels))
print("홍팀 최고 레벨:", max(red_team_levels))
print("홍팀 최저 레벨:", min(red_team_levels))

함수 get_levels를 도입하여 각 팀의 레벨을 입력받고 리스트로 변환하는 작업을 캡슐화하였습니다. 이를 통해 코드의 재사용성을 높이고, 유지보수를 용이하게 했습니다.

상급 예제를 통한 종합 실전

함수 활용을 넘어 클래스를 사용하여 더욱 구조화된 프로그램을 만들어 보겠습니다. 클래스는 데이터와 메서드를 하나의 객체로 묶어 복잡한 프로그램을 관리하기에 적합합니다.

# 클래스 도입: 팀 레벨을 관리하는 클래스 정의
# 클래스 활용: 객체지향 프로그래밍으로 구조화된 코드 작성

class Team:
def __init__(self, name):
self.name = name
self.levels = self.get_levels()

def get_levels(self):
input_levels = input(f"{self.name}의 레벨 입력: ")
return list(map(int, input_levels.split()))

def display_levels(self):
print(f"{self.name} 최고 레벨:", max(self.levels))
print(f"{self.name} 최저 레벨:", min(self.levels))

blue_team = Team("청팀")
red_team = Team("홍팀")

blue_team.display_levels()
red_team.display_levels()

위 클래스 Team은 팀 이름과 레벨을 입력받아 초기화하며, 최고 및 최저 레벨을 출력하는 메서드를 포함합니다. 객체지향 프로그래밍으로 코드의 구조를 개선하여 유지보수와 확장성을 크게 높였습니다.

#파이썬초급 #Python기초 #코딩독학 #map함수 #리스트변환 #최고레벨 #최저레벨 #청팀 #홍팀 #입력출력