Q1. 주어진 숫자 리스트의 평균을 계산하는 함수를 작성하세요.
def calculate_avg(numbers):
total = sum(numbers)
length = len(numbers)
total_avg = total/length
return total_avg
numbers = [10, 20, 30, 40, 50]
total_avg = calculate_avg(numbers)
print("숫자들의 평균:", total_avg)
# 결과
숫자들의 평균 : 30.0
Q2. 하루 동안 기록된 기온 목록을 받아, 가장 낮은 기온과 가장 높은 기온을 활용하여 일교차를 함수를 작성하세요.
def calculate_diff_temperature(numbers):
max_temp = max(numbers)
min_temp = min(numbers)
diff_temp = max_temp-min_temp
return diff_temp
numbers = [10, 20, 30, 40, 50]
diff_temp= calculate_diff_temperature(numbers)
print("일교차:", diff_temp)
# 결과
일교차: 40
Q3. 제품 명과 판매 수량이 담긴 목록을 받아, 가장 많이 판매된 제품의 이름과 수량을 반환하는 함수를 작성하세요.
최대값 찾는 알고리즘
max_n = 0
for n in range x
if n > max_n:
max_n = n
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))
# 결과
apple
# 강의 풀이
max_value = 0
for key, value
Q4. 두 숫자와 연산자를 입력받아, 해당 연산을 수행하고 결과를 반환하는 함수를 작성하세요.
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 'Cannot divide by zero'
else:
return num1 / num2
print(simple_calculator(10, 5, '+'))
print(simple_calculator(10, 5, '-'))
print(simple_calculator(10, 5, '*'))
print(simple_calculator(10, 0, '/'))
# 결과
15
5
50
Cannot divide by zero
Q5. 문자열 형태의 이메일 주소 목록을 분석하여, 각 이메일 주소가 올바른 형식을 갖추고 있는지 판단하는 프로그램을 작성하세요.
def validate_emails(email_list):
collect_email = re.compile(r'^[a-zA-z]+[@]+[a-zA-Z]+\.')
for email in email_list:
if re.match(collect_email, email):
print(f"{email} 유효한 이메일 주소입니다.")
else:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
email_list = [
"example@example.com",
"wrongemail@com",
"anotherexample.com",
"correct@email.co.uk"
]
# 이메일 유효성 검사 실행
validate_emails(email_list)
# 결과
example@example.com 유효한 이메일 주소입니다.
wrongemail@com 유효하지 않은 이메일 주소입니다.
anotherexample.com 유효하지 않은 이메일 주소입니다.
correct@email.co.uk 유효한 이메일 주소입니다.
Q6. 주어진 문자열에서 중복된 문자를 제거하고, 각 문자가 처음 등장한 순서대로 한 번씩만 나타나게 하며, 각 문자가 등장하는 빈도를 함께 출력하는 프로그램을 작성하세요.
def remove_duplicates_and_count(s):
result_with_frequency = {}
for i in s:
if i in result_with_frequency:
result_with_frequency[i] += 1
else:
result_with_frequency[i] = 1
return list(zip(result_with_frequency.keys(), result_with_frequency.values())) # 튜플 리스트로 변환
# 예시 문자열
input_string = "abracadabra123321"
# 중복 문자 제거 및 빈도수 계산 실행
result = remove_duplicates_and_count(input_string)
print(result)
# 결과
[('a', 5), ('b', 2), ('r', 2), ('c', 1), ('d', 1), ('1', 2), ('2', 2), ('3', 2)]
Q7. 선수들의 위치 데이터가 주어졌을 때, 해당 데이터를 분석하여 경기 동안 각 선수가 이동한 총 누적 거리를 계산하는 프로그램을 작성하세요.
# 답이 다름
def calculate_total_distances(player_positions):
for i in player_positions:
a, b = i
c = 0
for l in range(len(b)-1):
x1= b[l+1][0]
c += (b[l+1][0] - b[l][0])**2 + (b[l+1][1]-b[l][1])**2
print(f'{a}의 총 누적 이동 거리: {c}미터')
Q8. 영어와 한글이 섞인 숫자들이 문자열 형태로 주어집니다. 이를 아라비아 숫자형태로 바꾸어서 출력하고, 한글로 적인 숫자의 개수, 영어로 적인 숫자의 개수를 차례로 반환하는 함수를 완성해주세요!
개수 세는 메커니즘
number = 0
for i in [1,2,3,4,5]:
number += 1