풀스택 백엔드 2026.07.10

syyu21b·2026년 7월 10일

풀스택 - 백엔드

목록 보기
41/49
post-thumbnail

[SECTION 01. 파이썬 기초 문법 - 출력문, 주석, 자료형]

1. 출력문 (print) & 주석 (Comment)

  • 출력문(print): 프로그램이 처리한 결과를 화면에 보여주는 창구입니다.
    print("안녕하세요. 파이썬입니다!")
  • 주석(#): 코드를 실행하지 않고 메모를 남길 때 사용합니다. 협업과 나중의 나를 위해 필수적입니다.
    name = "파이썬" # 유저의 이름
    age = 30 # 유저의 나이
    address = "대전" # 유저의 거주지

주요 종류 및 문법

  1. 기본 출력: print("내용")

  2. 여러 값 출력: print("A", "B") (쉼표로 구분하면 한 칸 띄워서 출력됩니다.)

  3. f-string: print(f"결과값은 {변수}입니다.") 변수와 문자를 섞어 쓰기 가장 편한 방법입니다.

    name = "파이썬"
    
    print(f"{name}님! 만나서 반갑습니다!")
  4. 한 줄 주석: # 뒤에 내용을 작성합니다.

    # 이 줄을 주석 처리합니다.
  5. 여러 줄 주석: """ 내용 """ 또는 ''' 내용 '''으로 감쌉니다.

    """
    작성자: 파이썬
    작성일자: 2026-03-02(월)
    내용: 데이터 분석
    """

2. 자료형 (Data Types)

  • 파이썬은 변수를 만들 때 타입을 직접 지정하지 않아도, 들어가는 값에 따라 자동으로 타입이 정해집니다. 이를 동적 타이핑(Dynamic Typing)이라고 합니다.

주요 자료형 종류

자료형 명칭파이썬 타입설명예시
정수형int소수점이 없는 숫자10, -5, 0
실수형float소수점이 있는 숫자3.14, -0.5
문자열str따옴표(", ')로 감싼 텍스트"Hello", '25'
불리언bool참 또는 거짓 (논리값)True, False

3. 예제

  • 주피터 노트북의 새 셀에 아래 코드를 입력하고 Shift + Enter로 실행해 보세요.
# 1. 변수에 데이터 담기
name = "파이썬"          # 문자열(str)
age = 25                # 정수형(int)
height = 175.5          # 실수형(float)
is_instructor = True    # 불리언(bool)

# 2. 다양한 방식으로 출력하기
print("--- 기본 출력 ---")
print(name, age, height)

print("\n--- f-string 활용 ---")
print(f"{name}의 나이는 {age}세이고, 키는 {height}cm입니다.")

# 3. 데이터 타입 확인하기
print("\n--- 타입 확인 ---")
print(type(name))
print(type(age))
print(type(height))

[SECTION 02. 파이썬 기초 문법 - 연산(Operators)]

1. 연산자의 종류

분류종류설명
산술 연산자+, -, *, /, //, %, **숫자 계산 (더하기, 나누기, 몫, 나머지, 거듭제곱)
비교 연산자==, !=, >, <, >=값 비교 (결과는 항상 True 또는 False)
논리 연산자and, or, not여러 조건을 결합 (그리고, 또는, 아니면)
복합 대입+=, -=, *=, /=변수에 값을 계산해서 다시 저장 (예: a += 1)

2. 예제

  • 각 예제 코드를 셀에 한 줄씩 입력 후 Shift + Enter로 결과를 확인하며 결과를 확인해 보세요.

예제 2-1. 산술/비교/논리 연산자

  • 변수 a와 b를 선언하고 각 연산들의 실행 결과를 확인해 봅시다.
a = 7
b = 3

# 산술 연산
print(a + b) # 10
print(a // b) # 2
print(a ** b) # 343

# 비교 연산
print(a > b) # True
print(a == b) # False

# 논리 연산
print("조건1 and 조건2:", (a > 5) and (b < 5))
# and 연산은 연결 되어 있는 녀석들이 전부 True일 때만 True를 반환한다

print("조건1 or 조건2:", (a < 5) or (b < 5))
# or 연산은 연결 되어 있는 녀석들 중에 하나라도 True일 때 True를 반환한다

예제 2-2. 쇼핑몰 정산 프로그램 (산술 연산)

  • 구매 금액에 따른 할인과 최종 결제 금액을 계산해 봅니다.
# 구매 정보
item_price = 45000  # 상품 가격
count = 3           # 구매 수량
discount_rate = 0.1 # 10% 할인

# 계산
total_before_discount = item_price * count
discount_amount = total_before_discount * discount_rate
final_price = total_before_discount - discount_amount

print(f"총 주문 금액: {total_before_discount}원")
print(f"할인 금액: {discount_amount}원")
print(f"최종 결제 금액: {final_price}원")

예제 2-3. 고양이 간식 배분하기 (몫과 나머지)

  • 고양이 자바와 바미에게 간식을 똑같이 나눠주기 위한 연산을 해 봅시다.
total_treats = 15
cat_count = 2

treats_per_cat = total_treats // cat_count  # 한 마리당 가져가는 개수
leftover = total_treats % cat_count         # 남는 개수

print(f"고양이 한 마리당 {treats_per_cat}개씩 먹고, {leftover}개가 남았습니다.")

예제 2-3. 자격증 합격 조건 검사 (비교 및 논리)

  • AICE 시험 합격 기준을 검사하는 로직입니다. (점수 80점 이상 AND 과락 없음)
score = 85
is_cheating = False

# 합격 조건: 80점 이상 '이면서' 부정행위를 하지 않았어야 함
is_pass = (score >= 80) and (not is_cheating)

print(f"이번 시험 합격 여부: {is_pass}")

3. 연습 문제

Q1. 변수 number=17 이 있을 때, 이 숫자가 짝수면 True, 홀수면 False가 출력되도록 연산자를 사용해 보세요.

  • 정답
    number = 17
    is_even = number % 2 == 0
    
    print(f"해당 숫자 {number} 짝수인지에 대한 결과: {is_even}")

Q2. 키가 140cm 이상이거나, 부모님과 동반(has_parent = True)한 경우에만 탑승이 가능합니다. 아래 변수를 사용해 탑승 가능 여부(can_ride)를 출력해 보세요.

  • height = 135

  • has_parent = True

  • 정답

    height = 135 # 키
    has_parent = True # 부모 동반 여부 
    
    can_ride = (height >= 140) or (has_parent == True)
    
    print(f"놀이기구 탑승 가능 여부 : {can_ride}")

Q3. 현재 내 통장 잔고(balance)가 10,000원입니다. 여기에 용돈 5,000원이 들어왔고(+=), 간식비로 3,000원을 썼습니다(-=). 최종 잔고를 계산하여 출력하세요.

  • 정답
    balance = 10000
    
    balance += 5000 # 용돈이 5,000원 들어옴
    
    balance -= 3000 # 간식비로 3,000원을 지출함
    
    print(f"최종 잔고는 {balance}원입니다")

[SECTION 03. 파이썬 기초 - 조건문, 반복문]

1. 조건문 (If Statement)

  • 특정 조건이 True(참)일 때만 코드를 실행합니다. 파이썬은 중괄호({ }) 대신 콜론(:)과 들여쓰기로 코드의 범위를 구분합니다.

기본 문법

if 조건식:
    # 조건이 참일 때 실행 (들여쓰기 필수)
elif 다른 조건식:
    # 앞의 조건이 거짓이고, 이 조건이 참일 때 실행
else:
    # 모든 조건이 거짓일 때 실행

2. 반복문 (For Loop)

  • 데이터의 집합(리스트 등)을 순서대로 하나씩 꺼내어 반복 처리합니다. AI 데이터 분석에서 수천 개의 데이터를 처리할 때 필수입니다.

기본 문법

  1. 리스트 순회: for 변수 in 리스트:

    # 과일 리스트
    fruits = ["사과", "포도", "귤", "오렌지"]
    
    for fruit in fruits:
    	print(fruit)
  2. 횟수 반복: for i in range(시작, 끝, 증가값):

    # 정수 1에서 100까지 출력
    for i in range(1, 101):
    	print(i)

3. 반복문 (While Loop)

  • 조건식이 True인 동안 반복하고 False가 되면 반복을 멈춥니다.

기본 문법

  • 횟수 반복: while 조건:
    i = 1
    
    while i <= 5:
        print(i, "번째 반복")
        i += 1   # i를 1씩 증가시켜 조건식이 언젠가는 False가 되도록 만듦
    
    print("while 반복문 종료")

4. 예제

예제 4-1. 고양이 간식 알람 (조건문)

  • 현재 시각에 따라 고양이들에게 줄 행동을 결정합니다.
# hour = int(input("시각을 입력해 주세요"))

hour = 14

if hour < 12:
    print("오전입니다. Java와 Bami에게 아침밥을 주세요.")
elif 12 <= hour < 18:
    print("오후입니다. 고양이들과 사냥 놀이를 해주세요!")
else:
    print("저녁입니다. 고양이들이 잠잘 준비를 합니다.")

예제 4-2. 로그인 시뮬레이션 (조건문)

  • 입력된 값에 따라 로그인 성공 여부를 확인합니다.
username = input("아이디 입력: ")
password = input("비밀번호 입력: ")

if username == "admin" and password == "1234":
    print("로그인 성공!")
    print("관리자 권한으로 접속했습니다.")
else:
    print("로그인 실패!")
    print("아이디 또는 비밀번호가 잘못되었습니다.")

print("시스템 종료")

예제 4-3. 1부터 100까지 합계 구하기 (반복문)

  • 1부터 100까지의 합계를 구합니다.
sum = 0 # 합계 계산용 변수

# range(시작, 끝, 간격)
for i in range(1, 101):
    sum += i

print(f"합계: {sum}")

예제 4-4. 출석부 명단 출력 (반복문)

  • 리스트에 담긴 학생들의 이름을 하나씩 꺼내어 인사합니다.
students = ["Java", "Bami", "Gemini", "Python"]

print("--- 오늘 수강생 명단 ---")
for name in students:
    print(f"반갑습니다, {name}님!")

5. 연습 문제

Q1. 변수 score = 85일 때, 아래 기준에 맞춰 등급을 출력하세요.

  • 90점 이상: "A"

  • 80점 이상 90점 미만: "B"

  • 80점 미만: "C"

  • 정답

    score = 85
    
    if score >= 90:
        print("A학점")
    elif score >= 80:
        print("B학점")
    else:
        print("C학점")

Q2. for문과 range()를 사용하여 1부터 10까지의 숫자를 모두 더한 결과를 출력하세요.

  • 정답
    total = 0 # 합산 변수
    
    for i in range(1, 11): #
        total +=  i
    
    print(f"1부터 10까지 총 합 : {total}")

[학생 관리 프로그램 만들기]

문제 설명

콘솔에서 명령어를 입력받아 학생 정보를 관리하는 프로그램을 만드세요.

학생은 이름(name), 나이(age), 점수(score) 정보를 가집니다.


요구 사항

1) 저장 구조

  • 학생 목록은 길이 3짜리 리스트로 관리한다.
    • 예: students = [None, None, None]
  • 현재 등록된 학생 수를 나타내는 count 변수를 사용한다.

2) 메뉴 출력

프로그램은 무한 반복으로 아래 메뉴를 출력한다.

  • 1. 학생 등록
  • 2. 학생 목록
  • 3. 학생 검색
  • 4. 학생 수정
  • 5. 학생 삭제
  • 0. 종료

3) 기능 상세

(1) 학생 등록 (1번)

  • count가 3이면 "학생 수를 초과하였습니다." 출력 후 등록 불가
  • 이름/나이/점수를 입력받아 students[count]에 저장
  • 저장 후 count += 1

(2) 학생 목록 (2번)

  • 등록된 학생만 순서대로 출력
  • 출력 형식 예시:
    • 1번) 이름: 홍길동 / 나이: 20 / 점수: 80

(3) 학생 검색 (3번)

  • 학생 번호(1부터 시작)를 입력받는다
  • 번호가 범위를 벗어나면 "존재하지 않는 학생입니다."
  • 아니면 해당 학생 정보 출력

(4) 학생 수정 (4번)

  • 수정할 학생 번호(1부터 시작)를 입력받는다
  • 존재하지 않으면 "존재하지 않는 학생입니다."
  • 존재하면 새 이름/나이/점수를 입력받아 해당 학생 정보를 덮어쓰기
  • 완료 메시지 출력:
    • ==== n번째 학생 수정이 완료되었습니다 ====

(5) 학생 삭제 (5번)

  • 삭제할 학생 번호(1부터 시작)를 입력받는다
  • 존재하지 않으면 "존재하지 않는 학생입니다."
  • 존재하면 해당 학생을 삭제하고, 뒤 학생들을 앞으로 한 칸씩 당긴다(shift)
  • 마지막 칸은 None으로 만들고 count -= 1

(0) 종료

  • 프로그램 종료

그 외 입력

  • "잘못된 명령어입니다." 출력

names = []
ages = []
scores = []


count = 0

while True:
    print("1. 학생 등록")
    print("2. 학생 목록")
    print("3. 학생 검색")
    print("4. 학생 수정")
    print("5. 학생 삭제")
    print("0. 프로그램 종료")

    cmd = int(input("명령어 입력:"))
    if cmd == 1:
        print("학생을 등록합니다.")

        name = input("이름 입력:")
        age = int(input("나이 입력:"))
        score = int(input("점수 입력:"))

        names.append(name) # 0
        ages.append(age) # 0
        scores.append(score) # 0

        count += 1

    elif cmd == 2:
        if count == 0:
            print("등록된 학생이 없습니다.")
            continue

        print("\n\n=== 학생 목록 ===")
        for i in range(count):
            print(f"번호 : {i + 1} / 이름: {names[i]}")

        print()
    elif cmd == 3:
        if count == 0:
            print("등록된 학생이 없습니다.")
            continue

        search_no = int(input("검색할 번호 입력:"))
        search_idx = search_no - 1

        if search_no < 0 or search_no > count:
            print("존재하지 않는 학생입니다.")
        else:
            print(f"번호: {search_no} "
                  f"/ 이름 : {names[search_idx]} "
                  f"/ 나이 : {ages[search_idx]}살 "
                  f"/ 점수 : {scores[search_idx]}점")
    elif cmd == 4:
        if count == 0:
            print("등록된 학생이 없습니다.")
            continue

        modify_no = int(input("수정할 번호 입력:"))
        modify_idx = modify_no - 1

        if modify_no < 0 or modify_no > count:
            print("존재하지 않는 학생입니다.")
        else:
            name = input("수정할 이름:")
            age = int(input("수정할 나이:"))
            score = int(input("수정할 점수:"))

            names[modify_idx] = name
            ages[modify_idx] = age
            scores[modify_idx] = score
    elif cmd == 5:
        if count == 0:
            print("등록된 학생이 없습니다.")
            continue

        del_no = int(input("삭제할 번호 입력:"))
        del_idx = del_no - 1

        if del_no < 0 or del_no > count:
            print("존재하지 않는 학생입니다.")
        else:
            names.pop(del_idx)
            scores.pop(del_idx)
            ages.pop(del_idx)
            count -= 1
            print(f"{del_no}번 학생을 삭제하였습니다.")

    elif cmd == 0:
        print("프로그램을 종료합니다.")
        break

0개의 댓글