본문 바로가기
정보처리기사

Python 언어

by 두두리안 2022. 7. 11.
728x90

목차

1. 변수와 상수
2. 연산자
3. 시퀀스
4. 매핑형 자료구조
5. 제어문
6. 클래스(Class)

1. 변수와 상수

1-1. 변수 선언

* 상수 리터럴의 타입에 따라 변수의 타입이 정해지는 동적 할당 방식
* 변수 선언시 식별자 앞에 별도의 자료형을 지정하지 않는다

1-2. 변수명 선언 규칙

* 첫글자는 영문자와 언더바(_)를 사용해야 한다
* 대소문자를 구분한다
* 공백이나 다른 특수문자를 포함할수 없다
* 예약어는 변수명으로 선언할수 없다
* 변수는 사용하기전에 초기화를 진행해야 한다

1-3. 상수 리터럴

1. 정수 리터럴
    * 10진 성수
    * 8진 정수
    * 16진 정수
    * 2 진수
2. 실수 리터럴
    * 소수점이 있는 10진수 형태 또는 지수
    * 복소수: 실수부 + 허수부
3. 문자열 리터럴
    * 작은 따옴표 또는 큰 따옴표로 감싸서 표현
    * 파이썬은 문자리터럴이 존재하지 않는다

1-4. 표준 입출력 함수

1. 표준입력
    * 키보드를 통해 프로그램으로 데이터를 입력
    * 항상 문자열 형태로 입력받기 때문에 필요에 따라 다른형태로 변환이 필요
2. 표준출력
    * 모니터를 통해 프로그램의 데이터를 출력한 뒤 줄바꿈을 해준다
    * 여러 인수를 통해 출력방식을 조정
3. 주석처리
    * 프로그램에 영향을 미치지 않는 참 고글 역할
    * 파이썬은 샵(#)을 이용하여 주석을 처리

2. 연산자

2-1. 산술 연산자

연산자 설명
+ 더하기
- 빼기
* 곱하기
/ 나누기
//
% 나머지
** 제곱

2-2. 시프트 연산자

print(24 << 3);  # 24: 0001 1000: 24의 비트 값을 왼쪽으로 3번 이동
print(24 >> 2);  #  6: 0000 0110: 24의 비트 값을 오른쪽으로 2번 이동
* 비트 배열을 좌우로 이동하는 연산

2-3. 비트 연산자

print(13 & 9);  # 논리 곱:
print(13 | 9);  # 논리 합
print(13 ^ 9);  # 베타적 논리 합
print(~13);  # 부정
* 각 비트의 자리별로 논리연산을 수행

2-4. 논리 비교 연산자

a==b==c
a==b and a==c
0 <= a <= 100
a > 70 and b > 70
a >= 70 or b >= 70
* 다중의 논리 데이터(참, 거짓)를 판별하는 연산

2-5. 멤버 연산자

    print("a" in "task") # a가 task 포함되는지 확인
    print("X" not in "hello") # x가 hello에 포함되지 않는지 판별
* 데이터가 특정 데이터 구조에 포함되는지 여부를 판별하는 연산

3. 시퀀스

3-1. 시퀀스 특징

* 하나의 변수로 여러 타입의 다수 데이터를 관리
* 데이터가 순서대로 나열되어 있어 인덱싱과 슬라이싱이 가능
* 리스트와 튜플, 문자열

3-2. 리스트

* 요소를 추가하거나 삭제할수 있는 가변형 시퀀스
* 대괄호와 쉼표로 구분하여 정의

3-3. 튜플

a = [10, 20, 30, 40]
a.append(50) # 리스트 50 추가
a.remove(20) # 리스트 20 제거
* 요소를 추가하거나 삭제할수 없는 불변형 시퀀스
* 괄호와 쉼표로 구분하여 정의
* 문자열 리터럴 역시 불변형 시퀀스에 해당

3-4. 시퀀스 기술

s = "Hello Python"
s[0], s[4] # H o
s[-1], s[-4] # n t
s[6:10], s[-2:] # Pyth on
1. 인덱싱(Indexing)
    * 첨자를 통해 시퀀스 요소중 하나를 참조하는 기술
    * 첨자의 시작은 1이 아닌 0부터 증가하며 왼쪽에서 오른쪽으로 진행
    * 역순(오른쪽에서 왼쪽)으로 인덱싱을 진행할때는 -1부터 감소
2. 슬라이싱(Slicing)
    * 2개의 첨자를 통해 시퀀스 요소중 하나 이상을 참조하는 기술
    * 시작 첨자부터 시작해서 끝 첨자의 바로전 항목까지 참조
    * 시작첨자를 생략하면 첫 요소부터 슬라이싱
    * 종료첨자를 생략하면 마지막 요소까지 슬라이싱
    * 단계값을 생략하면 점차를 1씩증가, -1을 입력하면 역순으로 슬라이싱

4. 매핑형 자료구조

4-1. 딕셔너리 특징

# key: name, age
# value: "파이썬", 20
d = {"name": "파이썬", "age": 20}
* 하나의 변수로 여러 타입의 다수 데이터를 관리할수 있다
* 키(Key)와 값(Value)의 쌍으로 구성된 데이터를 중괄호와 쉼표로 구분하여 정의
* 인덱싱이 아닌, 키(Key)를 통해서 값에 접근
* 데이터의 수정, 삽입, 삭제가 자유로운 가변형 데이터 구조

5. 제어문

5-1. 선택 제어문

a = 10
b = 20
if(a>b):
    print('a가 크다')
elif a==b:
    print('두수가 같다')
else
    print('b가 크다')
1. if<조건식>
    * 주어진 조건이 참인 경우에 실행되는 영역
2. elif<조건식>
    * if 조건식이 거짓이고, elif의 조건식이 참인경우 실행되는 영역
1. else
    * 모든 조건식이 거짓인 경우에 실행되는 영역

5-2. 반복 제어문

a = [10, 20, 30]
for i in range(5):
    print(i) # 0, 1, 2, 3, 4
for k in a:
    print(k) # 10, 20, 30
1. for <변수> in range(<시작값>, <종료값>, <증가값>)
2. for <변수> in <시퀀스>
sum = 0
cnt = 1
while True:
    sum += cnt
    if sum > 100:
        break
    cnt += 1
print(cnt)
3. while<조건식>
    * 조건식이 참인 동안 반복
4. break 와 continue

6. 클래스(Class)

6-1. 클래스 정의와 인스턴스 생성

# ClassicCar 클래스 구현
class ClassicCar:
    pass

# ClassicCar 인스턴스 생성
father = ClassicCar();
uncle = ClassicCar();
1. 클래스 정의
    * class 키워드로 클래스를 구현
2. 인스턴스 생성
    * java와 달리 new 키워드 없이 생성

6-2. 메소드 정의와 호출

# ClassicCar 클래스 구현
class ClassicCar:

    # drive 메소드 정의
    def drive(self):
        print('수동 운전')

# ClassicCar 인스턴스 생성
father = ClassicCar();

# drive 메소드 호출
father.drive()
1. 메소드 정의
    * def 키워드로 메소드를 정의
    * 첫번째 매개변수에 self를 지정해야 하지만 self 매개변수는 무시하고 호출
    * 클래스 내에서 정의되는 메소드는 인스턴스를 통해서 호출
# ClassicCar 클래스 구현
class ClassicCar:

    def __init__(self, color):
        # 클래스 변수 color에 매개변수 color 할당
        self.color = color

    # test 메소드 정의
    def test(self):
        print(self.color)

# ClassicCar 인스턴스 생성
father = ClassicCar("빨강");
father.test() # 빨강
father.color = "검정"
father.test() # 검정
2. 생성자 메소드
    * 정해진 이름 __init__ 으로 생성자 메소드 정의
    * 생성자 메소드는 인스턴스 생성시 자동으로 호출되며 임의로 호출할수 없다
    * 생성자 메소드와 self를 이용하면 인스턴스 생성과 동시에 값을 할당

참고자료 : 이기적 환상콤비 정보처리기사

728x90

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

기억장치 관리  (0) 2022.07.13
운영체제  (0) 2022.07.11
Java 언어  (0) 2022.07.10
객체지향 개발 절차  (0) 2022.07.10
객체지향 기술  (0) 2022.07.07