본문 바로가기
정보보안

사전학습) 파이썬 1

by 뭔가해보겠습니다 2024. 7. 15.

https://www.youtube.com/playlist?list=PL9HD6Lg78edYPNExYJSCu7pmMSizchZWY

 

 

파이썬
- 데이터베이스 프로그래밍, 판다스 모듈로 데이터 분석, 사물인터넷 라즈베리파이 제어

설치
https://www.python.org/downloads/

인터랙티브 쉘
= 파이썬 프로그래밍을 한 행씩 테스트해볼 수 있는 대화형 쉘

 

cmd에서 실행, 파이썬 프로그램으로 실행

종료시 quit()나 exit() ( 윈도우 단축키로 ctrl + z + 엔터 )

 

메모장으로 .py 파일을 만들고 cmd에서 실행

 

 

https://www.jetbrains.com/ko-kr/pycharm/download/?section=windows

PyCharm Community Edition 다운로드

 

강의랑 UI가 달라져서 약간 헷갈림

오른쪽 상단 시작버튼을 누르면 실행된다.

옆에 곤충은 디버그인듯

 

파이썬 코드를 작성할 수 있는 에디터들
- 비주얼 스튜디오vscode, 파이참, 이클립스, 노트패드++, 서브라임 텍스트3, vi 편집기, 에디트 플러스, 아톰 등.

 

비주얼 스튜디오 vs code
별도의 파이썬 환경 설정 후 연동해야 함

https://code.visualstudio.com/download#

 

파이썬 익스텐션도 설치.

 

그외 검색해보니 추천 extension
Black Formatter(코드 포맷터)
Exel Viewer (CSV 형태 데이터 분석시)
Isort (Import 순서 자동 정리)
Jupyter (데이터 분석, 시각화)

 

강의에서 나온 Python for VSCode 는 더 이상 유지관리되지 않는다고 해서 설치하지 않고 패스했다

 

vs code도 파이참하고 실행은 비슷

 

워크스페이스에 .vscode 폴더를 만들고

그 안에 launch.json를 넣은 뒤 디버깅 없이 실행하면 외부 터미널로 뜸

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name":"Python: Current File",
            "type":"python",
            "request": "launch",
            "program":"${file}",
            "console":"externalTerminal"
        }
    ]
}

 

 

 

디버그 : 소스코드에 중단점(브레이크 포인트)을 걸고 분석하면 프로그램이 실행되다가 중단점에서 멈춘다. (주석, 공백 제외)

조건부 중단점 추가 : 식을 추가하여 식이 true로 계산될 경우 중단 하는 등 조건부로 설정

 

에러구분
1. 문법이 틀린 경우 : SyntaxError
2. 들여쓰기가 잘못된 경우 : IndentationError
3. 이름이 잘못된 경우(함수 등) : NameError
4. 기타

주석
# 주석

''' 주석 '''

""" 주석 """
(VS code 주석 단축키 : ctrl + / 또는 Shift + ctrl + A )

 

변수의 메모리(RAM) 주소값을 출력하는 함수 : id
ex) id(변수명)

자료형
정수int, 실수float, 문자열str, 불리언bool
리스트, 튜플, 딕셔너리, 셋

컬렉션 데이터 유형
list리스트 : 순서O, 값 변경O, 중복O ex) [1,2]
tuple튜플 : 순서O, 값 변경X, 중복O ex) (1,2)
dictionary딕셔너리 : 순서 X, 키 변경X 값 변경O, 키 중복X 데이터 중복O ex) {'a':1, 'b':2}
set셋 : 순서 X, 값 변경X, 중복X ex) {1, 2}

 

 

자료형 확인 함수 : type
ex) type(변수명 또는 값)

파이썬 객체의 저장방식

a=3
일반적으로 메모리 공간에 a라는 라벨을 붙이고, 그 안에 값 3이 들어간다
그런데 파이썬은 값 3이 어딘가의 메모리에 저장되고, 이 저장된 메모리 번지수가 a안에 저장된다 (=객체)

 

변수 한번에 셋팅하기
i, j = 10, 20
순서대로 매칭되어 대입된다

 

기본적으로 세미콜론;을 쓰지 않지만 한줄에 한번에 i=10, j=20 이렇게 셋팅할때는 세미콜론; 이용 

 

변수 출력
print(i, j)
print('%d %d' %(i, j))       <- 서식 문자열
print('{} {}'.format(i, j))     <- format 함수 이용
print(f'{i} {j}')                   <- 최근에 나온 방식으로 f string

 

16진수 형식으로 대입
a = 0x7 (16진수로 7)
a = 0xf (16진수로 15)

8진수 형식으로 대입
a = 0o7 (8진수로 7)
a = 0o10 (8진수로 8)

 

실수 자료형 대입
a = 1.5
a= 3.141592

실수형 출력시 %방식을 사용한다면 %f로 사용 (자릿수 지정은 %.2f 등으로 제어)

실수형을 format 출력시 print('{:.2f}'.format(a)) 이렇게 자릿수 제어

 

출력의 자릿수 정렬

잘 보이도록 | 파이프로 영역 표시해줌.

< 는 왼쪽 정렬

> 는 오른쪽 정렬 (기본)

^ 는 가운데 정렬을 의미하고, 정렬 뒤의 숫자는 5자리만큼의 영역을 확보한다는 뜻

 

 

 

사칙연산 중

* 파이썬에서 나누기를 하면 몫이 나오는데 정수가 아니라 소수점으로 나오므로 주의.

이 때 // 이렇게 두 개를 쓰면 소수점이 제어되어 정수로 출력된다

%는 나머지 연산

제곱은 print(2 ** 3) 이런식으로 ** 를 사용한다. 이 식은 2의 3제곱을 의미.

 

정수 + 문자열은 TypeError가 나오므로
int('10') 처럼 문자열을 int형으로 바꾸어 연산하거나, str(10)처럼 정수를 문자열로 바꾸거나 해야 함

 

 

 

 

멀티라인 문자열 저장
a = ''' 안녕\
하세요
파이썬
출력
'''

이 때 ''' 대신 """ 써도 됨.

 

중간에 \ 역슬래시 쓰면, 엔터를 없애고 붙여준다.

 

 

문자열에 인덱스번호로 접근 가능.

-1은 공백(엔터)이므로 -2를 입력하자 력 이 출력됨.

 

: 를 이용하여 인덱스 범위로 출력 가능. 시작숫자 생략은 처음부터 n번까지, 끝숫자 생략은 n번부터 끝까지를 의미하고, 둘 다 생략해도 된다.

 

 

크기함수 len
ex) len(값, 또는 변수명)

 

 

 

문자열 곱하기
* 연산자를 이용한다. a변수의 값을 다섯번반복하여 출력.

 

문자열의 인덱스로 접근하거나 곱할 수 있어서 마치 배열같지만, 문자열은 기본적으로 배열과 달리 상수이므로

a[0]='A' 이런식으로 인덱스로 접근하여 변경할 수 없다.

 

 

리스트에 값과 변수를 넣을 수 있다.

 

리스트 안에 또 리스트를 만들 수 있다.

 

리스트 안에 튜플() 이 들어가있고 출력한 모습

 

 

 

리스트의 메소드
메소드 : 객체에 들어있는 함수
추가
1) list.append(값)
2) list.insert(인덱스, 값)
삭제
1) list.pop() : 끝에있는 자료 또는 인덱스 지정으로 삭제
2) list.remove() : 값을 지정하여 삭제

3) list.clear() : 모두 삭제

4) del 객체 사용 : ex) del list[0]
수정
list[인덱스]=값

append, insert
pop, remove

remove로 삭제시 없는 데이터를 지정하면 오류가 난다.

 

 

튜플Tuple

순서가 있고, 값을 변경할 수 없고, 반복할 수 있고, 중복된 데이터 허용

 

t = tuple([1,2])

t = tuple((1,2))

t = (1,2)   <- 단, 변수를 1개만 넣을 경우 tuple 자료형으로 지정되지 않으므로 , 필요

t = 1,        <- 이런 형태도 가능

t = tuple([i for i in range(1,5)])    <- 반복문 형태로 삽입 가능

 

접근: 슬라이싱( t[1:2] ) 가능

 

튜플은 데이터를 수정, 추가, 삭제가 불가능하지만 편법을 사용할 수 있다

 

1) 튜플에 데이터 추가

t = t + (3,4)

이렇게 기존 튜플에 튜플을 더하여, 새로운 주소값에 새 튜플을 만들어 사용할 수 있다

(튜플의 주소를 id 함수로 확인해보면 튜플끼리 더했을 때 주소값이 바뀌는 것을 볼 수 있다)

 

2) 튜플의 데이터 삭제

t = (1,2,3,4,5,6)

t = t[0:2]

기존 튜플을 잘라 새로운 튜플을 만들어 대체한다

(이 때도 튜플의 주소는 변경된다)

 

3) 튜플의 데이터 수정

위의 방법과 같이 기존 튜플을 잘라서 수정할 튜플과 합치고 새로운 튜플을 만들어 대체한다

 

 

 

 

딕셔너리

순서가 없고 반복할 수 있는, 키와 값을 쌍으로 가지는 자료를 하나로 모아 묶어놓은 형태

키의 이름은 중복, 변경 불가능하며 값은 중복, 변경 가능하다.

 

d = dict(aa=a, bb=b, ...)

d = {'aa':'a', 'bb':'b', ...}

 

순서가 없으므로 인덱스로 접근 불가능

d['aa'] 이런식으로 key값으로 접근

 

name = 'name'

std[name] 이런식으로 변수를 넣어서 접근할 수도 있음

값 수정시 std['name'] = 'value' 이런 형식인데,

만약 키 이름이 존재한다면 수정되고 없다면 새로 추가된다.

삭제는 del std['name'] 또는 std.clear() 하면 일부/전체 삭제됨.

 

 

 

셋set

순서 없고 반복 가능하고 값 변경 불가, 중복 불가

 

s = {1,2,3}                 <- 단, {} 만 선언하면 딕셔너리로 생성됨

s = set()

s = set({1,2,3})

s = set([1,2,3])

s = set((1,2,3))

 

앞에 set을 붙여주면 {}가 아니어도 set으로 인식.

리스트 중복을 제거하기 위해 리스트를 set에 넣었다가 다시 리스트에 넣어줄 수 있음.

 

 

불리언

True False 대소문자를 구분하므로 주의

 

 

input 함수

사용자에게 입력받아 값을 문자열 형태로 리턴 ( 1을 입력해도 문자열로 출력되는 것에 주의 )

 

int 함수

숫자 문자열을 입력하면 정수로 리턴한다

isdigit() 메소드를 이용하여 문자열이 숫자인지 확인하고 int 함수를 사용하면 안전.

 

 

조건 표현식 OR 삼항 연산자

ex)

test = int('1') if '1'.isdigit() else 0

 

max 함수

여러 입력값중에 가장 큰 값을 출력

 

 

산술 연산자 우선순위

1. ** (제곱)

2. *, / (몫), // (몫, 소수점 없음), % (나머지)

3. +, -

 

관계연산자

== 같다

!= 같지 않다

> (왼쪽기준) 크다

< (왼쪽기준) 작다

>= 크거나 같다

<= 작거나 같다

 

 

루프문 while

ex)

i = 0

while i <= 5:

   print(i)

   i++

else:

print('while 종료')

 

 

 

논리연산자 and or not

&&, ||, ! 를 다른 언어에서 사용하곤 하는데 파이썬에선 사용불가하므로

and or not 으로 사용하여야 함

and 연산은 앞의 연산결과가 거짓이면 후연산을 수행하지 않는다

or 연산은 앞의 연산결과가 참이면 후연산을 수행하지 않는다

ex)

if (a > 2 and b < 5):

    print('어저고 저쩌고')

 

 

 

대입연산자 =

+=, -=, *=, /=, %=, **=, //=

좌변에 우변값을 연산한 결과를 대입.

 

 

멤버쉽 연산자

구성원의 존재 유무를 확인하는 연산자

in : 존재하면 True

not in : 존재하지 않으면 True

iter : 자료형의 반복여부 확인. 반복하지않는 경우 ~ is not iterable 뜨면서 에러남.

 

 

비트연산자

& 비트 AND 연산

| 비트 OR 연산

^ 비트 XOR 연산

~ 비트 NOT 연산

<< 왼쪽 시프트 연산자. 왼쪽으로 지정된 비트만큼 이동

>> 오른쪽 시프트 연산자. 오른쪽으로 지정된 비트만큼 이동

 

ex)

a는 3이고 b는 1일때

a는 0000111

b는 0000001

a & b 연산시 00000001

a | b 연산시 00000111

a ^ b 연산시 00000110

a를 뒤집으면 ~a 1111000

b를 뒤집으면 ~b 11111110

a << b 연산시 00001110

a >> b 연산시 00000011

 

 

 

식별연산자 is

ex)

print('aa' is 'ab')

동일하면 True 다르면 False

이 때, 1과 1.0을 is로 하면 False이고 == 으로 비교하면 True가 나옴.

 

 

 

 

 

파이썬은 모든 변수를 객체로 만듬(변수 a의 위치에 a의값이 위치한 메모리 주소가 담겨있다)

 

 

'정보보안' 카테고리의 다른 글

정보보안4 5차시  (0) 2024.07.20
사전학습) 파이썬 2  (0) 2024.07.16
정보보안4 4차시  (0) 2024.07.07
정보보안4 3차시  (0) 2024.07.06
정보보안4 2차시  (0) 2024.06.30