[목차]
1. 특징
2. 문법
2-1 코드 예
2-2 print() 함수
2-3 input() 함수
2-4 숫자형
2-5 문자열
2-6 리스트
2-7 튜플
2-8 딕셔너리
2-9 집합(Set)
2-10 제어문
2-11 함수
2- 12 클래스, 객체
2-13 상속
3. 기출 & 기출 예상 문제
[특징]
1. Python은 배우기 쉽고 플랫폼에 독립적이며
인터프리터식,객체지향적, 동적 타이핑 대화형 언어
(참고 : 컴파일 방식(C/C++)은 문서 전체를 해석,
인터프리터 방식은 각각의 라인을 한 줄씩 해석,
자바는 혼합 방식)
2. 구글의 3대 개발 언어 (C, JAVA, Python)
3. 자료형 검사
데이터 타입을 별도로 지정할 필요 없음(자동 결정)
실행 시 변수에 저장된 값에 따라 자동으로 자료형이 저장된다.
(참고: 컴파일 할 때 검사하는 방식을 정적 타이핑,
실행할 때 (run time) 검사하는 방식은 동적 타이핑(파이썬))
[문법]
1. 코드 예)
1에서 10까지 홀수 합계와 홀수 개수
a = 0
b = 0
for i in range(10):
if (1 % 2):
a = a + i
b = b + i
print(a,b)
문장 끝에 세미콜론(;) 필요 없음
(단, 여러 문장을 한 줄에 입력할 경우는 구분자로 필요)
2. print() 함수
값 뒤에 분리문자(sep) 지정 안 하면 자동 공백 한 칸
종료문자(end) 생략 시 자동 줄 바뀜
print("이것은 샘플 코드", a, sep='-', end='.')
3. input() 함수 - 사용자 입력
변수 = input()
a = input('숫자를 입력하시오')
a, b = input().split()
a,b = input('입력값 :').split('-') # split 값 지정 안하면 공백 1칸
print(a)
print(b)
> 입력값 : master-takudaddy
master
takudaddy
=============================
# 두 수의 차이 구하기
X, Y = input().split()
X = int(X), Y = int(Y)
Z = 0
if(X > Y):
Z = X - Y
else:
Z = Y - X
print(Z)
# C로 구현하는 경우
#include <stdio.h>
int main() {
int X; int Y; int Z;
scanf("%d %d", &X, &Y);
if (X >= Y)
Z = X - Y;
else
Z = Y - X;
printf("%d", Z);
}
4. 숫자형 (Number)
4-1. 정수형 (Integer)
: 양수, 음수, 0
4-2. 실수형(Floating-point)
: 소수점이 포함된 숫자
4-3. 사칙연산
+ - * ** / // %
5. 문자열 (String)
: 따옴표로 구분
5-1 문자열 인덱싱
기출문제(20년 3회 필기 기출)
a = "taku daddy"
print(a[3])
print(a[-2])
print(a[1:3])
print(a[:3])
print(a[5:])
print(a[0:-1])
print(a[::2])
peinr(a[::3])
u
d
ak (끝 번호 -1)
tak
daddy
taku dadd (끝 번호 -1)
tk ad
tuay
5-2 문자열 관련 메서드
- find(값) : 처음 검색된 값의 위치, 값없으면 -1 출력
- index(값) : find와 동일하지만 값이 없으면 오류 발생
- replace(값) : 'takudaddy'.replace('y', 'i') > takudaddi
- count(값) : 값의 개수, ('takudaddy'.count('d') > 3)
- split(값): 값을 기준으로 문자열 분리 후 리스트로 반환 ('taku-daddy'.split('-') > ['taku', 'daddy'])
- upper() : 대문자로 변경 ('taku'.upper() > TAKU)
- lower() : 소문자로 변경 ('DADDY'.lower() > daddy)
6. 리스트
여러 개의 자료를 하나의 변수로 관리하는 자료형으로 대괄호 []를 사용해 선언
List = [1,2, 'takudaddy']
value = list([1,2, 'takudaddy'])
6-1. 기출문제 (20년 4회 필기 기출)
i = ['ab', 1, 44, 567]
print(i[1:2])
print(i[:-2])
print(i[::3])
출력 결과는?
[1]
['ab', 1] (끝 번호 -1)
[567]
6-2. 리스트 추가 / 삽입 / 수정 / 삭제 메서드
i = [1,2, 3]
i.append('takudaddy') > [1,2,3,'takudaddy']
i.insert(2, 'taku') > [1,2,'taku',3, 'takudaddy']
i[0] = 44 > [44, 2, 'taku', 3, 'takudaddy']
i.remove('taku') > [44, 2, 3, 'takudaddy'] (리스트에서 '값'을 찾아 삭제)
del i[1] > [44,3, 'takudaddy'] (리스트에서 '위치'를 찾아 삭제)
6-3. 리스트 관련 메소드
copy() : 리스트 복사 (b = a.copy())
reverse() : 역순 ([1,2].reverse() > [2,1])
sort(0 : 정렬 (오름차순 [1,3,2].sort() > [1,2,3] 내림차순 [1,3,2].sort(reverse = True) > [3,2,1]
count() : 값이 저장된 요소들 개수 ([1,2].count(1) > 1)
index() : 값이 저장된 요소의 위치 ([1,3,2].index(3) > 1)
pop(위치) : 해당 값 출력 후 삭제 ([1,3,2].pop(0) > [3,2])
extend() : 리스트에 추가 ([1,2].extend([3,4]) > [1,2,3,4,])
6-4. 이차원 리스트
i_1 = [[1,2]]
i_2 = ['a', 'b']
i_3 = [i_1, i_2]
print(i_3)
> [[1,2], ['a','b']]
7. 튜플
: 리스트와 비슷하지만 저장된 값을 변경할 수 없고 소괄호를 사용 ()
t = ('a', 'b', 'c')
t = (1,) > 데이터가 하나인 경우 뒤에 컴마를 꼭 붙여야 함
7-1. 튜플 인덱싱
t = ('abc', 123, 'f')
print(t[0]) > abc
print(t[-1]) > f
7-2. 튜플 슬라이싱
t = ('abc', 123, 'f')
print(t[0:1]) > ('abc',)
print(t[-3:]) > ('abc',123,'f')
print(t[0:2]) > ('abc', 123)
8. 딕셔너리
: key와 valuse를 한 쌍으로 저장할 수 있는 자료형, 중괄호 사용 {}
d = {'타쿠대디' : 'genius'}
d = {'a':[1,2,3], 'b':(4,5,6)} > 리스트 + 튜플을 값으로 넣을 수 있음
8-1. 딕쳐너리 사용
- 키를 호출하면 해당 값이 출력 됨
d = {'hero' : 'takudaddy'}
print(d[hero]) > takudaddy
- key가 중복 사용되는 경우
마지막 한 개만 출력 됨
d = {1:'a', 2:'b', 1:'c'}
print{d[1]} > c
8-2. 딕셔너리 추가, 삭제
d = {'hero' : 'takudaddy', 'sub' : 'python'}
d['level'] = 999 > {'hero' : 'takudaddy', 'sub' : 'python', 'level' : 999}
del d['sub'] > {'hero' : 'takudaddy', 'level' : 999}
8-3. 딕셔너리 관련 메서드
d = {'hero' : 'takudaddy', 'sub' : 'python', 'level' : 999}
keys() : key 리스트 반환 (d.keys() > dict_keys(['hero', 'sub', 'level']))
values() : value 리스트 반환 (d.values() > dict_value('takudaddy', 'python', 999))
items() : 키:값 쌍으로 반환 (d.items() > dict_items([('hero':'takudaddy'),('sub':'python),('level':999]))
clear() : 키:값 쌍 모두 삭제 (d.clear() > {})
get() : key를 이용하여 value 반환 (d.get('level') > 999)
in : 딕셔너리 내 key의 존재 여부 반환 ('here' in d > True, 'enemy' in d > False)
9. 집합 (Set)
: 중복을 허용하지 않고, 순서가 없는 자료형으로 중괄호 사용해 선언 {}
s = {'t','a','k','u'}
print(s)
> 출력 순서가 없어 랜덤하게 출력됨 ('k','t','u',a')
s = set("daddy")
print(s)
> 중복을 허용하지 않기 때문에 하나만 출력됨 ('y','d','a')
9-1. 집합 관련 메서드 (20년 2회 실기 기출)
s = {1,2,3,4,}
add() : 1개의 값 추가 (s.add(44) > {1,2,3,4,44})
update([값 1, 값2..]) : 여려개의 값 추가 (s.upadate([3,4,5,6]) > {1,2,3,4,5,6,44}
remove(): 특정 값 제거 (remove(4) > {1,2,3,5,6,44}
9-2. 집합 활용
s1 = {1,2,3,4}
s2 = {3,4,5,6,7}
교집합 (Intersection, &)
s1 & s2 > {3,4}
s1.intersection(s2) {3,4}
합집합 (Union, |)
s1 | s2 > {1,2,3,4,5,6}
s1.union(s2) > {1,2,3,4,5,6}
차집합 (Difference, -)
s1 - s2 > {1,2}
s1.difference(s2) > {1,2}
s2 - s1
s2.diffrence(s1) > {5,6,7}
10. 제어문
10-1. if문
# 학점 시스템
j = 75
if j >= 90:
print('학점 : A')
elif j > = 80:
....
else
print('F 처리')
=================================
# C와 비교
int j = 75;
if (j >= 90) {
printf("학점 : A");
}
else if(j >= 80) {
printf("학점 : B");
}
.......
else {
printf('F 처리');
}
10-2. while 문
# 1에서 10까지 짝수 합계
a, sum = 0, 0
while (a < 10) :
a += 1 # python은 a++ 등의 증감 연산자 없음
if(a % 2 == 1):
continue
sum += a
print(sum)
-----------------------------------------
# JAVA랑 비교
public class Sumsum{
public static voin main(String[] args {
int a= 0, sum =0;
while(a < 10){
a++;
if (a % 2 == 1);
continue;
sum += a;
}
System.out.println(sum);
}
}
10-3. for 문
- range 활용
range(최종값) : 0에서 최종 값 -1
range(초기값, 최종값) : 초기값에서 최종값 -1 까지
range(초기값, 최종값, 증가값) : 초기값에서 증가값만큼 증가하면서 최종값 -1 까지
- 리스트 활용
a = [1,2,3]
sum = 0
for i in a:
sum += i
print(sum)
>> 6
11. 함수
def 함수이름(매개변수):
def multi(x, y):
return x * y
def show(x):
print(x)
a = multi(2,3)
show(a)
==================================
# C랑 비교
#include (stdio.h>
int multi(int x, int y){
return x * y;
}
void pri(int x){
printf("%d \n", x);
main() {
int a;
a = multi(2,3);
pri(a);
}
11. 함수
형식) def 함수이름(매개변수):
def multi(x, y):
return x * y
def show(x):
print(x)
a = multi(2,3)
show(a)
==================================
# C랑 비교
#include (stdio.h>
int multi(int x, int y){
return x * y;
}
void pri(int x){
printf("%d \n", x);
main() {
int a;
a = multi(2,3);
pri(a);
}
12. 클래스, 객체
형식) class 클래스이름
# 짝수 합계
class Takudaddy:
def taku(self, k): # self는 객체 자기 자신을 참조하는 매개변수
a, sum = 0, 0 # 클래스 내 생성된 모든 메서드들은 첫 번째 매개변수로 self를 가지고 있음
while (a < k):
a += 1
if (a % 2 == 1):
contiunue # 만약 나머지 값이 홀수라면 continue로 벗어나 while로 돌아가고
sum += = a # 짝수라면 sum을 계산
return sum
클래스(빵틀) 제작 완료,
이제 이를 활용해 객체(instance, 빵)를 만든다.
객체
형식) 변수이름 = 클래스이름()
# 짝수 합계
class Takudaddy: # 여기서부터 ---------------------------------|
|
def taku(self, k): |
a, sum = 0, 0 |
while (a < k): |
a += 1 |
if (a % 2 == 1): |
contiunue |
sum += = a |
return sum # 여기까지 클래스 ---------------------------|
g = Takudaddy() # 여기부터 객체(instance, 빵), g라는 객체를 만들었다.
b = g.taku(10) # 객체(g).메소드 이름
print(b)
>> 30
클래스는 하나의 틀(추상적)이 되는 것이고
해당 클래스를 인스턴스화(구체화) 시켜 객체를 만들어 주고
해당 객체를 활용해 프로그래밍을 할 수 있는 것
13. 상속
형식) class 자식 클래스(부모 클래스)
# 1부터 k 까지 합계
class Parent:
def sum(self, k):
sum =0
for i in range(k+1):
sum += i
return sum
class Child(Parent):
def multi(self, k):
result = 0
for i in range(k+1):
result *= k
return result
c = Child()
result = c.sum(5)
print(result)
>> 15
3. 기출 & 기출 예상 문제
11번) 출력결과가 리스트로 저장되는 것 잊지 말기!
15번) in : 딕셔너리 내 key 존재 여부 반환을 True / False로 한다!
16번) 중괄호에 값만 저장되어 있는 것은 집합, 집합은 중복 없고 순서 없다!
'정보보안공부 > 정보처리기사' 카테고리의 다른 글
5. 프로그래밍 언어 활용 - 언어 특성 활용 (0) | 2022.01.13 |
---|---|
4. 프로그래밍 언어 활용 - 기본 문법 활용 & 기출풀이 (0) | 2022.01.12 |
2. 프로그래밍 언어 활용 - JAVA (0) | 2022.01.11 |
1. 프로그래밍 언어 활용 - C언어 (0) | 2022.01.10 |
2022년 정보처리기사 [필기] 공부 플랜 (6주) (0) | 2022.01.08 |