Script/PYTHON

python 정리-복기 -

KoTiv 2021. 11. 25. 21:31
반응형
SMALL

인터프리터 : 코드를 한 줄 한줄 실행하여 결과를 얻는 방식.


자료 : 프로그램이 처리할 수 있는 모든것 

자료형 : 문자열 , 숫자 , boolean (2진 자료 ). 

자료형 확인 함수 type() 

 

- 파이썬 숫자 자료형 분류 

1. 정수 (int ) , 실수 (Float ) , 복소수 (complex )

 연산자 ( +- * / )  정수 나누기 연산자 ( // ) [나눗셈 후 소숫점 이하는 버림 ] ,  나머지 연산자 ( % )  제곱연산자( ** )

 

2. int( ) - cast 연산자 

int( 숫자 ).int( 계산식 ).  Int('문자열 ' )

 

몫과 나머지 구할때 스는 함수 divmod(  ,  ) - 출력은 튜플(  ) 형태로 출력나옴 . 

 

3. float() - 실수 cast 연산자 

float  // 지수표현 E2 ^2

float(숫자), float(계산식 ) , float ( '문자열 ' )


1. sep로 값사이에 문자넣기 

sep = separator

print(1,2,3, sep=', ' )

>>> 1, 2, 3 

 

2. 지정 표현식으로 데이터 나누기

input_b, input_a = input().split(',')

in 1, 4

>>>1 

>>>4

라고한다면 , 로 데이터를 나눌수있다

 

string 


문자열 : "" , '' 로 문자열을 구성함 , ' "~" ' , " '~ ' " , "\' ~ \' " , "\" ~ \" " , \n(줄바꿈) ,  \t (탭) ,

 

문자열 연결 연산자 : +  ex) "a"+"a"

 

문자열 반복 연산자 : * ex) "a"*2 

 

문자 선택 연산자(indexing) : [ ] , 

             - zero index ( 0부터 체크 ) - 파이썬  

             - one index ( 1부터 체크 )

            ex) print("hello World"[0] ) -> h

            ex) print("hello World"[-1]) -> d

문자 범위 선택 연산자(slicing) :     [:].  

              //문자열 특정 범위를 선택시 사용함 [1:n]  문자열 index 1 부터 n-1까지 범위 지정 . n은 포함하지않음  

 

            // 생략하여  사용가능 [1: ] // 1부터 끝까지 . [:n] //0부터 n-1까지 . 

 

** 문자열 슬라이싱을 하더라도 원시데이터는 변하지 않음 . 

 

문자열 길이 리턴함수 len()



사용자 입력 함수 input()

 

ex ) input("string : hello world " )

 

block : 프로그램 실행중 잠시 멈추는것 : input() 실행하면 string: hello world 가 출력되고 프로그램은 종료되지 않는 상태 

string : hello world >  (  hi world ) 

-> hi world 출력으로 나옴 

 

ex) string = input()

print(string)

자료형 확인할때

print(type(string))

 

** 근데 여기서!!! input() 실행하여 입력한 데이터는 무조건 문자열 자료형으로 받아들임. 

 

*cast 연산자 

-문자열 -> number - 

int(), float()

 

ex)

string_a = input("enter ")

int_a=int(string_a)

 

string_b = input("enter ")

float_b = float(string_b)

 

print("string",string_a + stinrg_b)

print("number",int_a,float_b)

---------------------------------

ex2) 

float_input_1 = float(input("enter float")

float_input_2= float(input("enter float")

 

print("+",float_input_1+float_input_2)

-------------------------------------

- cast - num->string -

1. str() , format(), f-string 

 

1.1 str() , str( other type)

ex)

 str1 = str(52)

 str2 = str(52.12)

pritn(type(str1), type(str2))

 

1.2 format() 

"{}".format(10)

"{} {}".format(10, 11)

"{} {} {} {}".format(10, 11, 12 ,13)

-중괄호를 포함한 문자열 뒤에 마침표 찍어서 숫자를 문자열로 표현함 

* 포맷함수의 숫자갯수롸 괄호의 수가 맞아야함 .

 

ex)

string_a = "{}".format(10)

print(string_a, type(string_a))

 

1.2.1

 

 

 

 

1.3  f-string

num = 5

str_a = f'{num}'

print(type(str_a))

 

대소문자 변환 함수 

upper() lower()

upper() - 대문자로 변환

lower() - 소문자로 변환

 

공백제거함수  strip(), rstrip() , lstrip() - trim 활용

 

strip() - 문자열 양옆의 공백을 제거 , 

lstrip() - 왼쪽 공백 제거 

rstrip() - 오른쪽 공백제거 

( 공백은 띄어쓰기 ,탭 , 줄바꿈 ). 

 

문자열 구성파악함수 - is00() 

- isalnum() , isalpha() , isdentifier(), isdecimal(), isdigit(), isspace(), islower(), isupper(),

 

- isalnum() - 문자열 내 알파벳 or 숫자로 구성되어 있는지 확인 

- isalpha() - 알파벳으로만 구성되어 있는지 확인

- isdentifier()-  식별자로 사용가능한지 확인

- isdecimal() - 정수 인지 확인

- isdigit() - 숫자로 인식가능한지 확인

- isspace() - 공백으로만 구성되어 있는지 확인

- islower() - 소문자로만 구성되어있는지 확인

- isupper() - 대문자로 구성되어 있는지 확인

 

문자열 찾기  - find() , rfind()

find() - 왼쪽부터 오른쪽으로 처음 등장 위치 찾기 

rfine() -오른쪽부터 왼쪽으로 처음등자우이치 찾기 

 

 

- string & in operator  - 문자열 내부의 문자열 확인 연산자 in. ( return True, False )

 

 

문자열 자르기 - split()

문자열 자르기 함수 . split()

return 자료형 - 리스트 자료형을 출력함 .

 


Boolean


boolean operator

 

== , > , < , != , <= , >= ,

객체 판별 

is,  is not 

 

논리 연산 

not 

and 

or

정수 실수 문자열을 bool로 반드는함수 bool()

 


조건문 

구조

 

if 식 :

    참일때 실행 

    참일때 실행


날짜 시간 활용 

#날짜 /시간 관련 기능 호출 

#날짜 시간 관련 기능 호출 (모듈 ) 
import datetime

#현재 날짜 시간 호출
now = datetime.datetime.now()

#출력
print(now.year, "년")
print(now.month,"월")
print(now.day, "일")
print(now.hour,"시")
print(now.minute,"분")
print(now.second,"초")

#format() num->str
print("{}년 {}월 {}일 {}시 {}분 {}초".format( now.year, now.month, now.day, now.hour, now.minute, now.second ))

 

오전 오후 구분하는 프로그램 

import datetime 

now = datetime.datetime.now()

if now.hour<12:
	print("현재 시각은 {}시로 오전입니다!".format(now.hour))
    

if now.hour >= 12:
    print("현재 시각은 {}시로 오후입니다!".format(now.hour))

 

계절 구하기 

import datetime

now = datetime.datetime.now()

if 3 < now.month <= 5:
	print("{}월로 봄입니다".format(now.month))
    
if 5 < now.month <= 8:
	print("{}월로 여름입니다".format(now.month))

if 8< now.month <= 11:
	print("{}월로 가을입니다".format(now.month))
    
if 11 < now.month <=3:
	print("{}월로 겨울입니다".format(now.month))

끝짜리 짝수 홀수 

num = input("integer> ")

last_char = num[-1]

last_num = int(last_char)

if last_num == 1\
	or last_num ==3\
    or last_num ==5\
    or last_num ==7\
    or last_num ==9:
    print("홀수")

if lsat_num ==2\
	or last_num ==4\
    or last_num ==6\
    or last_num ==8:
    print("짝수")


if last_char in "02468":
	print("짝")

if last_char in "13579":
	print("홀")​

if~else  elil

 

if condition:

     참일때 실행 문장

else:

     거짓일때 실행문장 

 

 

if 조건A:

    조건A가 참일때 실행

elif 조건B:

    조건B가 참일때 실행

else:

   모든 조건이 거짓일때 실행

 

False로 변환되는 값

 : if 조건문에 매개변수 bool이 아닌 다른 값이 올때는 자동으로 bool로 변환하여 처리한다.

 

False 로 변환되는값은 None, 숫자 0, 0.0, 빈 컨테이너 ( 빈 문자열 , 빈 바이트열 , 빈 리스트 , 빈 튜플 , 빈 딕셔너리 등 ). 

그 외는 모두 True로 변환된다.

 

Pass 키워드 

  if zero == 0 :

       빈줄 대신 pass 넣어줘 

 else :

      pass 

 

raise NotImplementedError 아직 구현하지 않은 부분으로 오류를 강제로 발생시킬수있으니 

passe대신 raise NotImplementedError를 자주 쓰도록 해라 . 

 


리스트  list

 

-여러가지 자료를 저장할 수 있는 자료형. 

대괄호 [ ] 내에 여러 종류의 자료를 선언할 수 있다.

 

array = [273, 32, 103, "string", True, False ] 

print(array)

 

array = [ element1, element2, element3, element4, .... ]

array[0] = element1 

array[1:3] = [element2, element3 ]

 

-> list_a = [273, 13, 21, "string", True, False ] 

list_a[0] = "change"

list_a = [ 'change', 13, 21 ,'string , True, False ] 

 

1. 대괄호 안에 음수를 넣어 뒤에서부터 element 선택가능

array[-1] = Falese

2.이중으로 리스트를 접근할수 있음 . 

list_a[3][0] = 's'

3.리스트 안의 리스트를 사용할수 있음 .

test_a = [ [1,2,3] , [4,5,6], [7,8,9] ] // 리스트 3개를 가지는 리스트

test_a[1]  , [4,5,6]

test_a[1][1] , 5

 

 

리스트 연산자 : 연결(+), 반복(*), len()

list elemnt 추가  : append() insert()

 

list.append( element ) - 리스트 뒤에 요소를 추가

list.insert( location , elemnt ) 

 

한번에 여러 요소 추가 

extend() - 원시 리스트 뒤에 새로운 리스트의 요소를 모두 추가 

 

list_a = [1, 2, 3] 

list_a.extend([4,5,6])

= [1, 2, 3, 4, 5,6 ]

 

리스트 연결 연산자 및 요소 추가의 차이 , 

 

list_a + list_b 의 실행결과는 리스트가 연결되지만 원시 리스트 a b는 변화가 없을거임 

extend() 사용하여 요소를 추가한다면 원시 리스트 a b 는 차이가 생김  

 

 

 

 

리스트에 element. 제거 

1. 인덱스 제거  : del () , pop ()

 del list[index] - 특정 인덱스의 요소를 제거함 / 범위를 지정하여 한번에 제거가능 del list[3:6] 

 list.pop(index) - 매개변수를 입력하지 않으면 마지막 요소를 제거함  

 

2. 값으로 제거 : remove(), 

list.remove(value) - 가장 먼저 발견되는 하나만 제거함 

 

3. 모두제거 : clear()

list.clear()

 

리스트 내부에 특정 값 확인 하기 

1. in/ not in 

 value in list

 value not in list

 

for 문 

 

for i in range(100) :

    print("a") 

 

for 반복자 in 반복할 수 있는것 :

    코드 

반복할 수 있는것 = 문자열 리스트, 딕셔너리 범위 등.

 

array = [212, 1, 2, 3 ,5 ,7]

for elemnt in array:

    print(element) 

 

array의 요소 하나하나가 element에 들어가서 출력나옴 

 

list - 인덱스 기반의 값 저장 방식의 자료형 

list = [] 

------

 

딕셔너리 {}

딕셔너리 - 키 벨류 형식의 해쉬형식을 따름 .

 

var = {

      ket : value,

}

 

dict_a = {

     "name" : "ho",

     "type " : "kwnag"

}

 

dic element

 

dict_a["name"]

dict_a["type"]

 

dict_b = {

    "dirc" : ["a", "b"],

   "cast" : ["b", "c", "d", "t"]

 }

 

 

ex ]

 

dic = {

      "name " : "7D 건조 망고 ",

     "type "  : "solt",

     "ingredient" : ["망고", "설탕", "메타중아산" , "나트륨", "치자황색소"],

    "origin": "필리핀" 

}

 

 

print("name", dic["name"])

print("type", dic["type"])

 

dic["name"] = "8D 건조 망고"

 

딕셔너리 값 추가 제거 

 

딕셔너리 값 추가 

dic[ key] = value

 

del dic[key] = value

----------

 

ex)

 

dictionary = {}

 

print("element adding", dictionary )

 

dictionary["name"] = "new name"

dictionary["head"] = "new head"

dictionary["body"] = "new body"

 

print("element", dictionary)

 

------------------

 

 

dic  = {

      " name" : "new mang"

     " type" : "monday"

}

 

del dic["name"]

dle dic["type"]

 

-----

 

find key in dic

 

operatior in 

 

dictionary = {

    "name" : "a",

    "type" : "b",

    "ingredient" : "c",

   "origin" :  "d"

}

 

key = input()

 

if key in dictionary:

    print(dictionary[key])

else:

   print( no key )

-------

 

get()  - 딕셔너리의 키로 값을 추출하는 기능 . 존재하지 않는 키에 접근시 None으로 출력 

 

dictionary = { 

    "name " : "a"

   }

 

value = dic.get("nono")

print("vale", value)

 

if value == None:

   print("ok")

-----

 

for key in dic:

    code 

 

--------------

 

반복문 

 

1. 범위  range 

 

range(A) -> 0 , 1, 2, ....., A-1 

range(A,B) -> A, A+1, A+2, ....., B-1 

 

range(A,B,C) -> A, A+C, A+2C, A+3C, ....., B-1

 

print( list[range(A)] )  -[ 0 , 1, ,2, 3, ...., A-1 ] 

print( list[range(A,B)] ) -> [ A, A+1, A+2 ,...., B-1] 

print( list[range(A,B,C) ] ) -> [ A , A+C, A+2C, A+3C, ....., B-1 ] 

 

 

for list and range maxing

 

for i in range(len())

 

for i in range( e1 , e2 , -e3 )

 

for i in reversed(range(5))

 

-----

while

 

while bool :

         string

 

-

문자열 리스트 딕셔너리 관련 함수 

list 

 min (리스트 내부 최솟값 ) max ( 리스트 내부 최댓값 )  sum (리스트 합 )

 reversed(). 리스트 뒤집기.

 확장 슬라이싱 

 list [::-1]

 enumerate() - 인덱스 획득 함수 

 

딕셔너리 - items ()

ex = {
    "A" : "a",
    "B" : "b",
    "C" : "c",
    "D" : "d"
}

print("dictionary")
print("items():", ex.items())
print()

print("조합")

for key, elemnt in ex.items():
    print("{} , {}".format(key,elemnt))
    

리스트 내포 

-

list = [ 표현식 for 반복자 in 반복할수 있는 것 ]

list = [ 표현식 for 반복자 in 반복할 수 있는것 if 조건문 ] 

 


array = []

for i in range(0 ,20 , 2):
    array.append(i*i)

print(array)

array = [i*i for i in range(0,20, 2)]

print(array)

 

함수 생성하기 

def 함수 이름():

     코드

 

----

def 함수이름( 매개변수, 매개변수, ....):

      코드 

 

----------

def 함수이름( 매개변수. , 매개변수 , ....., *가변 매개변수 )

     코드 

 

가변매개변수  -> 리스트처럼 사용해

 

   1. 가변 뒤에는 일반 변수가 올수 없다. 

   2. 가변은 하나만 사용할 수 있다. 

--------------

기본 매개변수 

ex ) print( value , ...., sep= ' ' , emd = '\n', file= sys.stdout, flush= False )

 value - 가변매개변수 

 근데 뒤에 일반 매개변수가 왔음 

 그치만 매개변수 = 'value' 의형태임 이건 기본 매개변수임 .  defulte값을 의미함.

 

 1. 기본 매개변수 뒤에 일반 매개변수가 올수 없다. 

---------------

키워드 매개변수 

 매개변수 이름을 직접적으로 지정하여 값을 입력해야한다 . 

 

재귀함수 

 

def factorial(n):

      

       if n == 0:

             return 1

       else:

            return n*factorial(n-1)

 

문제 : 

같은 함수를 너무 많이 불러와서 사용해서 문제가됨 . 

해결범 - memoization 메모화 . 

딕셔너리를 사용하여 , 한번 계산한 값을 저장 , memo

딕셔너리에 값이 메모되어 처리를 수행하지 않고 곧바로 메모리 값을 리턴하여 코드의 속도를 빠르게 만듬 .

 

 

트리구조 

  노드 , 마지막 노드 리프 , 

 

튜플 , 람다 . 

 

튜플 : 함수와 함께 많이 사용되는 리스트와 비슷한 자료형 , 리스트와 다른점은 한번 결정된 요소는 바꿀 수 없음 

리스트와 비슷한 자료형 

 

(데이터 , 데이터 ,데이터 ,데이터 ,.....)

 

요소 1개의 튜플

(데이터 , )

함수의 리턴에 많이 사용됨.  - > 여러 값을 리턴하고 할당할 수 있기 때문.

 

 

 

람다 : 매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것이 번거롭고 코드 공간 낭비라는 생각이 들때 함수를 간단하거 쉽게 선언하는 방법 . 

- 함수의 매개변수로 함수 전달 

lambda 매개변수: 리턴값

lambda x, y: x*y 

filter() map()

 

fliter(함수, 리스트) - 리스트의 요소를 함수에 넣고 리턴값이 참인것으로 리스트를 새롭게 구성 

map(함수, 리스트) - 리스트의 요소를 함수에 넣고 리턴 값으로 새로운 리스트를 구성

 

파일처리 

1. 텍스트 파일

- 파일처리 루틴 

파일 열기 -> 파일 읽기 -> 파일 쓰기 , 

1.1 파일 열기 -> open() , 

파일 객채 = open(문자열: 파일 경로, 문자열: 읽기 모드)

모드 w write mode 쓰기 / a append mode 뒤에 이어서 쓰기  / r read mode 읽기 

파일 닫기 close()

파일 객체.close()

 

with 키워드  코드가 길어질때 open close 안까먹게 하는 코드 

 

with open( 문자열 : 파일경로, 문자열: 모드) as 파일 객체 :

     문장 

 

2. 바이너리 파일 

 

-이터레이터 튜플 제너레이터 

1. 이터레이터 

for 반복자 in 반복할 수 있는것 

 

 반복할 수 있는것 - 이터러블  - 내부 요소를 하나씩 차례대로 꺼낼 수 있는 객체. ( 리스트 , 딕셔너리 , 튜플 , 문자열 등 )

 next() 함수 적용해 하나하나 꺼낼수 있는 요소를 이터레이터라고함 . 

 

-제너레이터 

파이썬의 특수 문법 구조 , 이터레이터를 직접 만들때 사용함 , 

함수 내부에 yield 키워드를 사용하면 제너레이터 함수가됨 . 일반적으로 호출되지 않음 . 

next() 함수를 사용하여 내부의 코드를 실행할수 있음 . 

 

오류 -

종류 

1. 프로그램 실행 전  구문오류

2. 프로그램 실행 중  예외 런타임오류 

 

기본 예외처리 , 

1. 조건문을 사용

 isdigit() - 숫자로만 구성된 글인지 확인 하는 함수 , 

2. Try 구문 사용 . 

 

try except

try :

   예외발생 코드 

except:

   예외시 실행코드 

 

예외시 실행코드에 아무것도 없을때 pass 키워드 넣자 

 

try except else

 

try :

   예외발생 코드 

except:

  예외시 실행코드

else:

  예외가 발생하지 않을때 실행 코드 ,  

 

finally  예외 발생하던 안하던 무조건 실행하는 코드 

try :

   예외발생 코드 

except:

  예외시 실행코드

else:

  예외가 발생하지 않을때 실행 코드 ,  

finally:

    무조건 실행할 코드 

 

예외처리 - 예외객체 

 

try:

    예외 구문 

except 예외 종류 as 객체 활용 변수 이름:

  예외 발생 실행 구문 . 

 

Exception = > 예외처리 클래스 , 

as 키워드 - > 

 

raise - > 강제로 예외 발생시키는 함수 .

 

모듈 

: 코드를 분리 하고 공유함 , 

모듈 -> 여러 변수와 함수를 가지고 있는 집합,

 

표준 모듈 / 외부 모듈 이존재함 /

1. math 

 

from - 

 

from module import 변수 , 함수 

 

random module 

-

 

 

모듈 만들기 , 

 

__name__ == "__main__" 

 

__name__ . 프로그램의 진입점을 엔트리 포인트 또는 메인 이라고 한다 . 

엔트리 포인트에서 메인 내부의 __name__은 __main__이라고한다 .

 

모듈의 __name__ 

모듈내부의 __name__은 모듈의 이름을 나타낸다 .

 

 

현재 파일이 모듈로 실행되는지 엔트리 포인트로 실행되는지 확인가능함 , 

 

__init__.py file 

__all__ < 리스트로 생성후 리스트에 지정된 모듈들이 from pak import * 전부 읽어지도록 함 

 


클래스 

C를 제외한 모든 언어는 객체 지향 프로그래밍

객체 지향이란 - 객체를 우선으로 생각해서 프로그램이하는 언어

 

클래스를 기반으로 객체를 만듬 

 

객체 : 1 데이터를 먼저 고려함 , 여러가지 속성을 가지는 대상 , 

 

클래스 

객체를 효율적으로 생성하기 위해 만들어진 구문,

class classname:

     클래스 내용

 

인스턴스 이름 = 클래스이름 () -> 생성자 함수 , 

 

클래스를 기반으로 만들어진 객체를 인스턴스라고함 .

 

생성자 : 클래스 이름과 같은 함수 , 

class classname:

      def __init__(self , 매개변수 ):

            pass

 

-클래스 내부의 함수는 첫 뻔째 매개션부로 반드시 self를 입력해야함 , " self" 자기자신을 나타내는 딕셔너리 , 

self의 속성 기능에 접근시 self.<식별자>  로 접근해야함 , 

 

메소드 

- 클래스가 가지고있는 함수 , 

 

class classname:

      def methodname(self, 추가 매개변수 ):

          pass

 

A라는 클래스를 기반으로 그 속성과 기능을 물려받아 새로운 클래스를 만드는 상속, 

객체가 어떤 클래스를 기반으로 만들었는지 확인하는 isinstance()함수

파이썬의 기본적 제공하는 str()함수 혹은 연산자를 사용해서 클래스의 특정 함수를 홏풀할 수 있게 해주는 기능이 대표적이다 . 

 

isinstance(인스턴스 ,클래스 )

반응형
LIST