문제 1
전자 상거래 플랫폼에서 고객의 평균 주문을 계산해야 합니다. 이를 위해 숫자 리스트의 평균을 계산하는 방법을 연습합니다. 주어진 숫자 리스트의 평균을 계산하는 함수를 작성하세요.
# 예시 데이터
numbers = [10, 20, 30, 40, 50]
def calculate_avg(numbers):
total_avg = sum(numbers)/len(numbers)
return total_avg
total_avg = calculate_avg(numbers)
print("숫자들의 평균:", total_avg)
문제 2
기상청에서는 하루 동안의, 가장 높았던 기온과 가장 낮았던 기온을 확인하고 일교차를 보고하고자 합니다. 하루 동안 기록된 기온 목록을 받아, 가장 낮은 기온과 가장 높은 기온을 활용하여 일교차를 함수를 작성하세요.
# 예시 데이터
numbers = [10, 20, 30, 40, 50]
def calculate_diff_temperature(numbers):
diff_temp = max(numbers) - min(numbers)
return diff_temp
diff_temp = calculate_diff_temperature(numbers)
print("일교차:", diff_temp)
문제 3
한 소매점에서는 다양한 제품을 판매하고 있습니다. 매월 판매된 제품들의 목록과 각 제품의 판매 수량이 기록됩니다. 이 데이터를 분석하여 가장 많이 판매된 제품을 찾아내려고 합니다. 제품 명과 판매 수량이 담긴 목록을 받아, 가장 많이 판매된 제품의 이름과 수량을 반환하는 함수를 작성하세요.
def find_top_seller(sales_data):
top_product = max(sales_data, key = sales_data.get)
return top_product
# 테스트
sales_data = {"apple": 50, "orange": 2, "banana": 30}
print(find_top_seller(sales_data))
문제 4
컴퓨터 과학 수업에서 학생들은 기본적인 프로그래밍 원리를 익히고, 실제 생활에 적용할 수 있는 간단한 프로그램을 만드는 연습을 합니다. 간단한 계산기를 만들어서 사칙연산을 수행할 수 있는 프로그램을 구현하는 것은 기본적인 프로그래밍 실습에 적합합니다. 두 숫자와 연산자를 입력받아, 해당 연산을 수행하고 결과를 반환하는 함수를 작성하세요.
def simple_calculator(num1, num2, operator):
try:
if operator == '+':
return num1 + num2
elif operator == '-':
return num1 - num2
elif operator == '*':
return num1 * num2
elif operator == '/':
return num1 / num2
except ZeroDivisionError:
print('Cannot divide by zero')
# 테스트
print(simple_calculator(10, 5, '+')) # 출력: 15
print(simple_calculator(10, 5, '-')) # 출력: 5
print(simple_calculator(10, 5, '*')) # 출력: 50
print(simple_calculator(10, 0, '/')) # 출력: 'Cannot divide by zero'
문제 5
당신은 회사의 고객 데이터베이스를 관리하고 있습니다. 데이터베이스에 저장된 고객의 이메일 주소가 유효한 형식을 갖추고 있는지 검증하는 작업이 필요합니다. 문자열 형태의 이메일 주소 목록을 분석하여, 각 이메일 주소가 올바른 형식을 갖추고 있는지 판단하는 프로그램을 작성하세요.
요구사항
▷ 각 이메일 주소가 올바른 형식을 갖추고 있는지 검사합니다. (문자열 메소드 사용)
▷ 올바른 형식의 이메일 주소인 경우, "유효한 이메일 주소입니다."를 출력합니다.
▷ 올바르지 않은 형식의 경우, "유효하지 않은 이메일 주소입니다."를 출력합니다.
def validate_emails(email_list):
for email in email_list:
if "@" in email:
s, z = email.split("@", 1)
if s and "." in z:
print(f"{email} 유효한 이메일 주소입니다.")
else:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
else:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
# 이메일 주소 목록 예시
email_list = [
"example@example.com",
"wrongemail@com",
"anotherexample.com",
"correct@email.co.uk"
]
# 함수 실행
validate_emails(email_list)
문제 6
당신은 대규모 텍스트 데이터를 분석하는 프로젝트를 진행하고 있습니다. 텍스트 데이터에서 특정 패턴을 찾아내는 작업을 수행해야 합니다. 이번 작업에서는 중복된 문자를 제거하고 각 문자가 한 번씩만 나타나게 하는 프로그램을 작성하는 것이 목표입니다. 하지만 각 문자는 처음 등장한 순서를 유지해야 하며, 추가적으로 각 문자가 등장하는 빈도를 함께 계산해야 합니다.
요구사항
▷ 주어진 문자열에서 중복된 문자를 제거합니다.
▷ 각 문자가 처음 등장한 순서를 유지합니다.
▷ 각 문자가 등장하는 빈도를 함께 출력합니다.
▷ 결과는 (문자, 빈도수) 형태의 튜플 리스트로 반환합니다.
# 예시 문자열
input_string = "abracadabra123321"
count = {}
for a in input_string:
try: count[a] += 1
except: count[a] = 1
result = list(zip(count.keys(), count.values()))
print(result)
문제 7
선수들의 위치 데이터가 주어졌을 때, 해당 데이터를 분석하여 경기 동안 각 선수가 이동한 총 누적 거리를 계산하는 프로그램을 작성하세요. 위치 데이터는 선수의 이름과 그에 따른 위치 좌표의 리스트를 포함하는 딕셔너리 형태로 제공됩니다. 각 좌표는 (x, y) 튜플로 표현됩니다. 선수는 경기 동안 여러 번 위치가 변경될 수 있으며, 각 위치는 이전 위치에서의 이동 거리를 기록합니다.
요구사항
▷ 유클리드 거리 공식을 사용하여 각 위치 변경 시 이동 거리를 계산합니다.
▷ 각 선수별로 경기 동안 이동한 총 누적 거리를 출력합니다.
'내배캠(개인과제) > Python' 카테고리의 다른 글
[개인과제] ML (0) | 2024.08.21 |
---|---|
[온라인강의] 데이터 시각화 - Matplotlib (0) | 2024.07.18 |
[온라인강의] 데이터 전처리 - Pandas (0) | 2024.07.18 |