프로그래밍 기초

Chapter.1 프로그래밍 기초(5)

devjjun 2026. 3. 24. 12:53

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]  (새 리스트)

💡 느낀점

  • 지금까지 풀었던 알고리즘 문제들을 새롭게 배운 함수를 통해 또 다른 방법으로 접근할 수 있을 것 같다고 느꼈다. 단지 문제를 푸는 것에만 국한되는 것이 아닌 이미 풀어본 문제에도 적용하고, 고민해보는 시간을 갖으면 좋을 것 같다고 느꼈다.