본문 바로가기

정보처리기사

프로그래밍 언어 활용(파이썬)

1. 파이썬 

 

 

(1) 파이썬 기본 구조

- 사용자 정의 함수(def), 클래스(class)가 먼저 정의되고 코드 실행

- 가독성을 위해 들여쓰기 강제

 

 

(2) 자료형(Data Type)

- 유형: 기본 자료형, 컬렉션 자료형

- 기본 자료형: 숫자형, 논리형

- 컬렉션 자료형: 문자열형, 리스트형, 튜플형, 세트형, 딕셔너리형

 

 

기본 자료형 숫자형(Number) 숫자 정수형(int), 실수형(float)
논리형(Logical) 변수의 참, 거짓 True(참), False(거짓)
컬렉션 자료형 시퀀스 자료형 (순서 O) 문자열형(String) 문자 한 개 또는 여러개 s = "Soojebi"
리스트형(List) 읽기, 쓰기 l = [1, 2, 3]
튜플형(Tuple) 읽기 전용, 수정 불가 t = (1, 2, 3)
비시퀀스 자료형 (순서 X) 세트형(Set) 중복 불가 s = {1, 2, 3}
딕셔너리형(Dictionary) 키-값으로 구성된 객체 d = {'s':1, 'j':2, 'b':3}

 

 

- 시퀀스 자료형: 문자열형, 리스트형, 튜플형

- 문자열형(String): 변수 출력시 괄호 미표시

- 문자를 한 개 또는 여러 개 저장하고자 할 때 사용

 

 

띄어쓰기 , print("Soojebi", "World") Soojebi World
큰따옴표 ₩", \" print("₩"Soojebi₩"") "Soojebi"
문자열 곱하기 * print("Soojebi*3) SoojebiSoojebiSoojebi
포맷 스트링 % print("%s" % a) soojebi
문자열 in 존재하면 True, 없으면 False print("hello" in "hello world")  True
upper() 대문자로 변환
lower() 소문자로 변환
isalnum() 알파벳 또는 숫자로만 구성되어 있으면 True, 아니면 False
isalpha() 알파벳으로만 구성되어 있으면 True, 아니면 False
isdecimal() 정수이면 True, 아니면 False
isdigit() 숫자이면 True, 아니면 False
isspace() 공백으로만 구성되어 있으면 True, 아니면 False
split() 문자열을 매개변수로 전달된 문자(구분자)로 나누어 리스트로 변환
구분자 기준으로 문자열 추출 print("1,2,3".split(",")) ['1', '2', '3']

 

 

- 리스트형(List): 변수 출력시 괄포 포함

- 크기가 가변적으로 변하는 선형리스트의 성질

- 선언: 리스트명 = [요소1, 요소 2, …] / 리스트명 = [[요소1, 요소2], [요소3], [요소4] …]

 

 

append(x) 마지막 요소 뒤에 값 x 추가
clear() 모든 항목 삭제
copy() 복사
count(x) x 항목의 개수
extend(i) 마지막에 컬렉션 자료형 i 추가
index(x) x 와 같은 값을 가지고 있는 인덱스 번호
insert(i, x) i 번지에 x 삽입
pop() 마지막 항목 삭제하고 값을 꺼냄
remove(x) x 삭제, 해당 값이 여러 개일 경우 가장 앞에 있는 값을 제거
reverse() 역순 변환
sort() 정렬

 

 

- 튜플형(Tuple): 변수 출력시 괄포 포함

- 초기에 선언된 값에서 값을 생성, 삭제, 수정 불가

- 선언: 튜플명 = (요소1, 요소2, …)

 

 

- 시퀀스 자료형 요소 접근 방법: 인덱싱(Indexing), 슬라이싱(Slicing)

- 인덱싱(출력시 괄호 미표시): 앞에서부터 시작하면 인덱스는 0 부터 시작, 뒤에서부터 시작하면 -1 부터 시작

- 슬라이싱(출력시 괄호 표시, 문자열 슬라이싱만 미표시): 여러 개의 데이터에 동시에 접근하는 기법으로 시퀀스변수명[시작 : 종료 : 스텝(기본값 1)] 형태

 

 

- 비시퀀스 자료형: 세트형, 딕셔너리형

- 세트형(Set): 변수 출력시 괄포 포함

- 중복된 원소를 허용하지 않는 집합의 성질

- 선언: 세트명 = {요소1, 요소2, …} / 세트명 = set([요소1, 요소2, …])

 

 

add(값) 값을 1개 추가
update([값1, 값2, …]) 여러 개의 값을 한꺼번에 추가
remove(값) 특정 값 삭제

 

 

- 딕셔너리형(Dictionary): 변수 출력시 괄포 포함

- 키와 값으로 구성된 객체를 저장하는 구조

- 선언: 딕셔너리명 = {키1:값1, 키2:값2, …}

- 추가, 있으면 변경: 딕셔너리명[키] = 값

- 삭제: del 딕셔너리명[키]

 

 

type() 자료형 확인 함수 정수형 <class 'int'>
실수형 <class 'float'>
논리형 <class 'bool'>
문자열형 <class 'str'>
리스트형 <class 'list'>
튜플형 <class 'tuple'>
세트형 <class 'set'>
딕셔너리형 <class 'dict'>
len() 컬렉션 자료형 크기 계산 함수 print(len([1, 2, 3])) 3

 

 

(3) 입출력

- 표준 출력 함수(print)

- 출력 후 개행: print(문자열/변수)

- 출력 후 개행 안함: print(문자열/변수, end=' ')

- 표준 입력 함수(input)

- 정수형과 실수형과 같은 숫자를 입력받을 때는 문자열로 저장한 후, eval 함수를 사용하여 숫자로 변환

- 문자열 입력: 변수명 = input()

- 숫자 입력: 변수명 = input() / 변수명 = eval(변수명)

 

 

(4) 연산자

- 대부분 C언어 연산자와 동일

- 증감 연산자(++, --) 지원 안 함

- Swap 연산자: 콤마를 기준으로 두 변수의 값을 교환

- 산술 연산자: 사칙 연산(+, -, *, /), 몫(//), 지수 연산(**), 나머지 연산(%)

- 비교 연산자(참/거짓): C언어 0/1, 자바 true/flase, 파이썬 True/False 출력

- 대입 연산자: +=, -=, *=, /=, **=, //=

 

 

(5) 조건문

- switch 문 없음

- if 문: 조건이 참인지 거짓인지에 따라 경로를 선택하는 명령문

 

 

if 조건문:
    명령문;
elif 조건문:
    명령문;
else:
    명령문;

 

 

(6) 반복문

- do-while 문 없음

- while 문: 조건문이 참일 경우 명령문 반복 수행

 

 

while 조건문:
    명령문

 

 

- for문: in 연산자 뒤에 range 함수를 사용하여 반복의 범위를 지정하거나 리스트 개수만큼 반복 수행

- range 함수에서 시작을 생략하면 0, 스텝 값을 생략하면 1

 

 

for 변수 in range(시작, 종료, 스텝):
    명령문

 

 

- for each 문: 시퀀스 자료형의 요소들을 차례대로 변수에 대입하면서 반복하는 명령어

 

 

for 변수 in 시퀀스자료형;
    명령문

 

 

(7) 함수

- 사용자 정의 함수(User-Defined Function)

- 매개변수나 생성된 변수는 사용자 정의 함수가 종료되면 소멸

- 디폴트 매개변수: 기본값이 정의된 매개변수

 

 

def 함수명(변수명, …):
    명령문
    return 반환값
    
def 함수명(매개변수=디폴트값):
    명령문

 

 

- 람다 함수(Lambda Function)

- 함수 이름 없이 동작하는 함수

- 매개변수에 값을 전달하면 표현식에서 연산 수행

- 내장 함수를 이용한 람다 함수: map(), filter()

- map(함수, 리스트): 리스트 요소를 함수에 전달하여 반복을 수행

- filter(함수, 리스트): 리스트 요소를 함수에 전달하여 조건이 참인 값을 리턴

 

 

lambda 매개변수 : 표현식

 

 

(8) 예외 처리(Exception Handling)

- 코드가 실행하는 도중에 발생되는 에러를 처리하는 구문

- 예외 처리 구문: try, except(as), elsde, finally

 

 

try:
    명령문
except:
    예외 발생시 동작할 명령문
finally: #선택
    명령문
    
try:
    명령문
except 발생예외명1:
    예외 발생시 동작할 명령문1
except 발생예외명2:
    예외 발생시 동작할 명령문2
else: #선택
    명령문

 

 

- raise

- 프로그램이 의도하지 않게 동작하는 것을 방지하기 위해 의도적으로 예외 발생시키는 명령어

 

 

명령문
raise

명령문
raise 예외처리명

명령문
raise 예외처리명("메시지")

 

 

(9) 클래스

- 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 틀

- self 는 현재 객체를 가리키는 키워드로 클래스 내부의 변수와 함수를 가리킬 수 있음

 

 

class 클래스명:
    def 메서드명(self, 변수명, …): #입력받는 값이 없을 경우 self만 사용
        명령어
        return 반환값
        
self.변수명;
self.함수명(매개변수);

 

 

(10) 생성자

- 해당 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 종류의 메서드

- 생성자 정의: __init__ 형태 메서드 명 사용, 첫 번째 매개변수로 self 작성, 반환 값 없음

- 클래스 호출: 클래스변수 = 클래스(매개변수)

 

class 클래스명:
    def __init__(self, 매개변수): #생성자 정의
        명령어
        
클래스변수 = 클래스(매개변수) #생성자 호출

 

 

(11) 소멸자

- 객체의 수명이 끝낫을 때 객체를 제거하기 위한 목적으로 사용되는 메서드

- 소멸자 정의: __del__ 형태 메서드 사용, 첫 번째 매개변수로 self 작성, 반환 값 없음

- 소멸자 호출: del 클래스변수

 

 

class 클래스명:
    def __del__(self): #소멸자 정의
        명령어
        
del 클래스변수 #소멸자 호출

 

 

(12) 클래스 접근 제어자

- 작명법(Naming)으로 접근제어

 

 

public 밑줄이 접두사에 없음 self.public
protected 한 개의 밑줄 _ 접두사 self._protected
private 두 개의 밑줄 __ 접두사 self.__private

 

 

(13) 클래스 상속(Inheritance)

- 부모 클래스의 변수와 메서드를 자식 클래스가 물려받는 기능

- 부모 클래스 접근: super 키워드로 상위 클래스의 변수나 메서드 접근 super().메서드명()

- 상속 받는 경우 자바와 다르게 부모 클래스 생성자를 호출 안 함, 호출해야 하는 경우 super().__init__() 직접 호출

 

 

class 부모_클래스명:
class 자식_클래스명(부모_클래스명):

 

 

(14) 메서드 오버라이딩(Overriding)

- 하위 클래스에서 상위 클래스 메서드를 재정의

- 파이썬은 오버로딩 지원 안 함

 

 

 

class 부모_클래스명
    def 메서드명(self, 변수명)
        명령어
class 자식_클래스명(부모_클래스명)
    def 메서드명(self, 변수명) #부모 클래스와 메서드명, 매개변수 동일
        명령어

 

 

 

 

'정보처리기사' 카테고리의 다른 글

서버 프로그램 구현  (0) 2023.04.20
SQL 응용  (0) 2023.04.20
프로그래밍 언어 활용(자바)  (0) 2023.04.14
프로그래밍 언어 활용(C언어)  (0) 2023.04.12
인터페이스 구현  (0) 2023.04.07