카테고리 없음

TIL_20250609 (월) 파이썬 개인과제 문제 1~5번 풀이과정

elya0919 2025. 6. 9. 22:15
문제 1: 숫자 리스트의 평균 계산하기
# - **배경**: 한 소매점에서 재고를 계산해야 합니다. 주어진 재고의 평균을 계산해보세요.
# - **문제 의도**
#     - 리스트의 자료형을 이해
#     - 내장 함수의 활용
# - **요구 사항**
#     - 함수명: `calcuate_stock`
#     - 해당 함수는 리스트의 전달 인자를 받음

numbers = [10, 20, 30, 40, 50]

def calculate_stock(numbers):
    answer = sum(numbers)/len(numbers) 
    return answer

calculate_stock(numbers)

 

  • 풀이과정

sum(numbers) → 리스트의 모든 값을 더한다.

 

len(numbers) → 리스트에 몇 개의 값이 있는지 센다.

 

둘을 나누면 평균값이 나온다.

 

 

 문제 2: 계산기 만들기
# - **배경**: 컴퓨터 과학 수업에서 학생들은 기본적인 프로그래밍 원리를 익히고, 실제 생활에 적용할 수 있는 간단한 프로그램을 만드는 연습을 합니다. 이를 간단한 형태로 변환하여 함수형으로 만들어 보겠습니다.
# - **문제 의도**
#     - 전달 인자의 입력에 대한 이해
#     - 조건문에 대한 이해
# - **요구 사항**
#     - 함수명: `simple_calculator`
#     - `num1` , `num2` : 숫자 입력 값
#     - `operator` : 문자열 형태의 사칙 연산자 (+, -, * , /)
#     - 나누려는 숫자 `num2` 가 0인 경우 다음 문자를 반환 “**Cannot divide by zero**”

def simple_calculator(num1, num2, operator):
	if operator == "+":
		return num1 + num2
	elif operator == "-":
		return num1 - num2
	elif operator == "*":
		return num1 * num2
	elif operator == "/":
		if num2 != 0:
			return num1/num2
		else:
			return "Cannot divide by zero"

 

풀이과정

 

  • if-elif 문으로 각 연산자 종류에 따라 처리
  • 나눗셈일 때는 0으로 나누는 오류 방지를 위해 if num2 != 0 조건 추가
  • 조건을 만족하면 연산 결과 반환, 아니면 오류 메시지 출력

 

 

 

문제 3: 가장 큰 값 구하기
# - **배경**: 한 소매점에서  가장 많은 제품을 가지고 있는 상품을 찾아야 합니다. 딕셔너리 형태로 저장된 재고 현황을 전달하면 가장 많이 있는 상품과 해당 상품의 수량을 반환하세요.
# - **문제 의도**
#     - 딕셔너리 자료형의 이해
#     - 딕셔너리 자료형과 내장 함수의 조합 혹은 **최대 값 찾기** 알고리즘 구현
# - **요구 사항**
#     - 함수명: `find_top_seller`
#     - 해당 함수는 딕셔너리의 전달 인자를 받음

sales_data = {"apple": 50, "orange": 2, "banana" : 30}

def find_top_seller(sales_data):
	top_product = max(sales_data, key=sales_data.get)
	max_sales = max(sales_data.values())
	return top_product, max_sales

print(find_top_seller(sales_data))
# max(sales_data, key=sales_data.get) 
# = sales_data 값에서 제일 큰 값을 찾는데
# key=sales_data_get // ()쓰면 오류남 -> 인자가 없으면 안됌 그래서 그냥 () 없이 사용
# 그래서 저 코드 뜻은 세일스 데이터에서 가장 큰 값을 찾는데 // 키는 세일스데이터를 순회하면서

 

풀이과정

딕셔너리 자료형에서 max값의 Key와 value 도출해야함

 

top_product = max(sales_data, key=sales_data.get)

 

  • max(sales_data)key만 비교하므로 알파벳 순서상 가장 뒤에 있는 "orange"가 나옴.
  • max()가 내부적으로 sales_data.get(key)를 실행하게 만든다.
  • get 뒤에 괄호 ()를 붙이지 않는 이유는 지금 실행하는 게 아니라, 함수 자체를 넘기는 것이기 때문
  • value 기준으로 가장 큰 key를 찾으려면, key=sales_data.get을 붙여서

 

max_sales = max(sales_data.values())

 

  • 딕셔너리의 value 목록만 뽑아서 (.values())
  • 그 중 **가장 큰 숫자(수량)**를 구함