[비개발자용] 파이썬 기초 - 6과목 프로그래밍 언어
지난 시간은 JAVA에 대한 기초를 공부했습니다. C와 JAVA는 한 시험에 2~3개씩 출제되기 때문에 필수로 확인해야합니다.
생성자, 오버로딩, 오버라이딩 부분은 꼭 확인하시고 상속관계들에 대해 이해하시고 지나가셔야합니다.
이번 시간은 파이썬의 기초로 정처기실기에서 1개 정도 출제됩니다. 쉬운 언어이지만, 문법이 JAVA랑 유사하면서 조금씩 다르기 때문에 꼭 확인하셔야합니다. 데이터셋 타입에 대해서 꼭 알아두셔야합니다.
변수 선언할 때 별도의 데이터 타입을 선언하지 않아도 되며, 빅데이터 분석에도 자주 쓰이는 언어입니다. 빅데이터 분석기사를 준비하시는 분들은 함께 알아두시면 좋습니다.
목차
파이썬이란?
파이썬(Python)은 간결하고 읽기 쉬운 문법을 갖춘 고급 프로그래밍 언어입니다. 귀도 반 로섬(Guido van Rossum)이 개발한 파이썬은 1991년에 처음 공개되었으며, 현재는 다양한 플랫폼에서 지원되고 널리 사용되는 언어 중 하나입니다.
파이썬 특징
- 읽기 쉬운 문법: 파이썬은 간결하고 읽기 쉬운 문법을 가지고 있어 학습 곡선이 낮고 코드 작성이 편리합니다. 이로 인해 프로그래머들은 생산성을 높일 수 있습니다.
- 동적 타이핑: 파이썬은 동적 타이핑을 지원하여 변수의 데이터 타입을 선언하지 않아도 됩니다. 이는 코드 작성을 더욱 간단하게 만들어줍니다.
- 객체 지향 프로그래밍: 파이썬은 객체 지향 프로그래밍을 지원하여 코드의 재사용성을 높이고 유지보수를 쉽게 만들어줍니다.
- 풍부한 라이브러리: 파이썬은 풍부한 표준 라이브러리와 다양한 외부 라이브러리를 포함하고 있습니다. 이러한 라이브러리들은 다양한 작업을 수행하는 데 유용하며, 개발 시간을 단축시키고 코드의 품질을 향상시킵니다.
- 크로스 플랫폼: 파이썬은 다양한 운영 체제에서 동작하며, 이식성이 뛰어납니다. 따라서 윈도우, macOS, 리눅스 등 여러 플랫폼에서 사용할 수 있습니다.
- 빠른 개발: 파이썬은 빠른 개발과 프로토타이핑에 적합한 언어입니다. 간단한 문법과 높은 수준의 추상화로 인해 개발자는 코드를 빠르게 작성할 수 있습니다.
파이썬 문법
사칙연산
3/2 연산을 하면 1.5로 자동으로 실수형이 나옵니다.
# 사칙연산 예시
a = 10
b = 5
sum_result = a + b # 덧셈
sub_result = a - b # 뺄셈
mul_result = a * b # 곱셈
div_result = a / b # 나눗셈
변수 사용
파이썬에선 변수 타입없이 바로 작성이 가능합니다. 자동으로 할당되기 때문입니다.
# 변수 사용 예시
name = "Alice" # 문자열 변수
age = 25 # 정수 변수
height = 175.5 # 실수 변수
조건문
파이썬에선 if, elif, else
각각 if (조건 ) :
콜론(:)을 붙인다는 것을 기억해주세요
# 조건문 예시
score = 85
if score >= 90:
grade = 'A'
elif score >= 80: # elif임을 기억해야함
grade = 'B'
elif score >= 70:
grade = 'C'
else:
grade = 'F'
print("Grade:", grade)
반복문
for
for 문은 리스트, 튜플, 문자열 등의 순회 가능한(iterable) 객체를 순회하면서 각 요소에 대해 반복 작업을 수행합니다.
아래 예시는 fruits 리스트의 각 요소를 순회하면서 각 요소를 출력하는 예시입니다.
for i in [1,2,3]
print(i) # 기본이 ln과 같아 개행을 하게됨
#출력
1
2
3
while
while 문은 조건이 참(True)인 동안 반복 작업을 수행합니다.
아래 예시는 i가 5보다 작은 동안에만 i를 출력하고 i를 1씩 증가시키는 반복 작업을 수행합니다.
여기에서도 조건은 콜론(:)으로 쓰고 들여쓰기한 부분이 while에 포함됩니다.
i = 0
while i < 5:
print(i)
i += 1
range
range() 함수는 연속된 숫자의 시퀀스를 생성하는데 사용됩니다.
일반적으로 반복문과 함께 사용되어 특정 범위의 숫자를 반복하는 데 유용합니다.
아래 예시는 0부터 4까지의 숫자를 반복하면서 각 숫자를 출력합니다.
for i in range(5): # 0부터 4까지의 숫자를 생성
print(i)
print(range(3) # [0,1,2]
print(range(3,6) # [3,4,5] #시작 3 6까지(나 빼고)
print(range(3,15,3) # 3부터 15까지(나빼고) 3칸씩 건너뛰어서 3,6,9,12
a=range(1,8,2)
for i in a:
print(i)
#출력
1
3
5
7
함수
파이썬에서 함수는 def 키워드를 사용하여 정의됩니다. 함수 정의는 함수의 이름, 매개변수, 그리고 함수가 수행할 코드 블록으로 구성됩니다.
- 함수 호출: 함수를 호출하려면 함수의 이름을 사용하고 필요한 매개변수를 전달합니다. 함수가 호출되면 해당 함수의 코드 블록이 실행됩니다.
- 리턴 값: 함수가 값을 반환(return)하려면 return 키워드를 사용합니다. 함수가 값을 반환하면 해당 값을 가진 호출 부분으로 제어가 반환됩니다.
def 함수이름(매개변수):
코드 블록
def greet(name):
print("Hello, " + name + "!")
함수이름(전달할 매개변수)
greet("Alice")
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 출력: 8
정보처리기사 실기 빈출 파이썬 문자열
문자열 선언, 사용 방법
문자열(String)은 파이썬에서 가장 자주 사용되는 데이터 타입 중 하나입니다. 문자열은 작은 따옴표(')나 큰 따옴표(")로 감싸져 있습니다.
str1 = 'Hello, World!' # 작은 따옴표로 선언
str2 = "Python Programming" # 큰 따옴표로 선언
# 문자열 사용 방법
print(str1[0]) # 출력: 'H'
#슬라이싱
print(str2[7:18]) # 출력: Programming
prin(str1+str2) #출력 Hello, World!Python Programming
문자열 함수
파이썬은 문자열을 다루기 위한 다양한 내장 함수를 제공합니다. 몇 가지 자주 사용되는 문자열 함수에 대해 설명하겠습니다.
join
- join() 함수는 문자열 리스트를 지정된 구분자(separator)로 연결하여 하나의 문자열로 반환합니다.
- 문법: '구분자'.join(문자열 리스트)
fruits = ['apple', 'banana', 'cherry']
result = ', '.join(fruits)
print(result) # 출력: 'apple, banana, cherry'
partition
- partition() 함수는 지정된 구분자(separator)를 기준으로 문자열을 세 부분으로 나누어 튜플로 반환합니다.
- 문법: 문자열.partition(구분자)
- 구분자를 기준으로 세 구역으로 나뉘게됨 (구분자가 발견되면 구분)
- 구분자도 출력됨
text = "Python is a powerful programming language"
parts = text.partition('is')
print(parts) # 출력: ('Python ', 'is', ' a powerful programming language')
split
- split() 함수는 지정된 구분자(separator)를 기준으로 문자열을 분할하여 리스트로 반환합니다.
- 문법: 문자열.split(구분자)
- 구분자를 기준으로 모두 나눠지게됨
- 구분자는 출력하지 않음
text = "Python is a powerful programming language"
words = text.split(' ')
print(words) # 출력: ['Python', 'is', 'a', 'powerful', 'programming', 'language']
format
- format() 함수는 데이터타입 지정자입니다.
- %d, %s, %c, %f는 포맷 문자열을 나타내는 서식 지정자(format specifier)입니다. \
age = 25
print("나이: %d" % age) # 출력: '나이: 25'
name = "Alice"
print("이름: %s" % name) # 출력: '이름: Alice'
initial = 'A'
print("이니셜: %c" % initial) # 출력: '이니셜: A'
height = 175.5
print("키: %f" % height) # 출력: '키: 175.500000'
len
- len() 함수는 문자열의 길이를 반환합니다.
- 문자열의 글자 수나 리스트의 요소 개수 등을 세는 데 사용됩니다.
- 문법: len(문자열)
- 1부터 셈
text = "Python is awesome!"
length = len(text)
print(length) # 출력: 18
find
- find() 함수는 문자열 내에서 지정된 부분 문자열(substring)을 찾고, 그 부분 문자열의 첫 번째 인덱스를 반환합니다. 부분 문자열이 없는 경우 -1을 반환합니다.
- 문법: 문자열.find(부분 문자열)
- 찾을 때는 배열 0번지부터
text = "Python is a powerful programming language"
index = text.find('powerful')
print(index) # 출력: 11
upper
- upper() 함수는 문자열의 모든 문자를 대문자로 변환한 새로운 문자열을 반환합니다.
- 문법: 문자열.upper()
text = "Hello, World!"
uppercase_text = text.upper()
print(uppercase_text) # 출력: 'HELLO, WORLD!'
lower
- lower() 함수는 문자열의 모든 문자를 소문자로 변환한 새로운 문자열을 반환합니다.
- 문법: 문자열.lower()
text = "Hello, World!"
lowercase_text = text.lower()
print(lowercase_text) # 출력: 'hello, world!'
lstrip
- lstrip() 함수는 문자열의 왼쪽(시작 부분)에서 공백을 제거한 새로운 문자열을 반환합니다.
- 문법: 문자열.lstrip()
text = " Hello, World! "
new_text = text.lstrip()
print(new_text) # 출력: 'Hello, World! '
rstrip
- rstrip() 함수는 문자열의 오른쪽(끝 부분)에서 공백을 제거한 새로운 문자열을 반환합니다.
- 문법: 문자열.rstrip()
text = " Hello, World! "
new_text = text.rstrip()
print(new_text) # 출력: ' Hello, World!'
strip
- strip() 함수는 문자열의 양쪽(시작과 끝 부분)에서 공백을 제거한 새로운 문자열을 반환합니다.
- 문법: 문자열.strip()
text = " Hello, World! "
new_text = text.strip()
print(new_text) # 출력: 'Hello, World!'
예시
#len(): 문자열의 길이를 반환합니다.
print(len(str1)) # 출력: 13
#upper(), lower(): 문자열을 각각 대문자나 소문자로 변환합니다.
print(str1.upper()) # 출력: 'HELLO, WORLD!'
print(str2.lower()) # 출력: 'python programming'
#strip(): 문자열의 앞뒤 공백을 제거합니다.
str3 = " Hello, Python "
print(str3.strip()) # 출력: 'Hello, Python'
#split(): 문자열을 지정한 구분자(delimiter)를 기준으로 분리한 후 리스트로 반환합니다.
str4 = "apple,banana,grape"
fruits = str4.split(',')
print(fruits) # 출력: ['apple', 'banana', 'grape']
#join(): 리스트의 각 요소를 지정한 구분자로 연결한 문자열을 반환합니다.
fruits = ['apple', 'banana', 'grape']
str5 = ','.join(fruits)
print(str5) # 출력: 'apple,banana,grape'
파이썬 자료 구조(데이터 타입)
리스트(List) []
- 가장 많이 사용, 일반적인 배율로 보면됨
- 순서가 있는 데이터의 모음으로, 대괄호([])를 사용하여 정의됩니다.
- 데이터를 추가, 삭제, 수정할 수 있으며, 중복된 값도 포함할 수 있습니다.
- 리스트는 변경 가능(mutable)한 자료 구조입니다.
my_list = [1, 2, 3, 4, 5]
my_list.append(6) # 요소 추가
my_list.remove(3) # 요소 삭제
my_list[0] = 0 # 요소 수정
print(my_list*3) # 세 번 반복하여 출력합니다. 따라서 출력 결과는 [1, 2, 4, 5, 6, 1, 2, 4, 5, 6, 1, 2, 4, 5, 6]가 됨
리스트 슬라이스
슬라이스는 데이터를 자른다는 것으로 이해하셔도 좋습니다.
배열에 있는 인자들을 어떻게 가져올지 정하는 것입니다.
my_list = [1, 2, 3, 4, 5]
# 리스트의 첫 번째 요소부터 세 번째 요소까지 슬라이스
slice1 = my_list[0:3]
print(slice1) # 출력: [1, 2, 3]
# 리스트의 두 번째 요소부터 끝까지 슬라이스
slice2 = my_list[1:]
print(slice2) # 출력: [2, 3, 4, 5]
# 리스트의 뒤에서 두 번째 요소부터 끝까지 슬라이스
slice3 = my_list[-2:]
print(slice3) # 출력: [4, 5]
# 리스트의 첫 번째 요소부터 뒤에서 두 번째 요소까지 슬라이스 (뒤에서 두 번째 요소는 포함되지 않음)
slice4 = my_list[:-1]
print(slice4) # 출력: [1, 2, 3, 4]
# 리스트의 모든 요소를 역순으로 슬라이스
slice5 = my_list[::-1]
print(slice5) # 출력: [5, 4, 3, 2, 1]
리스트 추가, 삭제, 병합
- 추가(Add)
- append(): 리스트의 끝에 요소를 추가합니다.
- extend(): 리스트의 끝에 다른 리스트의 모든 요소를 추가합니다.
- 삭제(Delete)
- remove(): 리스트에서 지정된 값과 일치하는 첫 번째 항목을 삭제합니다.
- pop(): 리스트의 지정된 인덱스에 해당하는 요소를 삭제하고 해당 요소를 반환합니다.
- 병합(Merge)
- +: 리스트를 연결하여 새로운 리스트를 생성합니다.
- extend(): 이미 존재하는 리스트에 다른 리스트의 모든 요소를 추가합니다.
- 2022년 1회 기출에 extend가 나왔었습니다.
- 1. 요소를 확장해주는 역할을 하며, 모든 항목을 하나의 요소로 추가 : extend
- 2. 리스트 내부 요소를 꺼내주는 함수, 해당 함수를 호출하면 리스트에서 해당 값을 삭제하면서 리턴시켜준다.: pop
- 3. 리스트 내부의 요소의 순서를 뒤집어주는 역할을 한다 : reverse
# 리스트 생성
my_list = [1, 2, 3]
# 추가
my_list.append(4) # [1, 2, 3, 4]
my_list.extend([5, 6]) # [1, 2, 3, 4, 5, 6]
# 삭제
my_list.remove(3) # [1, 2, 4, 5, 6]
my_list.pop(1) # [1, 4, 5, 6]
# 병합
new_list = my_list + [7, 8] # [1, 4, 5, 6, 7, 8]
my_list.extend([9, 10]) # [1, 4, 5, 6, 7, 8, 9, 10]
리스트 검색 방법
인덱싱(Indexing)
리스트 내의 특정 위치에 있는 요소에 접근할 수 있습니다. 인덱스는 0부터 시작하며, 음수 인덱스는 뒤에서부터 요소를 가져옵니다.
아래 코드에서 첫 번째 줄은 'apple' 문자열이 리스트에서 처음으로 발견되는 인덱스를 출력합니다. 결과는 0입니다. 두 번째 줄은 'banana' 문자열이 리스트에서 발견된 횟수를 출력합니다. 결과는 2입니다.
list = ['apple', 'banana', 'cherry', 'banana']
print(list.index(apple)) # 출력: 0 - 0번지에 있음
print(list.count(banana)) # 출력: 2 - 2개 있음
in 키워드
in 키워드를 사용하여 리스트에 특정 요소가 포함되어 있는지 확인할 수 있습니다.
my_list = ['apple', 'banana', 'cherry']
print('banana' in my_list) # 출력: True
count() 메서드
count() 메서드를 사용하여 리스트에서 특정 요소의 개수를 세어줍니다.
my_list = ['apple', 'banana', 'cherry', 'banana']
print(my_list.count('banana')) # 출력: 2
+ 메서드
리스트 객체의 + 메서드는 두 개의 리스트를 연결하여 새로운 리스트를 반환합니다. 이 연산은 두 리스트를 이어 붙이는 역할을 합니다.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list1 + list2
print(result) # 출력: [1, 2, 3, 4, 5, 6]
튜플(Tuple) ()
- 리스트와 유사하지만, 수정이 불가능(immutable)한 자료 구조입니다. 소괄호(())를 사용하여 정의됩니다.
- 데이터를 추가, 삭제, 수정할 수 없으며, 중복된 값도 포함할 수 있습니다.
- 튜플은 불변성(immutability)으로 인해 보다 안전하게 데이터를 관리할 수 있습니다.
my_tuple = (1, 2, 3, 4, 5)
세트(set) {}
- 순서가 없고, 중복된 값을 허용하지 않는 자료 구조입니다. 중괄호({})를 사용하여 정의됩니다.
- 세트는 집합 연산(교집합, 합집합, 차집합 등)을 제공
- 순서가 없기 때문에 인덱싱이 불가능합니다.
- 출력은 {}로 출력된다.
my_set = {1, 2, 3, 4, 5}
print(my_set) # 출력: {1, 2, 3, 4, 5}
# add, remove 예시
my_set = {1, 2, 3, 4, 5}
my_set.add(6) # 요소 추가
my_set.remove(3) # 요소 삭제
딕셔너리
- 키-값(key-value) 쌍으로 데이터를 저장하는 자료 구조입니다. 중괄호({})를 사용하여 정의되며, 각 요소는 콜론(:)으로 구분됩니다.
- 키는 고유해야 하지만, 값은 중복될 수 있습니다.
- 딕셔너리는 키를 사용하여 값을 검색하고 관리할 수 있습니다.
- values()
- values() 메서드는 딕셔너리의 값들을 포함하는 딕셔너리 뷰 객체를 반환합니다. 이 뷰 객체는 딕셔너리의 모든 값들을 조회할 수 있습니다.
- keys()
- keys() 메서드는 딕셔너리의 키들을 포함하는 딕셔너리 뷰 객체를 반환합니다. 이 뷰 객체는 딕셔너리의 모든 키들을 조회할 수 있습니다.
- items()
- items() 메서드는 딕셔너리의 키-값 쌍을 포함하는 딕셔너리 뷰 객체를 반환합니다. 이 뷰 객체는 딕셔너리의 모든 키-값 쌍을 조회할 수 있습니다.
- get()
- get() 메서드는 지정된 키에 해당하는 값을 반환합니다. 만약 해당 키가 딕셔너리에 존재하지 않으면 None을 반환합니다. 또한, 기본값을 지정하여 키가 존재하지 않을 경우 해당 기본값을 반환할 수도 있습니다.
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York', 'gender': 'female'}
# values() 메서드 사용 예시
print("Values:", my_dict.values()) # 출력: dict_values(['Alice', 30, 'New York', 'female'])
# keys() 메서드 사용 예시
print("Keys:", my_dict.keys()) # 출력: dict_keys(['name', 'age', 'city', 'gender'])
# items() 메서드 사용 예시
print("Items:", my_dict.items()) # 출력: dict_items([('name', 'Alice'), ('age', 30), ('city', 'New York'), ('gender', 'female')])
# get() 메서드 사용 예시
print("Age:", my_dict.get('age')) # 출력: 30
print("Country:", my_dict.get('country')) # 출력: None (키가 존재하지 않음)
print("Country:", my_dict.get('country', 'USA')) # 출력: USA (기본값으로 지정한 값 반환)
'정보처리기사' 카테고리의 다른 글
[정처기 실기] 암호화 알고리즘 예상문제 (2) | 2024.04.20 |
---|---|
[정처기] 비개발자 파이썬 기본기 - 정보처리기사 실기 문제 잡기 (2) | 2024.04.18 |
[정처기] 비개발자 JAVA 기초 - 6과목 프로그래밍 언어 (0) | 2024.04.13 |
[정처기] 비개발자 C언어 기초 - 6과목 프로그래밍 언어 (0) | 2024.04.13 |
[정보처리기사] 5. 보안 공격 기법 총 정리 - 5과목 정보보안 (0) | 2024.04.11 |
댓글