1️⃣Python 특강 정리
함수 복습
결과를 돌려주는 함수 return
def 함수 이름(매개변수 o, x):
def divide(x= 5, z= 6):
result = x(5) / z(6)
return result
divide(5, 6) => 5 / 6이라는 결과가 나오게 되겠죠
def divide(x, y):
result =x / y
return result
divide(100, 5)
100 5
x = 100
y = 5
result =x / y
print(result)
def add_new_version(a, b):
result = a + b
return result # Return the result!
# Receive and use the result
my_result = add_new_version(5, 3)
print("Calculation result:", my_result) 5+ 3 = 8
print("Adding 10 to the result:", my_result + 10) 8 + 10 => 18
사칙연산 함수 완성하기
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
return "Cannot divide by zero!"
return a / b
# Test all functions
print("Addition:", add(10, 5))
print("Subtraction:", subtract(10, 5))
print("Multiplication:", multiply(10, 5))
print("Division:", divide(10, 5))
print("Invalid division:", divide(10, 0))
간단한 계산기 만들기
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b ==
return "Cannot divide by zero!"
return a / b
def simple_calculator():
print("=== Simple Calculator ===")
# Get numbers from user input
first = float(input("Enter the first number: "))
second = float(input("Enter the second number: "))
# Perform calculations
print(f"\n{first} + {second} = {add(first, second)}") # add(first, second)
print(f"{first} - {second} = {subtract(first, second)}")
print(f"{first} × {second} = {multiply(first, second)}")
print(f"{first} ÷ {second} = {divide(first, second)}")
# Run the calculator
simple_calculator()
메뉴가 있는 계산기 만들기
def 메뉴_보여주기():
print("\n" + "="*30)
print("나의 첫 계산기")
print("="*30)
print("1. 더하기")
print("2. 빼기")
print("3. 곱하기")
print("4. 나누기")
print("5. 끝내기")
print("="*30)
def 숫자_입력받기():
첫번째 = float(input("첫 번째 숫자: "))
두번째 = float(input("두 번째 숫자: "))
return 첫번째, 두번째
def 계산기_실행():
while True: # 무한반복 (사용자가 5번을 누를 때까지)
메뉴_보여주기()
선택 = input("번호를 선택하세요: ")
if 선택 == "1":
a, b = 숫자_입력받기()
print(f"결과: {a} + {b} = {더하기(a, b)}")
elif 선택 == "2":
a, b = 숫자_입력받기()
print(f"결과: {a} - {b} = {빼기(a, b)}")
elif 선택 == "3":
a, b = 숫자_입력받기()
print(f"결과: {a} × {b} = {곱하기(a, b)}")
elif 선택 == "4":
a, b = 숫자_입력받기()
print(f"결과: {a} ÷ {b} = {나누기(a, b)}")
elif 선택 == "5":
print("계산기를 종료합니다. 안녕히 가세요! ")
break
else:
print("1~5 번호만 선택해주세요!")
# 계산기 시작!
계산기_실행()
Pythonic & Tips
임시 변수 없이 변수 바꾸기
a = 1
b = 2
temp = a
a = b
b = temp
a = 1
b = 2
a, b = b, a
range(len()) 대신 enumerate() 사용하기
my_list = [1, 2, 3]
for i in range(len(my_list)):
print(i, my_list[i])
my_list = [1, 2, 3]
for idx, item in enumerate(my_list):
print(idx, item)
여러 목록을 순회할 때 zip() 사용하기
my_list = [1, 2, 3]
for idx, item in enumerate(my_list):
print(idx, item)
#Output
#0 1
#1 2
#2 3
my_list = [1, 2, 3]
for idx, item in enumerate(my_list):
print(idx, item)
한 줄 If-Else (삼항 연산자)
score = 75
#일반적인 if-else 구문
if score >= 60:
result_classic = "합격"
else:
result_classic = "불합격"
score = 75
#삼항 연산자
result = "합격" if score >= 60 else "불합격"
리스트에서 가장 빈번한 항목 구하기
from collections import Counter
my_list = ['a', 'b', 'a', 'c', 'b', 'a']
most_common = Counter(my_list).most_common(1)
(복습)String Hanling
(복습) 인덱싱(Indexing) 및 슬라이싱(Slicing)
- 인덱싱 (Indexing): 문자열의 특정 한 글자를 가져오는 방법입니다.
- String[4]는 5번째 글자('o')를 가져옵니다. (파이썬은 0부터 숫자를 셉니다!)
- String[-3]은 뒤에서 3번째 글자('r')를 가져옵니다.
- 활용 예시: 장비 모델명('EQP-A2024-001')에서 뒤 3자리의 일련번호만 추출할 때 유용합니다.
- 슬라이싱 (Slicing): 문자열의 일부분을 잘라 가져오는 방법입니다.
- String[3:]은 4번째 글자('l')부터 끝까지를 가져옵니다. (lo, World)
- String[a:b]는 a 인덱스부터 b-1 인덱스까지 가져옵니다.
- 활용 예시: 센서 데이터 파일명('Temp_Sensor_20240901.csv')에서 날짜 부분만 분리할 때 사용합니다.
# Indexing:
String = 'Hello, World'
print(String[4]) # Output: o
print(String[-3]) # Output: r
# Slicing:
String = 'Hello, World'
print(String[3:]) # Output: lo, World
(복습) 문자열 결합 및 길이 측정
- 문자열 결합 (String Concatenation): 두 개 이상의 문자열을 + 연산자를 사용해 하나로 합치는 방법입니다.
- 활용 예시: 부서 코드와 검사 일자를 합쳐 'QA-2024-09-01'와 같은 고유 ID를 만들 때 사용합니다.
- 문자열 길이 (Length of a String): 내장 함수 len()을 사용하여 문자열에 포함된 글자의 총 개수를 세어줍니다.
- 활용 예시: 입력된 검사 결과 코드가 정해진 길이(예: 8자리)를 충족하는지 검증할 때 사용합니다.
# String Concatenation:
a = 'hello'
b = 'world'
print(a + b) # Output: helloworld
# Length of a String:
String = 'Hello, World'
print(len(String)) # Output: 12
(복습) 문자열 변환 및 분리
- 문자열 케이스 변환 (Converting String Cases):
- .upper(): 모든 문자를 대문자로
- .lower(): 모든 문자를 소문자로
- .capitalize(): 첫 글자만 대문자, 나머지는 소문자로
- 활용 예시: 데이터의 통일성을 위해 모든 장비명을 대문자 또는 소문자로 표준화할 때 사용합니다.
- 문자열 분리 (String Splitting): .split() 메서드는 특정 구분자(delimiter)를 기준으로 문자열을 쪼개어 리스트(List) 형태로 반환합니다. 기본값은 공백입니다.
- 활용 예시: 로그 데이터('ERROR,Temp,A20240901,High')를 쉼표(,)로 분리하여 각 항목(상태, 종류, 일시, 값)을 추출할 때 사용합니다.
# Converting String Cases:
String = 'Hello, World'
print(String.upper()) # Output: HELLO, WORLD
print(String.lower()) # Output: hello, world
print(String.capitalize()) # Output: Hello, world
print(String.split()) # Output: ['Hello,', 'World']
print(String.swapcase()) # Output: hELLO, wORLD
2️⃣Python 알고리즘 핵심 문제
- 문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. - 제한 사항
str은 길이 1 이상인 문자열입니다. - 입출력 예

- 문제 접근
소문자와 대문자 배열을 리스트 컴프리헨션을 통해 만들어 역순으로 분류한 후 join을 통해 문자열에 합하여 대입하면 문제의 결과를 얻을 수 있을 것이다. - 코드
def solution(s):
lower = [c for c in s if c.islower()]
upper = [c for c in s if c.isupper()]
lower.sort(reverse=True)
upper.sort(reverse=True)
result = "".join(lower + upper)
return result
주요 문법
- List.sort()
동작: 기존 리스트 자체를 정렬(제자리 정렬, in-place sort)합니다.
반환값: None
→ 원본 리스트가 바뀌고, 새로운 리스트는 만들어지지 않아요.
사용 예시:
arr = [3, 1, 2]
arr.sort()
print(arr) # 출력: [1, 2, 3]
- sorted()
동작: 원본 리스트는 그대로 두고, 정렬된 새로운 리스트를 반환합니다.
반환값: 새로운 정렬된 리스트
사용 예시:
arr = [3, 1, 2]
new_arr = sorted(arr)
print(arr) # 출력: [3, 1, 2] (원본 유지)
print(new_arr) # 출력: [1, 2, 3] (새 리스트)
💡 느낀점
- 지금까지 풀었던 알고리즘 문제들을 새롭게 배운 함수를 통해 또 다른 방법으로 접근할 수 있을 것 같다고 느꼈다. 단지 문제를 푸는 것에만 국한되는 것이 아닌 이미 풀어본 문제에도 적용하고, 고민해보는 시간을 갖으면 좋을 것 같다고 느꼈다.
'프로그래밍 기초' 카테고리의 다른 글
| Chapter.1 프로그래밍 기초(6) (0) | 2026.03.24 |
|---|---|
| Chapter.1 프로그래밍 기초(4) (0) | 2026.03.24 |
| Chapter.1 프로그래밍 기초(3) (0) | 2026.03.24 |
| Chapter.1 프로그래밍 기초(2) (0) | 2026.03.24 |
| Chapter.1 프로그래밍 기초(1) (0) | 2026.03.24 |