파이썬 요약

파이썬 요약

파이썬 기초


import math
import sys

class test:
    def __init__(self, arr):
        self.arr=arr
    def logArr(self):
        for i in self.arr:
            print(i)

inp = list(map(int,sys.stdin.readline().split()))
cls=test(inp)
cls.logArr()

파이썬 입출력

#입력 방법1
inp=input("값을 입력하세요") #값을 입력하지 않으면 빈 문자열

#방법2 단일 정수를 받을 때
import sys
inp = int(sys.stdin.readline())

#방법 3 여러 정수를 받을 때
import sys
inp = list(map(int,sys.stdin.readline().split()))
        #map클래스를 리스트 튜플 셋 딕셔너리 등 자동화 가능

#출력방법
print(inp) 

파이썬 자료형

#변수 생성
x=30 # int형
y="30" # str형
z={"a": 1, "b": 2} # dict 형
type() # 출력값: <class 'dict'>

#자료형 변환 (파이썬은 자료형이 달라져도 변수에 대입 OK)
y=int(y) # int 형 30 이 출력, 
  • 대입 연산시(=) 값이 복사되는것
int약 절대값 약 21억의 자연수(32비트)
float유효자리 15의 약 절대값 10^308(64비트)
str문자열
tuple튜블
bool참 거짓
그외long(무한 자연수), complex, decimal(유효자리 넓은 정수), None(null)
  • 대입 연산시(=) 주소가 복사되는것(복사시 같은 것을 가르키게 됨)
list리스트 [1,2,3]
set셋 {1,2,3}
dict딕셔너리 {”a”:1,”b”:2,”c”:3}
class클래스 class name(parent):
numpy, pandas데이터 처리 라이브러리

파이썬 연산

a=10
b=4
result=0

#가감승제
result=a + b # 14
result=a - b # 6 
result=a * b # 40 
result=a / b # 2.5 (자료형 변환)
result=a // b # 2  (변환없이 버림)

#나머지 제곱
result=a%b # 2
result=a**b # 10^4

#문자열 연산
a="가"
b="나"
c=1
print(a+b) # 가나 (c는 자료형이 다르므로 안됨)
print(a,b,c)# 가나1

#비트 연산 (&,|,^,~) 왠만해선 사용하지 말것
result= a&b # 0b1010 0b100 0

#연산하고 대입
b+=a # b=b+a 와 동일 

#변수 삭제
del b # 이후 새 b를 생성하기 전까지 사용하면 에러
  • 숫자형 끼리는 자동 형변환을 해줌
  • 숫자형을 문자열로 자동으로 바꿔주진 못함

파이썬 조건문

# 동등비교
"1"==1#False 
[1]==1

1==1.0 #True
complex(real=1,imag=0)==1
1==1

#비교
1<1.1 #True 
1>1.1 #False
1<=1 #True 
1>=1 #True 

#if문
a=10
b=11
if a>b:
    print("a가 b보다 큽니다") #a가 클경우
elif a<b:
    print("b가 a보다 큽니다") #b가 클경우
else:
    print("같습니다") #같을 경우

  • 자료형이 다르면 False,
  • 숫자 자료형은 보통 형변환을 자동으로 해줌

파이썬 반복문

#0~9까지 출력하는 반복문

#while 문 
count = 0
while count < 10:
    print(count)
    count += 1

#for 문
for count in range(0, 10):
    print(count)

# 리스트,튜플 등의 반복
for i in [0,1,2,3,4,5,6,7,8,9]:
    print(i)

#리스트 튜플 등의 전체 반복
tuple(map(int,[0,1,2,3,4,5,6,7,8,9]))

#딕셔너리 반복
dic={'0': 0,
 '1': 1,
 '2': 2,
 '3': 3,
 '4': 4,
 '5': 5,
 '6': 6,
 '7': 7,
 '8': 8,
 '9': 9}
for key, value in dic.items():
        print("{}:{}".format(key,value))
  • break 구문을 사용해서 언제든지 반복문을 종료
  • continue 를 사용해서 반복문을 다음단계로 강제 진행

파이썬 문자열

#문자열 생성
mystr="  abcd efgh   "
mystr='  abcd efgh   '
mystr="""Hello, world!
안녕하세요.
Python입니다.""" # 여러줄인 경우
mystr=str(10)# '10' #형변환

#문자열 다루기 (기본적으로 원본에는 영향 없다)
mystr="  012345 가나다라  "
mystr+"결합된 문자"  # "  012345 가나다라  결합된 문자"
mystr.strip() # "012345 가나다라" #좌우 공백 제거
        #(입력값을 넣으면 넣은 값들 제거)
"ABCD".lower() # "abcd" (소문자화, 반대는 upper())
mystr.replace("012345","abcd") # "  abcd 가나다라  "
str.join(" ",["안녕","하세요","1234"]) # **'안녕 하세요 1234'**
mystr.find("5") # 7 #문자열을 찾아서 인덱스 반환(없으면 -1 반환)

#포맷팅
formating="문자열: {}".format("문자열 입니다")
formating="문자열: {1}, {0}".format("문자열 입니다", 100)
        #숫자도 형변환 해줌

파이썬 배열


[이 단원 요약] 이것만 외우면 된다!!

mylist=[1]
mylist.append(2)
mylist.pop()
print(mylist,len(mylist))

mytuple=(1)
print(mytuple)

mydic={"1":1}
mydic["2"]=2
mydic.pop("2")
print(mydic.items(),len(mydic))

myset={1}
myset.add(2)
myset.discard(2)
print(myset,len(myset))

파이썬 리스트

#리스트 생성
lis=[] # 빈 리스
lis=list() # 빈 리스트
lis=list(range(10)) # [0~9] 까지의 리스트

#레인지 생성
range(10)# [0,9) 레인지
range(0,10,2)# [0,9)의 2의 배수 레인지
list(range(10)) # [0,9) 리스트
tup(range(10)) # [0,9) 튜플

#리스트 비교(자료형이 같아야 한다)
lisa=[0]
lisb=[0]
lisa==lisb # True
lisa==0 # False

#리스트 
lisa+lisb #[0,0]
lisa*3 #[0,0,0]

#리스트 다루기
lis[0] #0 0 번째 요소
lis[-1] #9 뒤에서 1번째 요소
lis[0:5:2]# [0,2,4] [0,5)까지 1칸씩 뛰어서(슬라이스)

len(lis) #리스트의 길이 10 !!!!
lis.count(0) #0이 몇개 있는지 반환
lis.index(10) #입력값에 해당하는 값의 인덱스(없음 에러)
100 in lis #False 리스트에 값이 있는지 확인

#아래 메서드들은 모두 원본 리스트에 영향을 줌\
#중요한 메서드 append,pop, sort
lis[len(lis):]=[0]#맨 뒤에 0 추가
lis[len(lis):]=[1,2]#맨 뒤에 1,2 추가
lis.append(10)# 맨 뒤에 10 추가(중요) !!!!
lis.extend([11,12]) # 맨 뒤에 11,12 추가
lis.insert(0,100) # 0번째 인덱스에 100 추가(한칸씩 밀린다)
lis.remove(100) #입력값을 하나 제거(맨 앞부터, 한칸씩 밀림)
lis.pop() # 맨 뒤의 값 제거, 반환(중요) !!!!
lis.sort() # 정렬
lis.reverse() #역순
lis[0]=-1 # 0 인덱스에 -1 대입
lis.copy()#리스트를 카피함
                        #(단, 다차원 형태면 주소가 복사됨(주의))
lis.clear()#리스트를 비움

#리스트 컴프리헨션
mylis=[[0,1],[2,3],[4,5]]
newlis=[i+i for i in mylis if i[0]<4] 
        # [[0, 1, 0, 1], [2, 3, 2, 3]]

#다차원 리스트
lis=[[0,1],[2,3]]#[
                                        [0,1],
                                        [2,3]
                                    ]
lis[0][0] # 0
lis[0][0:1] # [0]
lis[0:1] # [[0,1]]
  • 리스트, 튜플, 맵 모두 인덱스에 해당하는 원소가 없으면 에러발생

파이썬 튜플

#튜플 생성(리스트와 비슷함)
tup=() # 빈 리스
tup=tuple() # 빈 리스트
tup=(0, 1, 2)# [0~9] 까지의 리스트
tup=tuple(list())
tup=((0,1),(2,3))

#튜플 다루기
len(tup) #튜플의 길이
tup[0] #0 번째 요소
tup[0:1:1]#[0,1) 1간격으로 뽑은 튜플 

#튜플 비교(자료형이 같다면 같은것은 같게 취급)
tupa=(0,1)
tupb=(0,1)
lisa=[0,1]
tupa==tupb # True
tupa==lisa # False

#그외 메서드
#count(찾을값), index(찾을값) 찾을값 in (튜플)

파이썬 딕셔너리

#딕셔너리 생성
dic = {}
dic = dict()
dic = {"0": 1, "1": 2,"2":3} #문자열을 인덱스로 줄수 있다. 

#딕셔너리 다루기
dic["0"] # "0" 인덱스의 값 1
dic.get("0", 0) # 위와 동일, 디폴트 값을 줄 수 있다
dic["0"]= 0 # "0" 인덱스에 0 대입(없으면 추가)
dic.pop("0", 0) # 키 값을 반환하고 딕셔너리에서 없앤다.
        #(두번째 인자는 디폴트값)
del dic["1"] #"1" 인덱스 값을 제거
dic.items() #딕셔너리의 키 값 쌍을 모두 가져옴 [(키,값)]
dic.copy()#리스트를 카피함
                        #(단, 다차원 형태면 주소가 복사됨(주의))
dic.clear()#딕셔너리를 비움

#딕셔너리 반복
for key, value in dic.items():
    print("{}:{}".format(key,value))

파이썬 셋

#셋 생성
myset={1,2,3,1} #{1,2,3}

#셋 다루기
len(myset)
1 in myset # True

#셋 집합 연산(&,|,^}
{1,2,3} & {2,3,4} #{2,3}

파이썬 심화


파이썬 메서드

#기본적인 사용
def func(input1=1, input2=2):
    result= input1+input2 #result는 밖의 값
    return result #값을 반환
func(input1=10)

#위치인수
def func(*inputList):
    print(inputList)
func(1,2,3,4,5)

#키워드인수
def func(**inputDic):    
    print(list(inputDic.items()))
func(a=1,b=2)  

#클로저(범위)
x = 10    # 전역 변수
def foo():
    x=11
    print(x) # 11
foo()
print(x) # 10  (내부에서 대입하면 내부에 지역변수가 생긴다)
        (외부에는 영향을 못끼친다)
  • 입력값에 디폴트 값을 줄 수 있다(예: input1 = 1 )
  • 값 입력시 넣을 곳 이름을 지정 가능
  • 위치인수(), 키워드(*) 매개변수는 디폴트 불가
  • 재귀호출 역시 가능하다(다만 코테 이외에는 추천하지 않는다)
  • 클로저 밖의 값을 쓸려면, nonlocal, global 을 써야한다.

파이썬 람다

def func(x):
    if x%2==0:
        return str(x)
    else:
        return x

#위 코드와 같은 기능을 하는 함다
func=(lambda x: str(x) if x % 2 == 0 else x)
func(2)

파이썬 클래스

#파이썬 클래스
class Lineage:
    def __init__(self):
        print("안녕하세요")
        
#상속 오버라이드
class MidClass(Lineage): #다중 상속 가능
    __rank="[브론즈]" #클래스 변수 (__를 붙이면 private)
    
    def __init__(self, user): #클래스 초기화 함수를 오버라이드
        super().__init__() #부모를 명시적으로 불러야 함
        self.user=user # 인스턴스 속성
        print("활용을 시작해 볼까요", MidClass.rank, self.user)
    
    def func(self): #self를 붙여야 인스턴스 함수가 됨
        MidClass.rank,
        print()
        
    @classmethod #클래스 메서드 생성
    def classFunc(cls): #self가 없음. cls가 있음
        print(cls.rank)
        
MidClass("가나다")
MidClass.classFunc()

파이썬 예외


try: #실행할 코드
    print("실행중")
        #raise Exception(에러메시지) #에러 발생사카
except Exception as e: #예외 발생시 코드
        print("에러 발생")
else: # 예외 발생 안할때 코드
    print("에러 비발생")
finally:
    print("반드시 실행")

파이썬 임포트

#방법 1
import sys # sys 패키지를 불러옴
inp = list(map(int,sys.stdin.readline().split()))

#방법 2
from sys import stdin # stdin 만 불러옴
inp = list(map(int,stdin.readline().split())) #sys를 안써도 됨

파이썬 익스포트

#파일 a.py
vari = 10
 
def func():
    print("파일 a의 함")
 
class cl:
    def __init__(self):
        print("파일 a의 클래스")

if __name__ == '__main__':
        func()
        cl()
        print(vari)
#파일 main
import 파일a

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.