[파이썬 기초] 자료형, 연산
자료형 하기에 앞서, [0,5) closed open 0을 포함 5가포함x 즉, 0-4까지
파이썬의 특징 (산술연산)
a = 1//3 / 실수형 나눗셈 // 정수형 나눗셈
2의 3승 Math.pow(2, 3) js python 2**3
'
문자열
string = "a,b,c,d,e" 스트링 바꾸는법 두가지, string.replace('c','z') 대체함수, 슬라이싱
리스트
튜플
튜플 (성능 최적화 값변경 x)
딕셔너리
dictionary
: collection of pairs(쌍)
pair -> <key: item> value
1)hash 2)bst☆☆☆☆ x
dic[(1,2,3)]='abc' 됌*dic의 key값이 변할수 없는 튜플이라서 됨*
dic[[1,2,3]]='aaa' 안됌*dic의 key값이 변할수 있는 리스트라서 안됨*
TypeError: unhashable type: 'list'
집합
리스트 와 집합의 차이 (중복 허용하냐 중복허용 안하냐 )
[1, 2] and -5 :출력 -5 마지막에 참조한것이 나옴
[1,2] or -5 출력 :[1,2] 앞에가 이미 참이므로 첫번째가 나옴
s1|s2 s1.union(s2) 합집합
s1&s2 s1.intersection(s2) 교집합
s1-s2 s.difference(s2) 차집합
s1^s2 s1.symmetric_difference(s2) 대칭차집합 (교집합 빼고 다)
산술 연산자
+,-,*,/,%
bit operator
a=2, a*8 =16 과 a<<3 의 차이 https://hbsowo58.tistory.com/manage/posts/
logical operator
거짓으로 취급하는 데이터
"" 빈스트링 거짓, [] 빈리스트 () 빈튜플 {}빈딕셔너리 False, None, 0
[1, 2] and -5 =-5 둘다 검사해서 뒤의 -5출력
[1, 2] or -5 = [1, 2] 앞에값이 존재해서 뒤는 확인안해도 됨
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
if a > 10:
print(a)
elif a==10: 파이썬 if else문법
print(b)
else:
print(a)
for i in range(2, 5): 파이썬 반복문 234 출력 2는 닫는 5는 여는이라 5는해당X
print(i)
while a > 5: 파이썬 와일문
def func(a,b): 파이썬 함수 정의부
return a+b
print(print('str')) 파이썬은 함수들도 모두 값을 갖는다 (여기서 print함수는 none값) 이런것이 영향을 미친다
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
언어를 공부할때,
-
자료형
-
연산자(비슷하겠지만 특징존재)
-
제어문, 반복문
-
함수 ( call by ref 냐? call by value 냐?, call by obj ref)
*first class function인가 아닌가?*
- class를 지원하는가 안하는가? - 정보은닉, 상속(가상함수 지원하냐 안하냐)
ㅡ>프로그램 만들어보기
js는 기본자료형은 call by value (프리머티브) 스트링 , 정수
오브젝트는 call by ref
python은 call by obj ref
조건문)
파이썬문법 js 스코프대신 들여쓰기를 쓴다
반복문 문법
for i in range(2, 5): print(i)
함수
def func(a,b): return a+b
expression 식 statement() 문 (명령문장) 의 차이
expression: "뭔가를 반환할 수 있다면 식이다"
"abc" : 단항식 unary expression
1 : 단항식
true
파이썬에선 함수도 식이다 (왜냐하면 아무거라도 반환하기 떄문이다 ex print->none 리턴이 없는 함수도 none)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
stdin(standard input) -> keyboard fd0
stdout(standard output) -> monitor fd1
stderr(standard err) -> monitor fd2
"input으로 받은 값은 무조건 문자열이다 -언어 공통"
브라우저도 윈도우의 exe 실행파일이고, py도 실행파일 (자바스크립트는 크롬에서 돈다)
-함수의 시작은 소문자 시작 , 클래스는 대문자 시작 -약속-
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
가위바위보 예제
포문으로 3번돌려서 , playone을 돌려서 list꺼를 어펜드해서 , 플레이어가 2개 이상이면
플레이어 윈
ㅡㅡㅡ수학부분 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
프로그래머라면 해야될 수학(이산수학(집합)선형대수) +@
대칭차집합(교집합 빼고 ^)
ㅡㅡㅡㅡㅡ자료구조 부분 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
버블소트
ㅡㅡㅡㅡㅡㅡ문자열 포맷팅 3가지ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
print("%d %s" %(a,b)) #파이썬 2버전대
print('숫자는{} 문자열은 {}'.format(a, b)) 3.0이상 3.5미만
print(f'숫자는{a} 문자열은 {b}') 3.5이상
print(f'3자리수만 보여줘:{a:.3}') 소수 아래 세가지 (문자열 포매팅) 의 예
유니 코드 인코딩을 하는 함수
bstr=string.encode('utf-8')
파이썬 2 vs 3의 가장 큰차이 UNICODE 지원하냐 안하냐
가장 큰차이 '문자열'
블라블라.decode('utf-8') 앞으로 많이 보게 될 에러
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
코덱이 어쩌구
try:
data=text.decode('utf-8')
except UnicodeDecodeError:
try:
data=text.decode('cp949')
except UnicodeDecodeError
data=text.decode('utf-16')
utf-32까지 시도해보기
UTF-8 구조
-
0800 - FFFF ==> 1110XXXX 10XXXXXX 10XXXXXX
-
'가'의 유니코드 ==> U+AC00 ==> 1010 1100 0000 0000 ==> 1010 110000 000000
-
11101010 10110000 10000000
-
0xEAB080
-
즉, 3 바이트로 인코딩