파이썬 기초 문법 2
제어문(조건문, 반복문)과 함수, 라이브러리
조건문 (if)
상황에 따라 다른 코드를 실행하는 방법
조건문 기본 구조 (if, elif, else)
주어진 조건이 참(True)일 때만
특정 코드를 실행합니다.
- if: 가장 먼저 검사하는 조건입니다.
- elif: 앞의 조건이 거짓일 때 검사하는 추가 조건입니다.
- else: 모든 조건이 거짓일 때 실행됩니다.
- 들여쓰기(Indentation)가 매우 중요합니다. 들여쓰기 된 부분만 조건에 종속됩니다.
if score >= 90:
print("A학점")
elif score >= 80:
print("B학점")
else:
print("C학점 이하")
> B학점
비교 연산자와 논리 연산자
비교 연산자
값의 크기를 비교하여 True/False를 반환합니다.
- == : 같다
- != : 다르다
- >, <, >=, <= : 크기 비교
논리 연산자
여러 조건을 결합합니다.
- and : 양쪽 모두 True일 때 True
- or : 한쪽이라도 True이면 True
- not : 상태를 반대로 뒤집음
연산자 활용 예시
is_student = True
# 두 조건을 모두 만족해야 실행
if age < 30 and is_student == True:
print("청년 학생 할인 적용")
# 조건 중 하나만 만족해도 실행
if age > 65 or age < 8:
print("무료 입장")
반복문 (for, while)
데이터를 순회하며 동일한 작업을 반복하는 방법
반복문 기본 구조 (for)
리스트나 튜플의 데이터를
하나씩 꺼내어 코드를 실행합니다.
- 데이터 개수만큼 반복을 수행합니다.
- 수십, 수백 개의 데이터를 다룰 때 코드를 획기적으로 줄여줍니다.
- 반복문 내부 역시 들여쓰기가 필수입니다.
# 리스트 안의 데이터를 하나씩 fruit에 담아 실행
for fruit in fruits:
print(fruit)
> 사과
> 포도
> 바나나
횟수를 지정하는 range() 함수
리스트 데이터가 없어도 특정 횟수만큼 반복하고 싶을 때 range() 함수를 사용합니다.
- range(종료): 0부터 '종료-1'까지 생성
- range(시작, 종료): '시작'부터 '종료-1'까지 생성
- range(시작, 종료, 간격): 지정한 간격만큼 띄어 생성
for i in range(3):
print(i)
> 0
> 1
> 2
# 1부터 4까지 반복
for i in range(1, 5):
print(i)
> 1
> 2
> 3
> 4
조건이 참인 동안 반복하는 while
조건이 참(True)인 동안
계속 반복합니다.
- 반복 횟수가 정해지지 않고, 특정 조건이 만족될 때까지 반복할 때 사용합니다.
- 조건이 계속 참이면 무한 반복(무한 루프)에 빠지므로, 반복문 안에서 조건을 바꿔주어야 합니다.
- 반복을 즉시 멈추려면 break, 이번 차례만 건너뛰려면 continue를 사용합니다.
n = 1
while n <= 5:
print(n)
n = n + 1
> 1
> 2
> 3
> 4
> 5
# break 로 반복 중단
n = 0
while True:
n = n + 1
if n == 3:
break
print(n)
> 1
> 2
반복문과 조건문의 결합
데이터 분석 시 수많은 데이터 중 특정 조건에 맞는 데이터만 걸러낼 때(Filtering) 두 문법을 조합하여 사용합니다.
주의: 들여쓰기가 두 번 들어갑니다. (for문 내부의 if문 내부)
# 점수를 순회하면서 70점 이상만 출력
for score in scores:
if score >= 70:
print("합격:", score)
> 합격: 90
> 합격: 70
> 합격: 85
세트 (set)
중복 없는 데이터를 만들고 집합 연산 활용하기
세트: 중복 없이 항목 모으기
중복을 허용하지 않고
순서를 보장하지 않는 자료형입니다.
- {값1, 값2} 또는 set()으로 만듭니다.
- 빈 세트는 반드시 set()으로 만듭니다. {}는 빈 딕셔너리입니다.
- add()로 추가하고 remove()로 제거합니다.
- discard()는 값이 없어도 오류가 나지 않습니다.
print(languages)
> {'C', 'Python'} # 순서는 달라질 수 있음
languages.add("Java")
languages.remove("C")
languages.discard("Go") # 오류 없음
picked = languages.pop() # 임의 항목 제거·반환
languages.clear() # 모든 항목 제거
print(languages)
> set()
세트를 활용한 집합 연산
두 집단의 공통점과 차이점을 구할 때 세트 연산을 활용하면 반복문 없이 간결하게 처리할 수 있습니다.
- A | B: 합집합 — 양쪽의 모든 항목
- A & B: 교집합 — 양쪽의 공통 항목
- A - B: 차집합 — A에만 있는 항목
- A ^ B: 대칭 차집합 — 한쪽에만 있는 항목
B = {"Python", "Java", "SQL"}
print(A | B)
> {'Python', 'R', 'SQL', 'Java'}
print(A & B)
> {'Python', 'SQL'}
print(A - B)
> {'R'}
print(A ^ B)
> {'R', 'Java'}
※ 세트의 출력 순서는 실행 환경에 따라 달라질 수 있습니다.
함수와 라이브러리
코드를 재사용하고, 남이 만든 도구를 가져다 쓰는 방법
함수(Function): 자주 쓰는 코드에 이름 붙이기
반복되는 코드를 하나로 묶어
이름만 불러 재사용합니다.
- def 키워드로 함수를 정의합니다.
- 같은 작업을 여러 번 할 때 코드를 복사하지 않고 함수를 호출합니다.
- 코드가 짧아지고, 수정할 때도 한 곳만 고치면 됩니다.
def greet():
print("안녕하세요!")
# 함수 호출 (여러 번 재사용)
greet()
greet()
> 안녕하세요!
> 안녕하세요!
매개변수(Parameter)와 반환값(return)
함수에 값을 넣어(매개변수) 처리하고, 그 결과를 돌려받을(return) 수 있습니다.
- 매개변수: 함수가 호출될 때 전달받는 값 (괄호 안에 정의)
- return: 함수의 처리 결과를 함수 밖으로 돌려줌
- return 이 없으면 결과를 변수에 담아 재사용할 수 없습니다.
def add(a, b):
return a + b
result = add(3, 5)
print(result)
> 8
# 반환값을 다른 계산에 재사용
print(add(10, 20) * 2)
> 60
표준 라이브러리와 서드파티 라이브러리
라이브러리는 이미 만든 코드를 모아 재사용하게 해 줍니다. 설치 여부에 따라 두 종류로 구분할 수 있습니다.
- 표준 라이브러리: 파이썬에 기본 포함되어 바로 사용합니다. 예: math, random
- 서드파티 라이브러리: 별도로 개발·배포됩니다. 예: NumPy, pandas, matplotlib
- Google Colab에는 주요 데이터 분석 라이브러리가 미리 설치되어 있습니다.
import math
print(math.sqrt(16))
> 4.0
print(math.pi)
> 3.141592653589793
# 필요한 함수만 불러오기
from math import sqrt
print(sqrt(25))
> 5.0
# 서드파티 라이브러리와 별칭
import pandas as pd
데이터 분석의 세 가지 핵심 라이브러리
수치 계산
빠른 N차원 배열과 과학 계산 기능을 제공합니다.
arr = np.array([1, 2, 3])
표 데이터 분석
Series와 DataFrame으로 CSV·엑셀 같은 표 데이터를 다룹니다.
df = pd.DataFrame(data)
데이터 시각화
선·막대·히스토그램·파이 등 다양한 그래프를 그립니다.
plt.plot([1, 2, 3])
NumPy로 계산 → pandas로 표를 다룸 → matplotlib으로 결과를 시각화
print 와 return, 무엇이 다를까?
입문자가 가장 자주 헷갈리는 부분입니다. print 는 화면에 보여주는 것, return 은 값을 돌려주는 것입니다.
- print(): 결과를 화면에 출력만 하고, 값은 남지 않습니다.
- return: 값을 함수 밖으로 돌려주어 변수에 저장하거나 다른 계산에 쓸 수 있습니다.
- 데이터 분석에서는 계산 결과를 return 으로 받아 이어서 처리하는 경우가 많습니다.
def add_print(a, b):
print(a + b)
x = add_print(2, 3) # 5 출력
print(x)
> None
# return 을 사용한 함수 (값을 돌려받음)
def add_return(a, b):
return a + b
y = add_return(2, 3)
print(y * 10)
> 50
4주 차 실습 과제
조건문, 반복문, 함수, 라이브러리를 활용한 데이터 처리 실습
[실습 1] 리스트 데이터 조건 필터링
리스트에 담긴 학생들의 점수를 순회하며, 80점 이상인 합격자의 점수만 따로 출력해 봅니다.
수행 목표
- for 반복문을 이용한 리스트 순회
- if 조건문을 이용한 데이터 필터링
- 올바른 들여쓰기(Indentation) 적용
실습 가이드 코드
# 반복문과 조건문 결합
for score in scores:
if score >= 80:
print("합격 점수:", score)
# 예상 출력 결과: 90, 85, 100
[실습 2] 함수로 성적 계산하기
매개변수와 return 을 사용해, 총점과 평균을 계산하는 함수를 직접 만들어 봅니다.
수행 목표
- def 로 함수를 정의하기
- 리스트를 매개변수로 받아 합계/평균 계산하기
- return 으로 결과를 돌려받아 재사용하기
실습 가이드 코드
def average(scores):
total = 0
for s in scores:
total = total + s
return total / len(scores)
my_scores = [80, 95, 70]
print(round(average(my_scores), 2))
> 81.67
[실습 3] 라이브러리를 활용한 계산
표준 라이브러리 math 를 불러와, 반복문과 함수를 함께 활용한 계산을 해 봅니다.
수행 목표
- import 로 라이브러리 불러오기
- 모듈.함수() 형태로 기능 호출하기
- 반복문으로 여러 값 처리하기
실습 가이드 코드
import math
# 1. 제곱근 구하기
print(math.sqrt(144))
> 12.0
# 2. 반복문으로 1~5 의 제곱근 출력
for i in range(1, 6):
print(i, round(math.sqrt(i), 2))
> 1 1.0
> 2 1.41
> 3 1.73
> 4 2.0
> 5 2.24
실습 결과 제출 안내
코드 작성 및 실행
코랩(Colab) 환경에서 실습 1, 2, 3의 코드를 각각의 셀(Cell)에 작성하고 실행합니다.
결과 캡처 또는 저장
작성한 소스 코드와 함께 하단에 출력된 결과물이 화면에 모두 나오도록 캡처하거나 .ipynb 파일로 저장합니다.
LXP (LMS) 과제 제출
대학 LXP 시스템의 [4주 차 과제] 게시판에 캡처 이미지 또는 코드 파일을 지정된 기한 내에 업로드합니다.