강의 목표
- 파일을 열고, 읽고, 쓰는 방법을 익히고, 이를 활용한 간단한 프로그램을 작성할 수 있습니다.
- 프로그램이 예기치 않은 상황에서도 오류 없이 동작할 수 있도록 예외를 처리하는 방법을 배웁니다.
- 파이썬에서 자주 사용하는 자료구조인 리스트, 딕셔너리, 튜플, 집합의 사용법을 익힙니다.
목차
파일 입출력
파일 열기 및 닫기
파일을 열고, 읽고, 쓰는 방법을 배워봅시다. 파일을 열 때는 open() 함수를 사용하며, 작업이 끝나면 close()를 통해 파일을 닫아야 합니다.
# 파일 열기
file = open('example.txt', 'r') # 읽기 모드로 파일 열기
# 파일 내용 읽기
content = file.read()
print(content)
# 파일 닫기
file.close()
파일 읽기 및 쓰기
파일에 데이터를 쓰고, 다시 읽어오는 방법입니다.
# 파일 쓰기
file = open('example.txt', 'w')
file.write('Hello, world!')
file.close()
# 파일 읽기
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
with 문을 사용한 안전한 파일 처리
with 문을 사용하면 파일을 자동으로 닫을 수 있어, 코드가 더 안전해집니다. 조금 모르겠죠? 파이썬에서 파일을 다룰 때, 파일을 열고(open()), 작업이 끝난 후에 반드시 파일을 닫아야 합니다(close()). 파일을 닫지 않으면 메모리 누수나 파일 손상, 다른 프로그램에서 파일을 사용할 수 없는 문제가 발생할 수 있습니다.
위 내용처럼 일반적으로는 open()과 close()를 사용합니다. 하지만 특정 상황에서 close()가 호출 되지 않고 코드가 끝나버리는 경우가 있습니다. 그렇기 때문에 with을 사용합니다.
with open('example.txt', 'r') as file:
content = file.read()
print(content)
with 문은 컨텍스트 관리자라고 불리는 기능을 사용하여, 코드 블록이 끝나면 파일을 자동으로 닫아 줍니다. 예외가 발생하더라도 파일을 안전하게 닫을 수 있습니다.
예외 처리
try, except 문을 사용한 예외 처리
예외 처리는 프로그램이 오류로 인해 중단되지 않도록 도와줍니다.
try:
file = open('nonexistent_file.txt', 'r')
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
else와 finally 절의 사용
예외가 발생하지 않았을 때 실행할 코드와, 예외 발생 여부와 상관없이 항상 실행되는 코드를 작성할 수 있습니다.
try:
file = open('example.txt', 'r')
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
else:
content = file.read()
print(content)
finally:
file.close()
with를 사용하지 않고 try, except를 이용해서 닫을 수도 있습니다
자료구조: 리스트, 딕셔너리, 튜플, 집합
자료구조는 파이썬에서 데이터를 효율적으로 저장하고 관리하기 위해 매우 중요합니다. 2강에서 기본적인 데이터 타입을 배웠다면, 이제는 그보다 더 복잡하고 유용한 데이터 구조들을 배워볼 차례입니다. 이 자료구조들은 데이터를 더욱 수월하게 다루고, 다양한 문제를 해결하는 데 필수적인 도구들입니다.
리스트 (List)
리스트는 순서가 있는 데이터의 모음입니다. 리스트는 생성, 접근, 수정이 가능하며, 슬라이싱을 통해 부분 리스트를 얻을 수 있습니다. 배열과 다른점은 크기가 가변적이라는 점 입니다.
# 리스트 생성
fruits = ['apple', 'banana', 'cherry']
# 리스트 접근
print(fruits[0]) # 출력: apple
# 리스트 수정
fruits[1] = 'blueberry'
print(fruits) # 출력: ['apple', 'blueberry', 'cherry']
# 리스트 슬라이싱
print(fruits[1:3]) # 출력: ['blueberry', 'cherry']
딕셔너리 (Dictionary)
딕셔너리는 키-값 쌍으로 데이터를 저장하는 자료구조입니다. 각 값은 고유한 키로 접근할 수 있습니다. 별명으로 값을 찾는다라고 생각하면 조금 쉬울까요?
# 딕셔너리 생성
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 딕셔너리 접근
print(person['name']) # 출력: Alice
# 딕셔너리 수정
person['age'] = 26
print(person) # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York'}
# 키와 값 얻기
print(person.keys()) # 출력: dict_keys(['name', 'age', 'city'])
print(person.values()) # 출력: dict_values(['Alice', 26, 'New York'])
튜플 (Tuple)
튜플은 리스트와 유사하지만, 불변(immutable) 자료구조입니다. 한 번 생성된 튜플의 값은 변경할 수 없습니다. 따라서 변경할 필요가 없는 데이터들을 저장할 때 유용합니다.
# 튜플 생성
my_tuple = (1, 2, 3)
# 튜플 접근
print(my_tuple[0]) # 출력: 1
# 튜플은 불변이므로 값을 변경할 수 없습니다.
# my_tuple[0] = 10 # 오류 발생
집합 (Set)
집합은 중복을 허용하지 않으며, 순서가 없는 자료구조입니다. 중복된 값을 제거하거나, 집합 연산(합집합, 교집합, 차집합)을 수행할 때 유용합니다.
# 집합 생성
my_set = {1, 2, 3, 3}
print(my_set) # 출력: {1, 2, 3} (중복된 값은 제거됨)
# 집합 연산
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 | set2) # 출력: {1, 2, 3, 4, 5} (합집합)
print(set1 & set2) # 출력: {3} (교집합)
print(set1 - set2) # 출력: {1, 2} (차집합)
연습문제
파일 입출력 실습
텍스트 파일을 읽어서 내용을 출력하는 프로그램 작성
파일에 데이터를 저장하고, 그 데이터를 다시 읽어오는 프로그램 작성
예외 처리 실습
잘못된 파일 경로나 없는 파일을 열려고 시도했을 때 발생하는 예외를 처리하는 코드 작성
자료구조 실습
숫자들의 리스트를 생성하고, 그 합을 구하는 프로그램 작성
딕셔너리를 사용해 학생들의 성적을 관리하고, 평균 성적을 계산하는 프로그램 작성
튜플을 사용해 좌표를 나타내고, 그 좌표를 출력하는 프로그램 작성
두 개의 집합을 생성하고, 합집합, 교집합, 차집합을 구하는 프로그램 작성
마무리
이번 강의에서는 파일 입출력과 예외 처리, 그리고 파이썬의 주요 자료구조인 리스트, 딕셔너리, 튜플, 집합에 대해 배웠습니다. 이 개념들은 파이썬 프로그래밍에서 매우 중요하며, 실전에서 자주 사용됩니다. 다음 강의에서는 이러한 개념들을 더 깊이 활용하여 실제 프로젝트에서 어떻게 응용할 수 있는지 배워보겠습니다.
FAQ
- 파일을 안전하게 열고 닫는 방법은 무엇인가요?
- 답변: with 문을 사용하면 파일을 열고 자동으로 닫을 수 있어, 파일 처리 중 발생할 수 있는 오류를 줄일 수 있습니다.
- 리스트, 딕셔너리, 튜플, 집합의 차이점은 무엇인가요?
- 답변: 리스트는 순서가 있는 데이터의 모음이고, 딕셔너리는 키-값 쌍으로 데이터를 저장하는 자료구조입니다. 튜플은 불변의 순서 있는 데이터 모음이며, 집합은 중복을 허용하지 않는 순서 없는 데이터의 모음입니다.
'이론 & 팁' 카테고리의 다른 글
파이썬 기초 연습문제 및 풀이: 파일 입출력, 예외처리, 자료구조 (0) | 2024.08.20 |
---|---|
파이썬 기초 연습문제 및 풀이: 함수와 모듈 (0) | 2024.08.16 |
아티스트를 위한 파이썬과 PyQt5: 3강 - 함수와 모듈 (0) | 2024.08.14 |
파이썬 기초 연습문제 및 풀이: 변수, 데이터 타입, 조건문, 반복문 5 (0) | 2024.08.13 |
파이썬 기초 연습문제 및 풀이: 변수, 데이터 타입, 조건문, 반복문 4 (0) | 2024.08.13 |