15 분 소요


1. 파이썬 기초

1.1 기본 입출력

1.1.1 print()

print()는 데이터를 출력하는 함수이다.

파이썬의 print() 함수는 입력된 인수를 str() 함수를 사용하여 문자열로 변환한다.

print("Hello, World!") # Hello, World!
print("시은", 1004) # 시은 1004


print() 함수의 매개변수 sep과 end

  • sep=" "
    • separator의 약어로 구분자라는 뜻을 지니고있다.
    • 출력하려고 하는 값과 값 사이에 적용하는 것으로 맨 마지막에 출력하는 내용에는 반영되지 않는다.
print("시은", 1004, sep=", ")  # 시은, 1004


end=" ": 문장을 출력하고 마지막에 무엇을 쓰고 끝낼지 정해준다.

# end= " "를 입력하여 출력하여 줄 바꾸지 않고
# "Hello World Python" 으로 공백을 삽입하여 출력
print("Hello", end = " ")
print("World", end = " ")
print("Python", end = " ")


1.1.2 input()

input()는 데이터를 입력하는 함수이다.

입력된 데이터는 항상 문자열로 반환된다.

name = input("이름을 입력하세요: ")
print("안녕하세요, " + name + "님!")


1.2 주석

한 줄 주석: #

#를 사용하여 주석 작성

# 주석 처리 적용 문장 입력하기.


여러 줄 주석

''' 또는 """를 사용하여 여러 줄에 걸친 주석을 작성

'''
주석 처리
적용 문장
입력하기
'''


1.3 세미콜론

  • 파이썬에서는 문장의 끝에 세미콜론(;)을 붙이지 않아도 된다.
  • 하나의 줄에 여러 구문을 작성할 때, 구문 사이를 세미콜론으로 구분할 수 있다.
a = 5; b = 10; print(a + b) # 15



2. 변수

파이썬에서는 변수에 값을 할당할 때 데이터 타입을 명시하지 않으며, 변수의 타입은 할당된 값에 따라 자동으로 결정된다.

파이썬에서는 보통 snake_case를 사용하여 변수 명을 작성한다.

x = 10    # 정수형 변수
y = 3.14  # 실수형 변수
user_name = "sieun"  # 문자열 변수



3. 자료형

  • 파이썬의 주요 자료형에는 None, bool, 숫자형, 문자열, 리스트, 튜플, 집합, 딕셔너리가 있다.
  • 리스트, 튜플, 집합, 딕셔너리는 이후의 목차에서 더 자세히 다룰 것이다.

3.1 None

result = None
print(result) # None


3.2 bool

파이썬에서 불리언 값은 대문자로 시작하는 True와 False로 표기해야 한다.

is_active = True
is_logged_in = False


3.3 숫자형

age = 20      # 정수형
height = 165.5  # 실수형


3.4 문자형 📌

3.4.1 문자열 만들기

# 1. 큰따옴표(")로 양쪽 둘러싸기
print("안녕")

# 2. 작은따옴표(')로 양쪽 둘러싸기
print('나는 시은이라고 해')

# 3. 큰따옴표 3개를 연속(""")으로 써서 양쪽 둘러싸기
print("""파이썬을 배우고 있지""")

# 4. 작은따옴표 3개를 연속(''')으로 써서 양쪽 둘러싸기
print('''파이썬은 참 간단하구나!''')


3.4.2 문자열 포맷팅

  • 문자열 포맷팅이란, 문자열에 변수나 특정 값을 삽입하여 원하는 형식으로 문자열을 만드는 방법이다.
  • 변수를 특정 위치에 삽입하거나, 숫자 형식을 지정하는 등 다양한 형태의 출력을 간편하게 생성할 수 있다.
포맷 코드 설명
%s 문자열 포맷팅
%c 문자 포맷팅(문자 1개)
%d 정수 포맷팅
%f 부동소수점 포맷팅 (%.2f는 소수점 아래 2자리까지 표시)
%x 16진수 포맷팅
%o 8진수 포맷팅
%% 문자 %를 출력하기 위한 포맷 코드
major = "컴퓨터공학"
year = 3
probability = 64.35
hex_value = 255

# 문자열 포맷팅 (%s)
print("제 전공은 %s 입니다." % major)  # "제 전공은 컴퓨터공학 입니다."

# 정수 포맷팅 (%d)
print("현재 %d학년입니다." % year)  # "현재 3학년입니다."

# 부동소수점 포맷팅 (%.2f)
print("제가 취업할 확률은 %.2f%%입니다." % probability)  # "제가 취업할 확률은 64.35%입니다."

# 16진수 포맷팅 (%x)
print("16진수 값: %x" % hex_value)  # "16진수 값: ff"

# 문자열, 정수, 부동소수점, 16진수 포맷팅이 모두 포함된 예시
print("제 전공은 %s이고, 현재 %d학년입니다. 취업할 확률은 %.2f%%이며, 16진수로 표현하면 %x입니다."
      % (major, year, probability, hex_value))
# 출력: "제 전공은 컴퓨터공학이고, 현재 3학년입니다. 취업할 확률은 64.35%이며, 16진수로 표현하면 ff입니다."


3.4.3 문자열 연결

+ 연산자를 사용하여 두 개 이상의 문자열을 하나로 결합할 수 있다.

str1 = "Hello"
str2 = "World"
result = str1 + " " + str2
print(result)  # "Hello World"


3.4.4 인덱싱과 슬라이싱

인덱싱

  • 인덱싱은 무언가를 “가리킨다” 라는 의미로, 문자열에서 개별 문자를 추출하려면 인덱싱을 사용한다.
  • 인덱스는 0부터 시작하며, 음수 인덱스는 문자열의 끝에서부터 문자를 센다.
text = "Python"
print(text[0])   # "P" (문자열의 첫 번째 문자)
print(text[-1])  # "n" (문자열의 마지막 문자)


슬라이싱

  • 슬라이싱은 무언가를 “잘라낸다” 라는 의미로, 문자열의 특정 부분을 추출할 수 있다.
  • 슬라이싱의 기본 구문은 [start:end]이다.
  • start는 포함되며, end는 포함되지 않는다.
text = "Python Programming"
print(text[0:6])    # "Python" (0부터 5까지의 문자)
print(text[7:])     # "Programming" (7부터 끝까지)
print(text[:6])     # "Python" (시작부터 5까지)
print(text[-11:-1]) # "Programming" (뒤에서 11번째부터 끝에서 1번째 전까지)


3.4.5 문자열 메소드와 함수

(1) 기본

| 메서드/함수                                | 설명                                                                                                 |
|-------------------------------------------|------------------------------------------------------------------------------------------------------|
| `len(s)`                                 | 문자열 `s` 길이를 반환한다.                                                                       |
| `ord(c)`                                 | 문자 `c` 유니코드 코드 포인트를 반환한다.                                                          |
| `chr(i)`                                 | 유니코드 코드 포인트 `i` 해당하는 문자를 반환한다.                                                 |
| `hex(x)`                                 | 정수 `x` 16진수 문자열로 변환한다.                                                                 |
| `oct(x)`                                 | 정수 `x` 8진수 문자열로 변환한다.                                                                  |
| `str.format(*args, **kwargs)`             | 문자열 내에서 포맷팅을 수행한다.                                                                     |
| `str.join(iterable)`                      | `iterable`  요소를 문자열로 결합한다.                                                             |
적용 예시 ```python # 문자열의 길이 구하기 s = "hello" length = len(s) print("문자열의 길이:", length) # 출력: 문자열의 길이: 5 # 문자 'A'의 유니코드 코드 포인트 얻기 c = "A" unicode_code_point = ord(c) print("문자의 유니코드 코드 포인트:", unicode_code_point) # 출력: 문자의 유니코드 코드 포인트: 65 # 유니코드 코드 포인트 65로 문자 얻기 code_point = 65 character = chr(code_point) print("유니코드 코드 포인트로 얻은 문자:", character) # 출력: 유니코드 코드 포인트로 얻은 문자: A # 정수를 16진수 문자열로 변환하기 number = 255 hex_string = hex(number) print("16진수 문자열:", hex_string) # 출력: 16진수 문자열: 0xff # 정수를 8진수 문자열로 변환하기 number = 8 oct_string = oct(number) print("8진수 문자열:", oct_string) # 출력: 8진수 문자열: 0o10 # 문자열 포맷팅 formatted_string = "{} {}".format("Hello", "World") print("포맷팅된 문자열:", formatted_string) # 출력: 포맷팅된 문자열: Hello World # 문자열 결합하기 words = ["apple", "banana", "cherry"] joined_string = ", ".join(words) print("결합된 문자열:", joined_string) # 출력: 결합된 문자열: apple, banana, cherry ```


(2) 변환 및 포맷팅

| 메서드/함수                                | 설명                                                                                                 |
|-------------------------------------------|------------------------------------------------------------------------------------------------------|
| `str.upper()`                             | 문자열을 모두 대문자로 변환한다.                                                                    |
| `str.lower()`                             | 문자열을 모두 소문자로 변환한다.                                                                    |
| `str.title()`                             | 문자열의  단어의  글자를 대문자로 변환한다.                                                      |
| `str.capitalize()`                        | 문자열의  글자만 대문자로 변환한다.                                                               |
| `str.swapcase()`                          | 문자열의 대문자는 소문자로, 소문자는 대문자로 변환한다.                                              |
| `str.zfill(width)`                       | 문자열의 왼쪽에 `0` 채워서 `width` 길이로 만든다.                                                   |
적용 예시 ```python # 문자열을 대문자로 변환하기 lowercase_str = "hello" uppercase_str = lowercase_str.upper() print("대문자로 변환된 문자열:", uppercase_str) # 출력: 대문자로 변환된 문자열: HELLO # 문자열을 소문자로 변환하기 uppercase_str = "HELLO" lowercase_str = uppercase_str.lower() print("소문자로 변환된 문자열:", lowercase_str) # 출력: 소문자로 변환된 문자열: hello # 문자열의 각 단어의 첫 글자를 대문자로 변환하기 sentence = "hello world" title_case_str = sentence.title() print("각 단어의 첫 글자를 대문자로 변환된 문자열:", title_case_str) # 출력: 각 단어의 첫 글자를 대문자로 변환된 문자열: Hello World # 문자열의 첫 글자만 대문자로 변환하기 sentence = "hello world" capitalized_str = sentence.capitalize() print("첫 글자만 대문자로 변환된 문자열:", capitalized_str) # 출력: 첫 글자만 대문자로 변환된 문자열: Hello world # 문자열의 대소문자 반전하기 mixed_case_str = "Hello World" swapped_case_str = mixed_case_str.swapcase() print("대소문자 반전된 문자열:", swapped_case_str) # 출력: 대소문자 반전된 문자열: hELLO wORLD # 문자열의 길이를 5로 맞추기 위해 0을 왼쪽에 채우기 num_str = "42" padded_str = num_str.zfill(5) print("0으로 채운 문자열:", padded_str) # 출력: 0으로 채운 문자열: 00042 ```


(3) 검색 및 치환

| 메서드/함수                                | 설명                                                                                                 |
|-------------------------------------------|------------------------------------------------------------------------------------------------------|
| `str.find(sub[, start[, end]])`            | 문자열에서 `sub`  번째 인덱스를 반환한다. `sub` 없으면 `-1` 반환한다.                      |
| `str.rfind(sub[, start[, end]])`           | 문자열에서 `sub` 마지막 인덱스를 반환한다. `sub` 없으면 `-1` 반환한다.                      |
| `str.index(sub[, start[, end]])`           | 문자열에서 `sub`  번째 인덱스를 반환한다. `sub` 없으면 `ValueError` 발생시킨다.            |
| `str.rindex(sub[, start[, end]])`          | 문자열에서 `sub` 마지막 인덱스를 반환한다. `sub` 없으면 `ValueError` 발생시킨다.             |
| `str.count(sub[, start[, end]])`          | 문자열에서 `sub` 발생 횟수를 반환한다. `start` `end` 검색 범위를 지정할  있다.             |
| `str.replace(old, new[, count])`          | 문자열에서 `old` `new` 교체한다. `count` 주어지면 최대 `count` 교체한다.                    |
| `str.partition(sep)`                      | 문자열을 `sep` 기준으로  부분으로 나누어 튜플로 반환한다.                                         |
| `str.rpartition(sep)`                     | 문자열을 `sep` 기준으로  부분으로 나누어 튜플로 반환한다. 오른쪽에서부터 시작한다.              |
| `str.removeprefix(prefix)`                | 문자열이 `prefix` 시작하면 `prefix` 제거한 문자열을 반환한다.                                      |
| `str.removesuffix(suffix)`                | 문자열이 `suffix` 끝나면 `suffix` 제거한 문자열을 반환한다.                                      |
적용 예시 ```python # 문자열에서 'sub'의 첫 번째 인덱스 찾기 text = "hello world" index = text.find("world") print("첫 번째 'world'의 인덱스:", index) # 출력: 첫 번째 'world'의 인덱스: 6 # 문자열에서 'sub'의 마지막 인덱스 찾기 text = "hello world world" last_index = text.rfind("world") print("마지막 'world'의 인덱스:", last_index) # 출력: 마지막 'world'의 인덱스: 12 # 문자열에서 'sub'의 첫 번째 인덱스 찾기 (없으면 ValueError 발생) text = "hello world" index = text.index("world") print("첫 번째 'world'의 인덱스:", index) # 출력: 첫 번째 'world'의 인덱스: 6 # 문자열에서 'sub'의 마지막 인덱스 찾기 (없으면 ValueError 발생) text = "hello world world" last_index = text.rindex("world") print("마지막 'world'의 인덱스:", last_index) # 출력: 마지막 'world'의 인덱스: 12 # 문자열에서 'sub'의 발생 횟수 세기 text = "hello world" count = text.count("o") print("문자 'o'의 발생 횟수:", count) # 출력: 문자 'o'의 발생 횟수: 2 # 문자열에서 'old'를 'new'로 교체하기 text = "hello world" new_text = text.replace("world", "Python") print("교체된 문자열:", new_text) # 출력: 교체된 문자열: hello Python # 문자열을 'sep'를 기준으로 나누기 text = "hello world" parts = text.partition(" ") print("나누어진 문자열:", parts) # 출력: 나누어진 문자열: ('hello', ' ', 'world') # 문자열을 오른쪽에서부터 'sep'를 기준으로 나누기 text = "hello world example" parts = text.rpartition(" ") print("오른쪽에서 나누어진 문자열:", parts) # 출력: 오른쪽에서 나누어진 문자열: ('hello world', ' ', 'example') # 문자열이 'prefix'로 시작하면 'prefix'를 제거하기 text = "TestHook" new_text = text.removeprefix("Test") print("접두사가 제거된 문자열:", new_text) # 출력: 접두사가 제거된 문자열: Hook # 문자열이 'suffix'로 끝나면 'suffix'를 제거하기 text = "MiscTests.x" new_text = text.removesuffix(".x") print("접미사가 제거된 문자열:", new_text) # 출력: 접미사가 제거된 문자열: MiscTests ```


(4) 공백 및 줄 나누기

| 메서드/함수                                | 설명                                                                                                 |
|-------------------------------------------|------------------------------------------------------------------------------------------------------|
| `str.strip([chars])`                      | 문자열의 양쪽 끝에서 지정한 문자를 제거한다. `chars` 없으면 공백을 제거한다.                     |
| `str.lstrip([chars])`                     | 문자열의 왼쪽 끝에서 지정한 문자를 제거한다.                                                         |
| `str.rstrip([chars])`                     | 문자열의 오른쪽 끝에서 지정한 문자를 제거한다.                                                        |
| `str.split([sep[, maxsplit]])`            | 문자열을 `sep` 기준으로 분할하여 리스트를 반환한다. `maxsplit` 주어지면 최대 `maxsplit` 분할한다. |
| `str.splitlines([keepends])`              | 문자열을  단위로 분할하여 리스트를 반환한다. `keepends` `True`이면  바꿈 문자를 유지한다.       |
적용 예시 ```python # 문자열의 양쪽 끝에서 공백 제거하기 text = " hello " stripped_text = text.strip() print("양쪽 끝 공백 제거된 문자열:", stripped_text) # 출력: 양쪽 끝 공백 제거된 문자열: hello # 문자열의 왼쪽 끝에서 공백 제거하기 text = " hello " lstripped_text = text.lstrip() print("왼쪽 끝 공백 제거된 문자열:", lstripped_text) # 출력: 왼쪽 끝 공백 제거된 문자열: hello # 문자열의 오른쪽 끝에서 공백 제거하기 text = " hello " rstripped_text = text.rstrip() print("오른쪽 끝 공백 제거된 문자열:", rstripped_text) # 출력: 오른쪽 끝 공백 제거된 문자열: hello # 문자열을 공백을 기준으로 분할하여 리스트로 변환하기 text = "hello world" split_text = text.split() print("공백 기준으로 나눈 문자열:", split_text) # 출력: 공백 기준으로 나눈 문자열: ['hello', 'world'] # 문자열을 줄 단위로 분할하여 리스트로 변환하기 text = "line1\nline2" split_lines = text.splitlines() print("줄 단위로 나눈 문자열:", split_lines) # 출력: 줄 단위로 나눈 문자열: ['line1', 'line2'] ```


(5) 검사 및 변환

| 메서드/함수                                | 설명                                                                                                 |
|-------------------------------------------|------------------------------------------------------------------------------------------------------|
| `str.isalnum()`                           | 문자열이 알파벳과 숫자만 포함되면 `True` 반환한다.                                                   |
| `str.isnumeric()`                         | 문자열이 숫자만 포함되면 `True` 반환한다.                                                           |
| `str.isalpha()`                           | 문자열이 알파벳만 포함되면 `True` 반환한다.                                                         |
| `str.islower()`                           | 문자열이 모두 소문자면 `True` 반환한다.                                                            |
| `str.isupper()`                           | 문자열이 모두 대문자면 `True` 반환한다.                                                            |
| `str.isspace()`                           | 문자열이 공백 문자만 포함되면 `True` 반환한다.                                                      |
| `str.capitalize()`                        | 문자열의  글자만 대문자로 변환한다.                                                               |
적용 예시 ```python # 문자열이 알파벳과 숫자만 포함되면 True 반환하기 text = "hello123" is_alnum = text.isalnum() print("알파벳과 숫자만 포함된 문자열인가요?:", is_alnum) # 출력: 알파벳과 숫자만 포함된 문자열인가요?: True # 문자열이 숫자만 포함되면 True 반환하기 text = "123" is_numeric = text.isnumeric() print("숫자만 포함된 문자열인가요?:", is_numeric) # 출력: 숫자만 포함된 문자열인가요?: True # 문자열이 알파벳만 포함되면 True 반환하기 text = "hello" is_alpha = text.isalpha() print("알파벳만 포함된 문자열인가요?:", is_alpha) # 출력: 알파벳만 포함된 문자열인가요?: True # 문자열이 모두 소문자면 True 반환하기 text = "hello" is_lower = text.islower() print("모두 소문자인 문자열인가요?:", is_lower) # 출력: 모두 소문자인 문자열인가요?: True # 문자열이 모두 대문자면 True 반환하기 text = "HELLO" is_upper = text.isupper() print("모두 대문자인 문자열인가요?:", is_upper) # 출력: 모두 대문자인 문자열인가요?: True # 문자열이 공백 문자만 포함되면 True 반환하기 text = " " is_space = text.isspace() print("공백 문자만 포함된 문자열인가요?:", is_space) # 출력: 공백 문자만 포함된 문자열인가요?: True ```


2.3 데이터 타입의 변환(casting)

서로 다른 데이터 타입 간의 변환은 캐스팅(casting)을 통해 가능하다.

# 정수로 변환
int_res1 = print(int(3.14159))  # 3
int_res2 = print(int(7 / 3))    # 2
int_res2 = print(int("3000"))   # 3000

# 실수로 변환
float_res1 = print(float(3))    # 3.0
float_res2 = print(float(6 / 3))    # 2.0
float_res3 = print(float("3000"))   # 3000.0
float_res3 = print(float(3.141592)) # 3.141592

# 문자열로 변환
age = 20
message = str(age) + "번째 생일을 축하합니다!"
print(message)  # 20번째 생일을 축하합니다!



3. 연산자

3.1 산술 연산자

파이썬은 //을 사용하여 몫만 추출할 수 있다.

a = 10
b = 3

print(a + b)  # 13 (덧셈)
print(a - b)  # 7  (뺄셈)
print(a * b)  # 30 (곱셈)
print(a / b)  # 3.3333... (나눗셈)
print(a // b) # 3  (몫)
print(a % b)  # 1  (나머지)
print(a ** b) # 1000 (거듭제곱)


3.2 관계 연산자

x = 10
y = 5

print(x == y)  # False
print(x != y)  # True
print(x > y)   # True
print(x < y)   # False
print(x >= y)  # True
print(x <= y)  # False


3.3 논리 연산자

x = True
y = False

print(x and y)  # False
print(x or y)   # True
print(not x)    # False


3.4 비트 연산자

a = 5  # 0b0101
b = 3  # 0b0011

print(a & b)  # 1  (0b0001)
print(a | b)  # 7  (0b0111)
print(a ^ b)  # 6  (0b0110)
print(~a)     # -6 (0b...1010)
print(a << 1) # 10 (0b1010)
print(a >> 1) # 2  (0b0010)



4. 조건문과 반복문

4.1 조건문

조건문 예제

x = 10
y = 5

if x > y:
    print("x는 y보다 큽니다.")
elif x < y:
    print("x는 y보다 작습니다.")
else:
    print("x와 y는 같습니다.")


중첩 조건문

a = 15

if a > 10:
    if a < 20:
        print("a는 10보다 크고 20보다 작습니다.")
    else:
        print("a는 20 이상입니다.")
else:
    print("a는 10 이하입니다.")


조건 표현식

단일 조건을 간단하게 표현할 때 사용한다.

result = "참" if x > y else "거짓"
print(result)


4.2 반복문

for 문

fruits = ["apple", "banana", "cherry"]

for fruit in fruits:
    print(fruit)


range() 함수와 for 문

range() 함수는 일정 범위의 숫자를 생성하여 for 문과 함께 사용할 수 있다.

for i in range(5):
    print(i)  # 0부터 4까지 출력


count = 0

while count < 5:
    print(count)
    count += 1


while 반복문

count = 0

while count < 5:
    print(count)
    count += 1


반복문 제어문

  • break: 반복문을 강제로 종료
  • continue: 현재 반복을 건너뛰고 다음 반복을 실행
  • else: 반복문이 정상적으로 끝났을 때 실행 (반복문이 break로 종료된 경우 실행되지 않음).
for i in range(10):
    if i == 5:
        break  # 5에서 반복문 종료
    print(i)

for i in range(10):
    if i % 2 == 0:
        continue  # 짝수는 건너뛰기
    print(i)
else:
    print("반복이 정상적으로 종료되었습니다.")



5. 리스트와 튜플

리스트와 튜플은 여러 값을 저장할 수 있는 자료형이다.

5.1 리스트 (List)

리스트는 변경 가능한(mutable) 시퀀스 자료형으로, 다양한 데이터 타입의 항목을 포함할 수 있다.

  • 리스트 생성: 대괄호 []를 사용하여 생성
  • 리스트 요소 접근: 인덱스를 사용하여 요소에 접근 가능
  • 리스트 요소 추가: append(), insert(), extend() 메서드를 사용하여 요소 추가 가능
  • 리스트 요소 제거: remove(), pop(), clear() 메서드를 사용하여 요소 제거 가능
  • 리스트 정렬: sort() 메서드를 사용하여 리스트를 정렬 가능
# 리스트 생성 및 기본 연산
fruits = ["apple", "banana", "cherry"]
print(fruits[0])  # "apple"

fruits.append("orange")  # 리스트에 요소 추가
print(fruits)  # ["apple", "banana", "cherry", "orange"]

fruits.remove("banana")  # 리스트에서 요소 제거
print(fruits)  # ["apple", "cherry", "orange"]

fruits.sort()  # 리스트 정렬
print(fruits)  # ["apple", "cherry", "orange"]


5.2 튜플 (Tuple)

튜플은 변경할 수 없는(immutable) 시퀀스 자료형으로, 리스트와 유사하지만 생성된 후에는 값을 변경할 수 없다.

  • 튜플 생성: 소괄호 ()를 사용하여 생성, 요소가 하나뿐인 튜플을 만들 때는 ,를 추가해야 함
  • 튜플 요소 접근: 리스트와 마찬가지로 인덱스를 사용하여 요소에 접근 가능
# 튜플 생성 및 기본 연산
colors = ("red", "green", "blue")
print(colors[1])  # "green"

# 튜플의 요소는 변경할 수 없다.
# colors[0] = "yellow"  # 오류 발생

# 튜플의 길이
print(len(colors))  # 3

# 요소가 하나뿐인 튜플 생성
single_element_tuple = ("hello",)
print(type(single_element_tuple))  # <class 'tuple'>



6. 딕셔너리와 집합

딕셔너리와 집합은 파이썬에서 각각 키-값 쌍과 중복 없는 요소의 집합을 저장하는 데 사용

6.1 딕셔너리 (Dictionary)

딕셔너리는 키(key)와 값(value) 쌍을 저장하는 자료형으로, 키를 사용하여 값을 빠르게 조회할 수 있음

  • 딕셔너리 생성: 중괄호 {}를 사용하여 생성
  • 딕셔너리 요소 접근: 키를 사용하여 값에 접근
  • 딕셔너리 요소 추가 및 수정: 키를 사용하여 요소를 추가하거나 수정
  • 딕셔너리 요소 삭제: del 키워드 또는 pop() 메서드를 사용하여 요소 삭제
# 딕셔너리 생성 및 기본 연산
person = {"name": "Alice", "age": 25, "city": "New York"}
print(person["name"])  # "Alice"

person["age"] = 30  # 딕셔너리 값 수정
print(person)  # {"name": "Alice", "age": 30, "city": "New York"}

person["email"] = "alice@example.com"  # 딕셔너리 값 추가
print(person)  # {"name": "Alice", "age": 30, "city": "New York", "email": "alice@example.com"}

del person["city"]  # 딕셔너리 값 삭제
print(person)  # {"name": "Alice", "age": 30, "email": "alice@example.com"}


6.2 집합 (Set)

집합은 중복되지 않는 요소들의 모임을 표현하며, 요소들은 순서가 없음

  • 집합 생성: 중괄호 {}를 사용하여 생성
  • 집합 요소 추가 및 제거: add() 메서드를 사용하여 요소를 추가하고, remove() 메서드를 사용하여 요소 제거
  • 집합 연산: 교집합, 합집합, 차집합 등의 연산을 수행 가능
# 집합 생성 및 기본 연산
fruits = {"apple", "banana", "cherry"}
print(fruits)  # {"apple", "banana", "cherry"}

fruits.add("orange")  # 집합에 요소 추가
print(fruits)  # {"apple", "banana", "cherry", "orange"}

fruits.remove("banana")  # 집합에서 요소 제거
print(fruits)  # {"apple", "cherry", "orange"}

# 집합 연산
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

print(a & b)  # 교집합: {3, 4}
print(a | b)  # 합집합: {1, 2, 3, 4, 5, 6}
print(a - b)  # 차집합: {1, 2}



7. 함수

함수 정의

def 키워드를 사용하여 정의

def greet(name):
    return f"Hello, {name}!"

message = greet("sieun")
print(message)  # "Hello, sieun!"


기본 매개변수

함수 정의 시 기본값을 가지는 매개변수를 설정할 수 있다.

def greet(name="Guest"):
    return f"Hello, {name}!"

print(greet())           # "Hello, Guest!"
print(greet("sieun"))  # "Hello, sieun!"


가변 매개변수

파이썬 함수는 매개변수의 개수를 가변적으로 받을 수 있다.

  • *args: 위치 인수를 튜플로 받음
  • **kwargs: 키워드 인수를 딕셔너리로 받음
def add(*args):
    return sum(args)

print(add(1, 2, 3, 4))  # 10

def display_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

display_info(name="짱구", age=5, city="떡잎마을")
# 출력:
# name: 짱구
# age: 5
# city: 떡잎마을


람다 함수 (Lambda Functions)

람다 함수는 익명 함수로, 짧고 간단한 함수를 정의할 때 사용한다.

# 두 수의 합을 반환하는 람다 함수
add = lambda x, y: x + y
print(add(5, 3))  # 8

# 리스트의 각 요소를 제곱하는 람다 함수와 map()의 결합
squares = list(map(lambda x: x ** 2, [1, 2, 3, 4]))
print(squares)  # [1, 4, 9, 16]



8. 파일 입출력

8.1 파일 열기

파일을 열 때 open() 함수는 파일 경로와 모드를 인수로 받는다.

  • r: 읽기 모드 (파일이 존재해야 함)
  • w: 쓰기 모드 (파일이 존재하지 않으면 새로 생성)
  • a: 추가 모드 (파일의 끝에 데이터를 추가)
  • b: 이진 모드 (바이너리 파일 읽기/쓰기 시 사용)
# 파일 열기
file = open("example.txt", "r")


8.2 파일 읽기

파일을 읽을 때 read(), readline(), readlines() 메서드를 사용한다.

file = open("example.txt", "r")

# 파일 전체 읽기
content = file.read()
print(content)

# 한 줄씩 읽기
file.seek(0)  # 파일 포인터를 처음으로 이동
line = file.readline()
print(line)

# 모든 줄을 리스트로 읽기
file.seek(0)
lines = file.readlines()
print(lines)

file.close()  # 파일 닫기


8.3 파일 쓰기

파일에 데이터를 쓸 때는 write() 또는 writelines() 메서드를 사용한다.

file = open("example.txt", "w")

# 파일에 문자열 쓰기
file.write("Hello, World!\n")

# 여러 줄을 리스트로 작성하기
lines = ["First line\n", "Second line\n", "Third line\n"]
file.writelines(lines)

file.close()  # 파일 닫기


8.4 파일 닫기

파일 작업을 마친 후에는 반드시 close() 메서드를 사용하여 파일을 닫아야한다.(데이터 손실이나 메모리 누수를 막기 위함)

file = open("example.txt", "r")
# 파일 작업 수행
file.close()  # 파일 닫기


8.5 with문과 함께 사용하는 파일 입출력

  • 파일을 열고 닫는 작업을 안전하게 처리하기 위해 with문을 사용할 수 있다.
  • with문을 사용하면 코드 블록이 끝날 때 파일이 자동으로 닫힌다.
with open("example.txt", "r") as file:
    content = file.read()
    print(content)
# 블록이 끝나면 파일이 자동으로 닫힘


카테고리:

업데이트:

댓글남기기