파이썬 100분의 전사...

SUSU·2023년 8월 19일
0
post-thumbnail

강의 메모, 나중에 정리하기...

변수 규칙
언더바로 시작해도 되는구나..
숫자로 시작할수 없음
카멜형식을 추천

형변환
int('2') -> 정수로 int(float('2.5')) -> 출력하면 2가 정수로 출력됨
float('2') 실수로
str(2) 문자로
bool():값이 있으면 True, 값이 없으면 False
불리언언 값이 있거나 참이면 T, 값이 없거나 거짓이면 False
bool(None) 을 하면 None은 없음을 나타내는 단어이기 때문에 False를 반환함

산술연산자 : 더하기빼기곱하기 등등..
비교연산자 : >,>=,<,<=,== !=
논리연산자 : and or not(반전) -> print(not 3<50) 은 원래 트루인데 false 로 출력됨
멤버연산자 : in , not in -> print('c' in 'cat') 하면 True 로 나옴

파이썬에서 주석처리
기본 # 이고 문단을 주석처리 하고 싶으면 '''여기'''이렇게 감싸면 됨

인덱스
앞에서부터 0으로 시작하는 인덱스
0 1 2 3 4 5
뒤에서 -1로 시작해서 하나씩 작아지는 인덱스를 써도 됨
-21

슬라이싱 내가 원하는 부분을 자름
lang(시작: 끝 인덱스 직전까지)
lang(1:6) 인덱스 1~5
lang(1:) 인덱스1부터 끝까지
lang(:4) 처음부터 인덱스3까지
lang(:) 처음부터 끝까지

줄바꿈 된 문자를 한번에 감싸는 방법 '''이걸로 감싼다'''
문자열.메소드(...)의 형태로 사영

letter = 'how are YOU?'
가 있을대
letter.lower()
upper()
capitalize()
title()
swapcase()
split()
count()
등등
startswith()
endwith()
strip()
replace()
find()
center()

파이썬 내장형이라고 검색해서 공식 문서 들어가면 전부 볼수 있음

문자열 포맷
{ }+ format
print('개발언어에는 {},{} 등이 있어요'.format('파이썬', '자바'))

{N}+ format
print('개발언어에는 {1},{0} 등이 있어요'.format('파이썬', '자바'))
중괄호 안에 숫자로 뒤에 변수들의 순서도 지정 가능한다

f-String 3.6이상에서 가능
python='파이썬'
java='자바'
print(f'개발언어에는 {python},{java} 등이 있어요')

탈출문자
역슬래시()를 치면 된다. 영어론 백슬래시~
줄바꿈으로 \n 이나 파일 경로 지정시에도 주로 사용함

리스트
정수, 실수,불리언, 스트링 아무거나 한개의 리스트에 넣을수 있음
empty_list = [] 이렇게 하면 빈 리스트임

리스트의 순서는 보장된다 -> 인덱스로 관리한다

my_list = ['나나','즈즈','나나']

#리스트 길이
len(my_list) -> 3출력

#리스트 수정
my_list[1] = '즈' -> ['나나','즈','나나']

append(), remove() 등등 많음

튜플
소괄호로 만들어진 자료형,
튜플은 수정이 불가능함(추가, 삭제도 안됨)
읽기전용 리스트임
my_tuple= ('아','나','다') -> 이런작업을 패킹이라고 한다
언패킹도 가능
(wd1,wd2,wd3) = my_tuple
이렇게 하면 my_tuple 에 들어있는 원소 하나씩을 wd1, wd2에 담아준다

언패킹에서 을 사용할수 있다
numbers = (1,2,3,4,5)
(num1,num2,
others) = numbers
이렇게 해주면
num1=1, num2=2 가 들어가고
나머지 3,4,5는 others에 리스트 형태[3,4,5]로 들어가게된다

(sts, others, end) = numbers 이렇게도 가능하다 이러면 변수에 이딴 항목들 넣고 남은것에 넣어줌
(*others, num1,num2 ) = numbers

세트
중괄호로 묶은 복수의 데이터를 담는 객체
중복허용X 순서도X
중복허용은 안해도 일단 값을 넣는건 문법적으로 오류는 안나나?
set= {3,4,4,5,6}

A= {'일식','중식','한식'}
B= {'미식','분식','한식'}

print(A.intersection(B))
하면 두 세트의 교집합인 {'한식'}이출력됨
print(A.union(B))
두 세트의 합집합이 {'일식','중식','미식','분식','한식'}이출력됨
(순서를 보장하지 않으므로 결과는 다를수 있음 )
print(A.difference(B))
두 세트의 차집합이 {'일식','중식'}이출력됨(A-B)를 한것
순서를 보장하지 않으므로 인덱스로 접근하긴 어려우나
그래도 add(),remove(),clear() 의 함수를 사용할수 있다.
clear는 세트의 내부를 비우는것이고
del A 를 하면 세트 자체를 완전 삭제하는것(리스트나 튜플도 동일하다)

세트매소드
copy() 세트 복사
discard 값 삭제하는 매서트이나 삭제대상이 존재하지 않아도 에러가 나지 않음
isdisjoint() 두 세트에 겹치는 값이 없는지 여부
issubset() 다른 세트의 부분집합인지 여부
issuperset() 다른 세트의 상위집합인지 여부
update() 다른 세트의 값들을 더함

딕셔너리
dic = { 'key1':value1 , 22:value2 } 이렇게 씀
문자형은 ''에 넣어서, 키는 중복 불가
숫자나 다른 형태로도 정의할수 있음
print(dic['key1']) 하면 value가 출력됨

밸류에 접근하는 방법은 바로 키 값을 넣어서 불러올수도 있지만
해당 키가 존재하지 않으면 에러를 발생 시키므로
print(dic.get('key3')) 이렇게 하면 존재하지 않는 key 에 대해 None 을 출력함

새로운 데이터 추가하려면
dic['key3'] = '세번째값'

기존 밸류값을 변경하려면
dic['key1'] = '새로운값'

복수 값을 동시에 바꾸려면
dic.update({'key1':33 , 'key2':4444})
이렇게 넣어주면 된다 기존 key의 값들이 변경됨

특정 키:밸류를 삭제하려면
dic.pop('key1')
를 해주면 'key1'이 키값인 항목이 사라짐

딕셔너리 안에 어떤 key들이 들어있는지 확인하려면
keys()를 쓰면 됨
어떤 밸류들이 들어있는지를 보려면
values()를 쓰면됨
키랑 벨류 둘다 출력하고 싶으면
items()를 쓰면됨 ->
print(dic.items)
([('key1','value1'),('key2','value2')])

fromkyes() :제공된 keys를 통해 새로운 딕셔너리 생성 및 반환
popitem() : 마지막으로 추가된 데이터 삭제
setdefalte() : key에 해당하는 vqlue 반환 , key가 없다면 새로 만들고 default value 설정 및 반환

여러값을 순서대로 써야하면
리스트

값이 바뀔일이 없거나 바뀌면 안되는건
튜플

값의 존재여부가 중요하고 중복이 안되는 경우
세트

키를 통해 효율적으로 데이터를 관리하고 싶으면
딕셔너리 (3.7부터 순서보장도 됨)

튜플은 수정 추가 삭제가 안되지만
방법이있다.
리스트로 형변환 해서 append()로 항목을 추가 후 다시 튜플로 형변환 한다

list(자료형) : 리스트로 변환
tuple(자료형): 튜플로 변환
set(자료형): 세트로 변환

if, else
들여쓰기가 중요, if중첩도 가능하니까

for 변수 in 반복범위 또는 대상
for x in range(10)
range(10) 0~9까지

for x range(10)
print(f'팔벌려뛰기 {x}회')

하면
팔벌려뛰기 {0}회
팔벌려뛰기 {1}회
팔벌려뛰기 {2}회
...
일케 쭉쭉됨

range(start,end,step)
step은 숫자들의 간격을 지정가능

ex
for n in range(1,31,10)
print(f'{n}번은 {n}번부터 {n+9}까지 모아줘')

이렇게 하면 총원이 30명인 교실에서 각 1번이 10개씩 모아서 제출함

리스트, 튜플, 딕셔너리를 for문의 출력 대상으로 할수도 있다.
for l in my_list():
for t in my_tuple():
for k in dic.keys():
for k in dic.values():
for k,v in dic.items(): ※items를 출력할때는 변수도 두개를 선언해야 한다.
print(k,v)

문자열도 반복 대상이 될수 있으나 정수형은 반복 대상이 될수 없다.

while 조건

break : 반복문 탈출
continue : 바로 반복문 처음으로 돌아감
for x in range(10):
if x %2==1
continue
print(x)
를 출력하면
0
2
4
6
8
이 출력됨

리스트 컨프리헨션List comprehension (새로운 리스트를간편하게 )
리스트 내에서 어떤 조건에 해당하는 데이터만 뽑아내거나
값을 바꿔서 새로운 리스트를 만들때 사용할 수 있다
엑셀 캡쳐 참고

함수 define
dif my_price():
실행부

전달값 return 값을 여러개 지정 가능
(콤마로 구분하고 튜플값이다)

기본값
def 함수명(전달값=기본값)
수행할 문장

def get_price(ub_vip = False):
if is_vip == True:
return 1000 단골손님
else :
returm 1500 #일반손님

get_price(True) #1500
get_price() #1000

키워드값
파라미터가 여러개인데 특정 파라미터만 값을 지정해서 넘길수 있다.
자세한건 캡쳐 참고

가변인자 : 개수가 바뀔수 있는 인자
전달 앖에 *을 붙여주면 된다(튜플 형식으로 늘어나게 됨)
캡쳐참고
가변인자는 전달값에서 한번만 쓸수있다

지역변수: 함수 내애서 지정된 변수
전역변수 : 어디서나 사용 가능

global 지역변수
이렇게 사용하게 되면 지역변수 내에서 함수값을 변경한게
전역변수에도 영향을 미침.
전역변수가 없으면 함수내에서 전역변수를 지정하겠다는 의미임

input()
name = input('사용자 이름을 입력하세요')
print(name)

이렇게 하면
'사용자 이름을 입력하세요' 출력후 이름을 입력 하게 됨
입력받은 값은 전부 문자형이기 떄문에 정수형으로 사용하고 싶다면
int(input()) 과 같이 사용해야함

open(파일명, 열기모드 , encoding='인코딩')
열기모드 : r(read-읽기), a (append-이어쓰기), w(write-쓰기)

f= open('list.txt','w',encoding='utf8')
#현재 경로에 list.txt라는 파일이 있으면 열어주고
#없으면 만들어서 열어줌
f.write('힘들다 ㅅㅂ..')
f.close()
#파일은 열면 반드시 닫아줘야 한다

f= open('list.txt','r',encoding='utf8')
contents= f.read()
print(contents)
#하면 힘들따 ㅆㅂ 출력됨...ㅋㅋ
f.close() 로 꼭 닫아주기

파일 한줄씩 읽기
f= open('list.txt','r',encoding='utf8')
for line in f:
print(line,end='') #end=''를 안쓰면 불필요한 줄바꿈이 들어간다
f.close()

with open('list.txt','r',encoding='utf8') as f
contents= f.read()
print(contents)

이렇게 쓰면 f.close()필요없음
as f부분의 f는 자유롭게 변경 가능한 부분임

클래스 = 설계도 + 설명서

class BlackBox:
pass # 내부 처리를 일단 미룰수 있다.

b1= BlsckBox()
b1.name = '까망'
print(b1.name) #까망 이라고 출력됨
print(isinstance(b1,BlackBox)) #b1이 BlackBox의 인스턴스가 맞다면 True가 출력됨
자바랑 다르게 new 라고 안하는구나...

init

class BlackBoc:
def __init(self, name, price):
self.name = neme
self.pioce= price #초기화 처리

객체의 초기화에 쓰이고 self변수가 꼭 들어가고
객체가 생성될때 실행됨

여기서 self.name
self.pioce 는 멤버 변수라고 한다★★

class BlackBoc:
def __init(self, name, price):
self.name = neme
self.pioce= price #초기화 처리

def set_travle_mode(self):	
	print('여행모드 ON')
	
b1= BlackBox('까망이',30000)	
b1.set_travle_mode()	
	
	
	

클래스에서 self 변수는 객체 자기자신을 말한다

클래스 메소드를 정의할때 처음 전달값은 반드시 self
메소드 내에서는 self.name과 같은 형대로 멤버 변수를 사용

상속
class TravleBlackBox(BlackBox)
이렇게 쓰면 BlackBox라는 클래스를 상속받는 것임
캡쳐참고

Super
캡쳐참고
일단 부모 클래스의 대부분을 사용하고 내가 커스텀 하고 싶은 부분만변경 가능
오버로드

다중상속
부모가 여럿~
class TravleBlackBox(BlackBox, VideoBox)
콜론으로 구분하여 여러개를 다중상속 할수 있다.

메소드 오버라이드
부모클래스의 메소드랑 같은 이름이지만 새로 메서드를 정의하게됨

pass

예외처리
1시간 37분
try:
print
except:
print(에러 발생시 처리)
else:
print(정상동작)
finaly:
print(무조건 실행)

에러
zeroDivisionError:
TypeError:
Exception as err:
파이썬 예외처리 검색해보기

모듈
inport 모듈 으로 부르거나
from 모듈 inport 변수, 함수 또는 클래스

첫번째 방법은 클래스의 전체를 부를때

패키지

profile
기록용

1개의 댓글

comment-user-thumbnail
2023년 8월 19일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기