본문 바로가기
언어/PYTHON

PYTHON 정리

by 이민우 2021. 1. 18.
728x90
반응형

수식

#수식
#함수는 초기화가 무조건 동반되어야 함
a=4321
b=2
print(a+b) #4323
print(a-b) #4319
print(a*b) #8642
print(a/b) #double 나눗셈 2160.5

print(b**3) #b의 3승 8
print(a//b) #int형 몫
print(a%b)  #나머지
print(divmod(a,b)) #int형 몫과 나머지
print(a==b) #False
'''
python 2.x에서는 5/2시 2.5가 아닌 2로 나옴 (정수의 나눗셈은 정수로 나옴)
몫을 정수가 아닌 소수가 나오게 하려면
5.0/2, 5/2.0, 5.0/2.0을 사용
'''

c = 2
c += 2
print(c) #4
c -= 2
print(c) #2
c *= 2
print(c) #4
c /= 2
print(c) #2.0

a = 'hello'
b = 'world'
print(a + b) #helloworld

 

기본 입출력

#기본 입출력
a = 'hello'
b = 'world'
print(a, b, end=' / ') #hello world
print(a+b) #helloworld
'''
c = input('수식을 입력 : ')
print(c)
c = eval(c)
print(c)
c = eval(input('수식을 입력 : '))
print(c)
'''
'''
Python 2.x에서는 input 수식 입력시 결과 값이 나옴
그래서 raw_input을 사용했지만, 3.x로 오면서 사라지고
eval 사용
'''

name = "lmw"
age = 27
score = 87.912

print('이름 :', name, '나이 :', age, '성적 :', score)
print('이름 : %s 나이 : %d 성적 : %f' %(name, age, score))
print('이름 : %s 나이 : %d 성적 : %.2f' %(name, age, score))
print('이름 : {} 나이 : {} 성적 : {}'.format(name, age, score))
print('이름 : {1} 나이 : {2} 성적 : {0}'.format(score, name, age))#숫자는 몇 번째 변수인지

#금액 1,000 단위 콤마
print(format(1398292389,','))

 

반복문&제어문

#반복문
a = 1
sum = 0
while a <= 100 :
    sum += a
    a += 1
print(sum)

a = False
while a is not True :
    print(a)
    a = True
while a is True :
    print(a)
    a = False

a = 1
sum = 0
for i in range(100) : #1~100
    sum += a
    a += 1
print(sum)

a = 1
sum = 0
for i in range(1, 101) : #1~100
    sum += a
    a += 1
print(sum)

a = 1
sum = 0
for i in list(range(100)) : #1~100
    sum += a
    a += 1
print(sum)

#조건문
#파이썬에는 switch/case 가 없음
#오직 if-else 문만
a = 2
if a==1 :
    print(1)
elif a==2 :
    print(2)
else :
    print(3)

 

자료구조

#자료구조
#리스트 : 평범한 배열. 중복 가능 []
name = ["lee", "min", "woo"]
print(name)
print(name[0])
realName = ' '.join(name) # ' '를 사이에 넣고 붙이기
print(realName)
name = realName.split() # 나누기
print(name)
#추가
name.append("v") #맨 뒤에 추가
print(name)
name.insert(0, "MR.") #특정 위치에 추가
print(name)
ext = ['1', '2', '3']
name.extend(ext) #리스트를 통째로 추가
print(name)
#삭제
name.pop() #맨 뒤 삭제
print(name)
name.pop(4) #4번째 삭제
print(name)
name.remove('1') #'1' 값 삭제
print(name)
del name[4]
print(name)
#검색
print(name.index('woo')) #'woo' 값의 위치 검색
print(name.index('woo', 2)) #'woo' 값의 위치 2 이후로 검색 : 없으면 valueerror
#정렬
num = [1,2,3,4,6,7,4,1,9]
num.sort() #오름차순
print(num)
num.reverse() #내림차순
print(num)
print(max(num), sum(num),min(num)) #최대, 평균, 최소
#길이
print(len(num))

#셋 : 리스트와 동일하나 중복을 배제함. {}
num1 = {1,2,3,3}
num2 = {3,4,5}
print(num1) #중복이 배제되어 123
#합집합
num3 = num1.union(num2)
print(num3)
num3 = num1|num2
print(num3)
#교집합
num3 = num1.intersection(num2)
print(num3)
num3 = num1&num2
print(num3)
#차집합
num3 = num1-num2
print(num3)
#길이
print(len(num3))
#검색
print(max(num), sum(num),min(num)) #최대, 평균, 최소

#튜플 : 읽기 전용으로 사용됨. 속도가 빠르나 제공 함수가 적음 ()
num1 = (1,2,3)
#튜플은 일반적으로 다른 타입으로 변환하며 사용
#tuple(num) set(num) list(num) 과 같이 사용

#딕셔너리 : 키와 값으로 구성된 MAP
num = {"1":1, "2":2, "3":3, "5":5}
print(num)
#추가
num["4"] = 4
print(num)
#수정
num["4"] = 3
print(num)
#삭제
del num["4"]
print(num)
#조회
print(num["3"]) #근데 없는거 "4" 같은거 읽으면 에러
print(num.get("4")) #얘는 없는거 읽으면 None 반환
print(num.get("4",7)) #None이면 7 반환
print(num.items()) #키:값 반환
print(num.keys()) #키 반환
print(num.values()) #값 반환
#전체 삭제
num.clear()
print(num)
#길이
print(len(num))

 

함수

#함수
def func (a, b) :
    return a+b
def func2 (a,b) :
    return a+b, a-b
a=5
b=3
addR = func(a,b)
print(addR)
addR, minR = func2(a,b)
print(addR, minR)
print(func2(a,b))

#람다
def func4(l) :
    for i in l :
        l[i-1] *= l[i-1]

l = [1,2,3,4,5]
func4(l)
print(l)
print(list(map(lambda x: x*x, range(1,6))))

#변수 범위
a = 10 #전역변수
def func3 () :
    #함수 안에서 사용하고 싶으면 global 붙여서 쓰겠다고 선언
    global a
    a += 1
    print(a)

func3()
print(a)

 

랜덤 모듈

#랜덤
import random

#랜덤 숫자
r = random.random() #0~1
print(r)
r = random.random()*10 #0~10
print(r)
r = random.randrange(1,10) #1~9
print(r)

l = []
for i in range(10) :
    l.append(i)
print(l)
random.shuffle(l) #섞기
print(l)
s = random.choice(l) #아무거나 뽑기
print(s)

 

파일 입출력

#파일 입출력
#열기
f = open('abc.txt', 'w', encoding='utf8')
#w는 덮어쓰기, a는 이어쓰기 (원래 거 삭제 안됨)
f.write('123\n') #쓰기 근데 얘는 뒤에 \n이 안 붙음.
f.write('456\n')
f.close()

f = open('abc.txt', 'a', encoding='utf8')
f.write('789\n')
f.close()

#한 줄씩 읽기
f = open('abc.txt', 'r', encoding='utf8')
sen = f.readline()
while sen != '' :
    print(sen)
    sen = f.readline()
    
#전체 읽기
f = open('abc.txt', 'r', encoding='utf8')
sen = f.readlines()
print(sen)

#pickle
#파이썬의 객체 계층 구조를 바이트 스트림으로 변환해 저장
import pickle
user = {'name' : 'lmw', 'age' : 27}
f = open('userInfo.pickle', 'wb')
pickle.dump(user, f)
f.close()

f = open('userInfo.pickle', 'rb')
us = pickle.load(f)
print(us)

#glob
#파일들의 리스트를 뽑을 때 사용
#파일의 경로명을 이용해 활용 가능
from glob import glob
glob('*.txt') #현재 폴더의 txt 형식 전부 추출

 

클래스

#클래스
#클래스 생성
class programmer :
    def __init__(self, name, age, language) :
        self.name = name
        self.age = age
        self.language = language
    def __del__(self) :
        print('delete')
    def introduce(self) :
        print('hi my name is {} and {} years old. I\'m good at {}'.format(self.name, self.age, self.language))
        

lmw = programmer('lmw',27,{'java', 'python', 'javaScript'})
lmw.introduce()
del lmw

#클래스 상속
class goodProgrammer(programmer) :
    def __init__(self, name, age, language) :
        super().__init__(name, age, language)
        #만약 다중상속인데 이렇게 하면 첫 번째 부모의 생성자만 호출
        #그러니까 예를들어 A,B를 상속받았으면 SUPER 말고 A.__init__() 이렇게 호출
    def introduce(self) :
        print('hi. I\'m good programmer my name is {} and {} years old. I\'m good at {}'.format(self.name, self.age, self.language))
        
lmw = programmer('lmw',27,{'java', 'python', 'javaScript'})
lmw.introduce()
hsj = goodProgrammer('hsj',27,{'java','python','javaScript','Ruby'})
hsj.introduce()

 

예외처리

#클래스
#클래스 생성
class programmer :
    def __init__(self, name, age, language) :
        self.name = name
        self.age = age
        self.language = language
    def __del__(self) :
        print('delete')
    def introduce(self) :
        print('hi my name is {} and {} years old. I\'m good at {}'.format(self.name, self.age, self.language))
        

lmw = programmer('lmw',27,{'java', 'python', 'javaScript'})
lmw.introduce()
del lmw

#클래스 상속
class goodProgrammer(programmer) :
    def __init__(self, name, age, language) :
        super().__init__(name, age, language)
        #만약 다중상속인데 이렇게 하면 첫 번째 부모의 생성자만 호출
        #그러니까 예를들어 A,B를 상속받았으면 SUPER 말고 A.__init__() 이렇게 호출
    def introduce(self) :
        print('hi. I\'m good programmer my name is {} and {} years old. I\'m good at {}'.format(self.name, self.age, self.language))
        
lmw = programmer('lmw',27,{'java', 'python', 'javaScript'})
lmw.introduce()
hsj = goodProgrammer('hsj',27,{'java','python','javaScript','Ruby'})
hsj.introduce()

 

형변환

#string to char list
val = '45678'
spl = [char for char in val]
print(spl)

#int to string
val = '4546793'
chg = eval(val)
print(chg-1)

#string to int
val = 4546793
chg = str(val)
print(chg)
728x90
반응형

'언어 > PYTHON' 카테고리의 다른 글

Python range float  (0) 2021.02.15
Lambda를 활용한 Activate Function  (0) 2021.02.12
파이썬 모듈들  (0) 2021.01.21