(1주차) 3월7일
아나콘다 및 파이썬 설치, int, float, bool, str 자료형
-
(1/8) 아나콘다 설치, 가상환경 생성
-
(2/8) 주피터랩 설치 및 실행 (1)
-
(3/8) 주피터랩 설치 및 실행 (2)
-
(4/8) 0차원자료형: int, float, bool, 명시적형변환
-
(5/8) 0차원자료형: 암묵적형변환
-
(6/8) string (1)
-
(7/8) string (2)
-
(8/8) 숙제설명, 코랩설명
-
appendix: 윈도우에 영어계정만들기
-
종이책
- 효율적 개발로 이끄는 파이썬 실천 기술
- Learning python: powerful object-oriented programming
- 전문가를 위한 파이썬 : 파이썬3 버전 기준 | 간단하고, 명료하고, 효율적인 파이썬 프로그래밍
-
interactive notebook이 아니다.
a=3
a
b=3
b
a+b
-
주피터랩: 주피터노트북의 확장버전
- 저는 주피터랩을 더 선호합니다.
- 그런데 주피터노트북을 쓸 경우도 있음.
-
마크다운모드(글쓰기모드), 코드모드(프로그래밍모드)
-
파이썬의 기본자료형은 int, float, bool, str, list, tuple, dict, set 등이 있다.
- 0차원 자료형: int, float, bool
- 1차원 자료형: str, list, tuple, dict, set
-
int형
a=100
type(a)
-
float형
a=1.2*3
a
type(a)
a?
-
bool형
a=True ## 숫자1으로 생각할 수 있음
b=False ## 숫자0으로 생각할 수 있음
type(a)
type(b)
a?
b?
-
bool형의 연산
a=True ## 1
b=False ## 0
a+b
a*b
-
complex형
a=1+2j
b=2-2j
type(a)
type(b)
a?
b?
c=a+b
c
-
형태변환: float $\to$ int
(예시1)
a=3.0
type(a)
a=int(a)
type(a)
(예시2) 이경우는 정보의 손실이 발생
a=3.14
int(a)
-
형태변환: int $\to$ float
a=3
type(a)
a=float(a)
type(a)
-
형태변환: bool $\to$ int/float, int/float $\to$ bool
(예시1)
a=True
type(a)
int(a)
float(a)
(예시2)
a=1
bool(a)
a=0
bool(a)
(예시3)
a=1.0
bool(a)
a=0.0
bool(a)
-
이상한 형태변환도 가능하다. (이런것도 바꿔주나 싶은것도 바꿔줌)
bool(-3.14)
- 저는 이런 코드를 의도적으로 사용하지 않아요..
int(3.14)
-
형태변환이 항상가능한것도 아님
float(3+0j) # 사실상 3+0j=3 이므로 float으로 형변환하면 3.0이 되어야 할 것 같은데 변환불가능하다.
-
암묵적형변환 (implicit)
(예비학습) implicit의 의미
- 추운날씨 -> 보일러좀 틀자! (explicit) / 오늘 날씨 좀 추운 것 같지 않아? (implicit)
- 짜장면 먹을래? -> 싫어! (explicit) / 난 어제 짜장면 먹었는데.. (implicit)
(예제)
True * 1 # 1을 곱할건데 너 계속 True로 있을꺼야?
1 * 1.0 # 1.0을 곱할건데 너 계속 int로 있을꺼야?
True+True # +연산을 할건데 계속 True로 있을꺼야?
-
선언
a='guebin'
a
-
더하기(+)연산
a='X'
b='2'
c=a+b
c
-
빼기(-)연산
a='X2'
b='2'
a-b
- 이런건 없다.
-
곱하기(*)연산
a='X'
a+a+a
a*3 # a*3 = a+a+a = 'X'+'X+'X'
아래도 가능하다.
3*a
그리고 아래도 가능하다.
a='X'
b=3
a*b
대신에 의미상 맞지 않는 것은 수행되지 않고 에러가 난다.
a='X'
b='Y'
a+b
a*b
-
나눗셈(/)연산
a='XX'
a/2
- 이런건 없다..
-
str은 하나의 벡터 문자가 여러개 있는 형태라고 생각하면 된다.
a='guebin'
a
- 6개의 칸에 글씨가 하나씩 들어가 있음.
-
대괄호 []
안에 숫자를 넣는 방식으로 벡터의 원소를 호출할 수 있다. (주의: 인덱스가 0부터 시작함)
a[0] #첫번째원소
a[1] #두번째원소
마지막원소는 -1로 호출할 수도 있다.
a[-1]
마지막에서 2번째 원소는 -2로 호출가능하다.
a[-2]
-
요약하면 아래와 같은 방식으로 호출가능함.
g | u | e | b | i | n |
---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 |
0 | -5 | -4 | -3 | -2 | -1 |
a[4]
a[-2]
a[-4]
-
:
을 이용하여 여러개의 원소를 호출할 수 있음.
a='guebin'
a[0:3] # a[0],a[1],a[2],a[3]이 아니라 a[0],a[1],a[2]까지만 뽑힌다. 즉 마지막의 3은 호출되지 않는다.
a[1:3] # a[1], a[2] 만 호출 // start=1, stop=3
index=1부터 시작해서 마지막원소까지 호출하려면?
a[5] # guebin의 마지막원소 'n'이 출려
a[1:5] # 5는 포함되지 않으므로 틀림
a[1:6] # 정답
안 헷갈리는 방법은 없을까?
a[-1]
a[1:-1] # 이것은 결국 (a[1:5]와 같은 것임)
해결책? 생략한다!!
a[1:]
-
생략의 응용1
a='k-pop'
a
a[2:5]
a[2:]
-
생략의 응용2
a='k-pop'
a
a[0:2] # a[0],a[1]
a[:2] # a[0],a[1]
-
생략의 응용3
a='k-pop'
a
a[0:5] # a[0],...,a[4]
a[:]
-
파이썬의 변수는 단순히 정보를 담는 그릇이 아니다. 유용한 기능을 제공하는 경우가 있다.
a='ABCD' # a라는 변수는 'ABCD'라는 정보를 담는 그릇의 역할만 하지 않고, 특화된 어떠한 기능도 제공한다.
a
a.lower() # a.lower()를 쓰면 a의 모든 문자를 소문자로 바꾸는 기능을 제공, lower(a)라고 읽자!
여기에서 lower()는 문자열에 특화된 기능임. 따라서 당연히 아래는 불가능
a=3.14
a.lower() # lower(a)
-
자료형에 특화된 기능(=함수)을 확인하는 방법? a.
+ tab
으로 목록 확인 가능
a='guebin'
a.upper?
a.upper() # upper(a)
a.capitalize() # capitalize(a)
-
문자열에 대한 다른 내용들은 추후에 다루겠음.
-
마음의눈: a.f()
형태를 읽는 팁
-
a.f()
는f(a)
로 생각하면 편리함. -
a.f(2)
는f(a,2)
로 생각하면 편리함. - 이런점에서 R
%>%
연산자와 비슷하다고 생각할 수 있다. (약간 다르긴함)
-
사실 .
은 좀 더 다양한 상황에서 쓰일 수 있다. 변수이름.함수이름()
의 형태가 아니라
패지키이름.함수이름()
-
패키지이름.변수이름
-
패키지이름.패키지이름.함수이름()
- ...
와 같이 다양한 형태가 가능하다. 근본적인 공통점은 .
을 기준으로 상위개념.하위개념
으로 이해하는 것이 좋다.
-
len
함수 소개: 원소의 갯수를 알려주는 함수.
(0차원) len
함수가 동작하지 않음.
a=3.14
len(a)
b=True
len(b)
(1차원) len
함수가 잘 동작함.
a='3.14'
len(a)
b=[1,2,3]
len(b)
본인이름으로 str을 생성 $\to$ LMS에 스크린샷제출
- 성만 출력
- 이름만 출려
(예시)
a='GuebinChoi'
a[:6]
a[6:]