STEP 1. 출력(Output)
1. print() 함수
print("Hello World!")

2. print 옵션
sep 옵션: 값과 값 “사이”에 넣을 문자
일종의 구분자 (separator)로 여러 값을 출력할 때 값 사이에 어떤 문자를 넣을지 정한다.
# 기본형태
sep = "구분자"
print("A", "B", "C", sep="-")
print(2026, 1, 4, sep="/")
print("사과", "바나나", "포도", sep=", ")
print("2", "0", "2", "6", sep="")

end 옵션: 출력의 “끝”에 붙는 것
end 옵션은 print()가 출력한 뒤에 자동으로 붙이는 문자열을 정하는 옵션이다.
기본값은 \n(줄바꿈)이며, 이를 바꾸면 출력이 끝난 뒤의 동작을 제어할 수 있다.
print("사과", end=" / ")
print("바나나", end=" / ")
print("포도")

3. 출력 형식 다루기
format() 함수
문자열 안에 {}를 만들고, 뒤에서 .format(...)로 채운다.
name = "적토마"
score = 95
print("{}의 점수는 {}점입니다.".format(name, score))

f-string
문자열 앞에 f를 붙이고, {변수}처럼 바로 넣는다.
name = "적토마"
score = 95
print(f"{name}의 점수는 {score}점입니다.")

STEP 2. 입력(input)과 사용자 입력 처리
1. input() 함수의 기본 개념
사용자가 키보드로 입력한 내용을 가져오는 함수다.
x = input("아무거나 입력해 보세요: ")
print("입력한 값:", x)
print("type(자료형):", type(x))


⚠️ input()의 결과는 무조건 문자열(str) ⚠️
만약, 입력받은 값으로 계산을 하고자 한다면 형변환은 필수이다.
2. 문자열의 형태 변환 (형변환)
int(), float()등을 사용해 문자열의 타입을 바꿀수 있다.
print(int("-7") - 3)
print(float("3.5") + 1.2)
# 과학 표기(자주 보임): 1e3 = 1000.0
print(float("1e3"))

문자열 → 정수(int)
문자열 → 실수(float)
⚠️ 주의사항
소수 형태 문자열 → 정수로 바꾸는 올바른 순서
a = int("3.14") # 오류 발생
a= int(float("3.14")))
(float → int)
3. 예외 처리: try / except
왜 필요한가?
만약 사용자가 잘못된 값을 입력해 에러가 발생한 경우...
try/except를 사용해 프로그램을 멈추지 않고 에러가 발생했다는것을 알릴수도 있다.
입력 오류 처리 예시
# 기본형태
try:
시행문....
except 에러 종류:
에러 발생시 시행문
# 예제 1: 정수 변환 실패를 잡기
s = input("정수를 입력하세요: ")
try:
n = int(s)
print("n * 2 =", n * 2)
except ValueError:
print("숫자가 아니라서 변환에 실패했습니다!")

# 예제 2: 0으로 나누기 에러도 잡기
s = input("정수 2개를 공백으로 입력하세요(예: 10 0): ")
try:
a, b = map(int, s.split())
print("a / b =", a / b)
except ValueError:
print("입력 형식이 잘못되었습니다! 예: 10 3")
except ZeroDivisionError:
print("0으로는 나눌 수 없습니다!")


4. 한 줄에서 여러 값 입력받기
split()이란?
문자열을 쪼개 여러조각으로 만드는 기능
split('기준자') # 기준자 기준으로 문자열을 쪼갠다.
split() # 공백을 기준으로 문자열을 쪼갠다.
split(',') # 쉼표 기준으로 쪼갠다.
split('#') # # 기준으로 쪼갠다.
print("Read#Analyze#Implement".split("#"))

# split()으로 나눌때 공백이 발생할때가 있다. 이럴땐 strip 혹은 replace를 사용해 공백을 지울수도 있다.
# 공백이 거슬리면 strip()으로 정리할 수 있습니다.
parts = "10, 20, 30".split(",")
clean = [p.strip() for p in parts]
print(clean)

map()이란?
split의 결과 대부분은 문자열이다.
때문에 나눈 문자열들을 계산에 사용하기 위해선 형태를 변환해야 하는데
이를 간편하게 해줄수 있는것이 바로 map()이다.
num = map(변수형태(생략가능), 바꿀변수)
a, b = map(int, "3 7".split())
print("a+b =", a + b)
a, b = map(float, "3 7".split())
print("a+b =", a + b)

split + map 패턴
문자열 입력 → 나누기(split) → 타입 변환(map) 을 한 번에 처리하는 자주 쓰는 입력 처리 패턴이다.
여러 개의 값을 한 줄로 입력받아 숫자로 바로 사용하고 싶을 때 사용한다.
STEP 3. 변수의 개념과 사용법
1. 변수란 무엇인가?
변하는 값, 또는 특정값을 저장하는 공간이다.
수학으로 설명하면 x, y와 같은 임의의 값이라 할수 있다.
• 값(Value): 10, 3.14, "안녕하세요" 같은 실제 데이터
• 변수(Variable): 그 값을 저장해두고 다시 쓰기 위한 이름
total_score = 85
변수의 역할
- 값을 저장한다
계산 결과나 입력받은 데이터를 보관할 수 있다. - 값을 재사용한다
같은 값을 여러 번 사용할 때, 변수 이름으로 간단히 접근할 수 있다. - 코드를 이해하기 쉽게 만든다.
의미 있는 이름을 붙이면 코드의 의도가 명확해진다.
값과 이름의 관계
변수는 이름과 값이 연결된 관계이다.
변수 이름은 바뀌지 않지만, 연결된 값은 언제든지 바뀔 수 있다.
x = 10
x = 20
즉, 변수는 값 그 자체가 아니라, 값을 가리키는 이름이다.
이 때문에 같은 변수에 다른 값을 다시 저장할 수 있다.
2. 변수 이름 짓기 (Naming)
올바른 변수 이름 규칙
• 영어/숫자/밑줄(_)만 사용
• 대소문자 구분: Score와 score는 다름
• 숫자로 시작하면 안 됨
• 중간에 공백 불가(공백 표현시 _ 만 사용)
•예약어(키워드) 사용 불가
좋은 변수명 vs 나쁜 변수명
# 예제 1: 나쁜 변수명
a = 3
b = 5
c = a * b
print("결과:", c)ㅊ
# 예제 2: 좋은 변수명
width = 3
height = 5
area = width * height
print("넓이:", area)
# 예제 3: 의미가 있으면 디버깅(고치기)도 쉬워집니다
student_name = "적토마"
math_score = 90
english_score = 80
total_score = math_score + english_score
print(student_name, "총점:", total_score)
• 나쁜 예: a, b, x1 (의미가 안 보임)
• 좋은 예: width, height, area (읽자마자 의미가 보임)
3. 동적 타이핑(Dynamic Typing)
파이썬의 타입 결정 방식
파이썬은 동적 타이핑 언어로, 변수의 자료형이 “이름표에 붙어있는” 것이 아니라, 저장한 값에 따라 달라진다.
| ex) x = 10 → x는 int(정수) x = "10" → x는 str(문자열) x = 3.14 → x는 float(실수) |
이게 편리하지만, “문자열 숫자"와 "진짜 숫자”를 헷갈리기 쉬우므로 type() 확인이 중요하다.
type() 함수로 확인하기
a = "123"
b = 123
print(a, type(a))
print(b, type(b))

4. 형변환 함수
형변환은 데이터의 타입을 바꾸는 것이다.
- int("10") → 10
- float("3.14") → 3.14
- str(10) → "10"
특히 input()은 항상 문자열이므로, 숫자 계산을 하려면 int()나 float()가 필요하다.
print(int("10") + 5)
print(float("3.5") + 1.2)
n = 50
print("점수는 " + str(n) + "점입니다.")

5. 다중 할당과 동일 할당
한 줄에서 여러 변수에 값을 넣을 수 있다.
a, b = 1, 2
서로 바꾸기: a, b = b, a
x, y, z = 10, 20, 30
print(x, y, z)
# swap(바꾸기)
a, b = 100, 200
a, b = b, a
print(a, b)

여러 변수에 같은 값을 한 번에 넣을 수 있다.
a = b = 10
a = a + 5
print("a:", a, "b:", b)
c = d = "hi"
print(c, d)

STEP 4. 숫자형(Number Type)
계산의 기본이 되는 자료형으로 데이터 분석, 전처리, 통계 계산의 거의 모든 출발점이 숫자형이다.
1. 숫자형의 종류
파이썬의 기본 숫자형은 크게 두 가지이다.
정수(int)
정수형은 소수점이 없는 숫자를 의미한다.
a = 10
b = -3
c = 0
실수(float)
실수형은 소수점이 있는 숫자를 의미한다.
x = 3.14
y = -0.5
z = 2.0
정수 ↔ 실수의 자동 변환
정수와 실수를 함께 계산하면 결과는 실수가 된다.
3 + 2.0 # 5.0
2. 숫자형 관련 함수와 연산
| 연산자 | 의미 | 예시 |
| + | 덧셈 | 3 + 2 |
| - | 뺄셈 | 5 - 1 |
| * | 곱셈 | 4 * 2 |
| / | 나눗셈 | 7 / 2 |
| // | 몫 | 7 // 2 |
| % | 나머지 | 7 % 2 |
| ** | 거듭제곱 | 2 ** 3 |
3. 연산 우선순위
여러 연산이 동시에 있을 경우 계산 순서가 중요하다.
기본 우선순위:
- 괄호 ()
- 거듭제곱 **
- 곱셈, 나눗셈 * / // %
- 덧셈, 뺄셈 + -
4. 산술 연산과 할당 패턴
계산 + 값 저장을 한 줄로 처리하기 위한 문법이다.
| 연산자 | 의미 |
| += | 더해서 저장 |
| -= | 빼서 저장 |
| *= | 곱해서 저장 |
| /= | 나눠서 저장 |
x = 10
x += 3
print(x) # 13
total = 0
print(total) # 0
total += 5
print(total) # 5
total += 10
print(total) # 15
STEP 5. 문자열(String)
1. 문자열의 핵심 개념
문자열은 간단하게 말해 글자들의 모임이다.
- "안녕하세요"
- "Python"
- "123" (이건 “숫자처럼 보이지만” 문자열)
문자열은 불변성을 지닌다.
“불변성을 지녔다란 의미는 한 번 만든 문자열은 ‘그 자리에서’ 수정할 수 없다는 뜻이다.
예를 들어, "hello"에서 첫 글자 h를 H로 바꾸고 싶다고 해보자.
word = "hello"
word[0] = "H" # 에러 발생
문자열은 수정이 불가능한 타입이기에 해당 코드는 에러가 발생한다.
때문에 문자열을 수정하고 싶다면, 새 문자열 변수를 만들거나 재할당을 해야 한다
2. 문자열 인덱싱과 슬라이싱
인덱싱
문자열의 각 글자에는 번호(인덱싱)이 존재한다.
예: s = "Python"
- s[0] → "P" (첫 글자)
- s[1] → "y"
- s[5] → "n" (마지막 글자)
- s[-1] → 마지막 글자
- s[-2] → 뒤에서 두 번째
⚠️왜 0부터 시작하나?
“몇 번째” 보다 “시작점에서 얼마나 떨어져 있는가”로 생각하자
- 첫 번째 값 → 0칸 떨어짐 → index 0
- 두 번째 값 → 1칸 떨어짐 → index 1
이 규칙은 추후에 배우게될 리스트, 튜플 전부 동일하다.
슬라이싱
문자열(또는 리스트)에서 원하는 “부분”을 잘라서 새 문자열을 만드는 방법
| 문자열[start : end : step] |
s = "Python"
print(s[0:2])
print(s[2:6]) # 부분 추출
print(s[:2]) # start 생략 = 처음부터
print(s[2:]) # end 생략 = 끝까지
print("[1::2] 0번부터 2칸씩:", s[0::2])
num = "0123456789"#[start:end:step]
print("[::2] 짝수 인덱스:", num[::2])
print("[1::2] 홀수 인덱스:", num[1::2])
print("[::-1] 뒤집기:", s[::-1])
print("[::-2] 뒤에서 2칸씩:", s[::-2])

3) 문자열 전처리(정리) 메소드
공백 제거: strip(), lstrip(), rstrip()
문자열 앞뒤 공백은 눈에 안 보이지만 실제 데이터에는 존재한다.
해당 공백을 지우는 방법은 다음과 같다.
# 이때 strip()은 중간 공백은 제거하지 않는다
- strip() : 양쪽(왼쪽+오른쪽) 공백 제거 (중간 공백은 지울수 없음.)
- lstrip() : 왼쪽 공백만 제거
- rstrip() : 오른쪽 공백만 제거
text = " hello "
print("원본:", repr(text))
print("strip:", repr(text.strip()))
print("lstrip:", repr(text.lstrip()))
print("rstrip:", repr(text.rstrip()))

strip으로 특정 문자를 지울수도 있다.
# 특정 문자도 제거할 수 있습니다(양쪽에서만)
text = "###title###"
print(text.strip("#"))

대소문자 통일: lower(), upper()
대소문자 통일 해 비교 정확도를 높이기 위한 전처리
s = "PyThOn"
print(s.lower())
print(s.upper())

바꾸기: replace(old, new)
replace()는 특정 문자열을 다른 문자열로 치환
조건을 만족하면 모든 위치에서 치환하며 부분 문자열도 대상이 될 수 있다.
s = "I like apple"
print(s.replace("apple", "banana"))

나누기/합치기: split()과 join()
split() : 문자열을 구분자(괄호 안에 있는 값) 기준으로 리스트로 분리한다.
s = "a b c"
a = "10,20,30"
print(s.split())
print(a.split(","))

join() : 리스트를 문자열 함수로 하나로 합치기
반드시 문자열 요소만 있는 리스트여야 함
words = ["I", "like", "python"]
print(" ".join(words))

개수/위치 찾기: count(), find()
count(sub) : 부분 문자열이 몇 번 나오는지
s = "banana"
print(s.count("a"))
print(s.count("na"))

find(sub) : 부분 문자열의 “처음 위치(인덱스)”를 찾습니다. 없으면 -1
s = "Hello Python"
print(s.find("Python"))
print(s.find("Java")) # 없으면 -1

둘 다 문자열에서 위치(index)를 찾는 함수이지만...
차이점:
find() : 없으면 -1 반환
index() : 없으면 에러 발생
문자열 메소드 표로 한눈에 보기
| 함수 | 핵심 목적 | 입력 대상 | 반환 타입 | 전처리에서의 역할 | 주의할 점 |
| strip() | 앞뒤 공백 제거 | 문자열 | 문자열 | 입력 데이터 정제 |
중간 공백은 제거 안 됨
|
| lstrip() | 왼쪽 공백 제거 | 문자열 | 문자열 | 형식 오류 방지 |
지정 문자도 제거 가능
|
| rstrip() | 오른쪽 공백 제거 | 문자열 | 문자열 | 파일/입력값 정제 |
지정 문자도 제거 가능
|
| lower() | 소문자로 변환 | 문자열 | 문자열 | 비교 정확도 향상 |
원본 문자열 변경 ❌
|
| upper() | 대문자로 변환 | 문자열 | 문자열 | 카테고리 값 통일 |
원본 문자열 변경 ❌
|
| replace() | 특정 문자 치환 | 문자열 | 문자열 | 불필요한 문자 제거 | 대소문자 구분함 |
| split() | 문자열 분리 | 문자열 | 리스트(list) | 정보 분해 | 결과는 리스트 |
| join() | 문자열 결합 | 문자열 + 리스트 | 문자열 | 가공 후 재결합 |
리스트 요소는 문자열만 가능
|
| count() | 특정 문자열 개수 세기 | 문자열 | 정수(int) | 패턴 빈도 파악 |
겹치는 문자열은 중복 계산 ❌
|
| find() | 위치 찾기 | 문자열 | 정수(int) | 존재 여부 확인 | 없으면 -1 반환 |
STEP 6. 불리언(Boolean)
Boolean 타입이란?
주어진 조건이 참(True) 또는 거짓(False)을 나타내는 변수이다.
조건문(if), 반복문(while) 등 제어 구조의 기반이 되며, “맞는가 / 아닌가”를 코드로 표현하기 위해 사용된다.
파이썬에선 True / False 두 값만 존재한다.
# Boolean 변수 선언
is_raining = True
is_sunny = False
비교 연산자
두 값의 관계를 비교하여 True 또는 False를 반환한다.
| 연산자 | 의미 | 예시 |
| == | 같다 | x == y |
| != | 다르다 | x != y |
| > | 크다 | x > y |
| < | 작다 | x < y |
| >= | 크거나 같다 | x >= y |
| <= | 작거나 같다 | x <= y |
10 == 10 # True
10 != 5 # True
3 < 1 # False
논리 연산자
Boolean 값끼리의 관계를 판단할 때 사용한다.
| 연산자 | 의미 | 예시 |
| and | 두 조건 모두 참 | True and True # True True and False # False |
| or | 조건중 하나만 참 | True or False # True False or False # False |
| not | 결과값을 반전 | not True # False not False # True |
⚠️ 주의사항
- and / or 는 True/False가 아니라 마지막으로 평가된 값을 반환한다
- 이를 단축 평가(short-circuit evaluation)라고 한다
- 추후 조건문, 반복문때 자세한 내용을 다룸
'G.파이썬 > 파이썬 기초 복습' 카테고리의 다른 글
| [Python] 함수와 모듈 (0) | 2026.01.15 |
|---|---|
| [Python] 자료형 STEP 3. 딕셔너리 (0) | 2026.01.14 |
| [Python] 자료형 STEP 2. 튜플 (0) | 2026.01.14 |
| [Python] 자료형 STEP 1. 리스트 (0) | 2026.01.13 |
| [Python] 조건문과 반복문 (0) | 2026.01.12 |
