파이썬 기본 인코딩
파이썬은 UTF-8이라는 유니코드 인코딩을 사용한다.
import sys
print(sys.stdin.encoding)
print(sys.stdout.encoding)
을 컴파일 해보면 입출력이 utf-8 인 것을 확인해볼 수 있다.
가상환경
프로젝트마다 다른 버전의 파이썬과 프레임워크 등등을 사용하기 위해 별개의 가상의 환경을 만들고 구성하여 사용한다.
$ python -m venv 가상환경이름
명령어를 사용해 가상환경을 만들 수 있다.
이 명령어를 실행하면 못보던 디렉토리가 생겼을 것이다.
이 가상환경을 실행 시켜보자
MAC : source ./가상환경이름/bin/activate
WINDOW : ./가상환경이름/Scripts/activate.bat
MAC : source ./가상환경이름/bin/deactivate
WINDOW : ./가상환경이름/Scripts/deactivate.bat
activate 와 deactivate로 가상환경을 on/off 할 수 있다.
실행된 가상환경에 simplejson 이라는 패키지를 설치해보자.
json 파일을 쉽게 핸들링 할 수 있는 패키지 이다
https://github.com/simplejson/simplejson
pip 라는 명령어를 사용해서 설치한다.
pip
- search
$ pip search 패키지명
내가 찾는 패키지를 검색한다. 현재는 PyPI 서버의 부하 때문에 이슈가 있어
에서 검색해 볼 수 있다.
- list
$ pip list
내가 pip 를 통해 설치한 패키지들을 확인할 수 있다.
- install
$ pip install 패키지명
패키지를 설치한다. simplejson을 설치하고 pip list로 확인해보자
반대로 uninstall도 있다.
- show
$ pip show 패키지명
해당 패키지에 대한 정보들을 보여준다. 이름 버전, 제작자, 홈페이지, 라이센스 등을 보여준다.
데이터 타입 종류
- Boolean
- Numbers
- String
- Bytes
- (집합 자료형)
- Lists
- Tuples
- Sets
- Dictionaries
v_str1 = "python"
v_bool = True
v_str2 = "hi"
v_float = 174.8
v_int = 65
v_dict = {
"name" : "park",
"age" : 25
}
v_list = [1,2,3]
v_tupple = 3, 5, 7
v_set = {1,2,3}
많은 자료형들을 확인해보기위해 여러 자료형으로 변수를 만들어 보자
이렇게 선언한 변수들의 형태를 type() 메서드를 사용하여 확인할 수 있다.
print(type(v_str1))
print(type(v_bool))
print(type(v_set))
확인해보면 print문을 통해 각 데이터의 타입이 출력된다.
숫자형 및 연산자
-
- : 더하기
-
- : 빼기
-
- : 곱하기
- / : 나누기
- // : 나누기(몫)
- % : 나누기(나머지)
- ** : 지수(제곱
- 단항 연산자
i1 = 23
i2 =23123
big_int1 = 9999999999999999999999999999999
big_int2 = 7777777777777777777777777777777
f1 = 1.234
f2 = .5
f3 = 5.
print( i1 + i2 )
print( big_int1 * big_int2)
print( f1 ** f2 )
print(f2)
결과를 보면 다른 데이터타입을 가진 변수가 자동으로 캐스팅(형변환)되어 연산이 수행된다.
a = 5
b = 4.
print(type(a), type(b))
a 는 int 형 b는 float형으로 변수를 만들고
print로 타입을 확인하면 당연하게도 <class 'int'> <class 'float'> 가 출력된다.
print(type(a+b))
는 어떻게 될까? 9.0 즉 <class 'float'> 이 출력된다. 그런데 여기서 9.0을 그냥 9로 출력하고 싶으면 어떻게 해야할까?
이럴때 강제로 형변환을 위해서 그 자료형의 이름을 사용해주면된다.
print(int(a+b))
print(type(int(a+b)))
출력:
9
<class 'int'>
print(int(b))
print(float(a))
print(complex(3))
print(int(True))
print(int(False))
print(int('3'))
나아가 다양한 형태로의 유연한 형변환이 가능하다
True는 1을 False는 0을
그리고 문자 '3'을 정수로 바꿀 수도 있다.
수치 연산 함수
print(abs(-7)) // 절댓값 반환
n,m = divmod(100,8); // 몫은 n, 나머지는 m에 저장
import math
print(math.ceil(5.1)) // 5.1보다 크면서 가장 가까운 정수를 return
print(math.floor(3.874)) // 3.874 보다 작은 수중에 가장 가까운 정수 return
문자형 관련연산자
- 문자열 생성, 길이
- 이스케이프 문자
- 문자열 연산
- 문자열 형 변환
- 문자열 함수
- 문자열 슬라이싱
str1 = "Hello world"
str2 = 'I love newyork'
str3 = ''
str4 = str()
문자열은 쌍따옴표와 작은 따옴표를 사용한다. 빈 문자열도 선언이 가능하다.
그리고 자료형을 사용해도 선언이 가능하다.
len()
파이썬의 내장함수 len()은 객체의 길이 또는 항목 수를 반환한다.
print(len(str1) , len(str2))
String(문자) 타입은 글자 수를 반환한다.
Escape
escape_test = "\"Hello world\""
print(escape_test)
escape_test2 = "Tab \t Tab \t"
print(escape_test2)
앞서 학습했던 escape 와 동일함.
Raw String
쉽게 말해 있는 그대로 표시해주는 방법이다.
문자열과 바이트열 리터럴 모두 선택적으로 'r'이나 'R' 문자를 붙여서 사용한다. 이는 (역슬래시)를 평범한 문자로 취급한다. 따라서 escape를 특별하게 처리하지 않고 그대로 출력한다.
역슬래시가 사용되는 경로 표시 등에 사용할 수 있다.
raw_str = r'C:\Programs\test'
print(raw_str)
raw_str2 = r'tab \t \'tab\''
print(raw_str2)
출력
C:\Programs\test
tab \t 'tab'
Multiline String
변수에 여러줄을 저장해야할 때 \n(개행) 과같은 escape를 사용하지 않고
multi = \
"""
멀티라인
테스트
여러줄로
"""
print(multi)
(역슬래시)와 """ """ 혹은 ''' ''' 를 사용하여 여러줄을 저장하는 것이다.
문자열 연산
str_o1 = '*'
str_o2 = 'abc'
str_o3 = 'def'
print(str_o1 * 10)
print(str_o2 + str_o3)
print(str_o1 + 3) # ERROR
print('a' in str_o2)
print('a' not in str_o2)
문자열에 숫자를 곱하면 곱한 숫자만큼 반복되는 문자열이 출력된다.
문자열과 문자열을 + 연산으로 합칠 수 있다.
하지만 문자열은 숫자와 + 연산할 수 없다.
in과 not in 연산자를 사용하여 해당 문자열에서 내가 찾는 문자가 있는지 없는지 확인할 수 있다. 반환은 Boolean 형으로 반환한다.
문자열 형 변환
print(str(123))
print(str(12.34))
print(type(str(123)))
print(str(123)+'test')
print문을 사용해서 str(123)을 출력해보자.
우리 눈으로 보기에는 숫자인지 문자인지 구분할 수 없다.
하지만 type을 사용하거나 문자열을 더해보며 숫자가 문자열로 변환된 것을볼 수 있다.
str.islower()
a = 'apistogramma'
b = 'betta'
c = ''
print(a.islower())
print(c.islower())
문자열내의 모든 글자가 소문자이고 적어도 하나의 문자가 존재하면 True를 반환하고 그렇지 않으면 False를 반환한다.
str.endwith()
# str.endswith(접미사)
print(a.endswith('a'))
해당 문자열의 마지막글자가 a가 맞는지 아닌지 맞으면 True 아니면 False를 반환한다.
print(a.endswith(접미사,시작점,끝점))
선택적으로 시작점과 끝점을 지정하여 검사를 수행할 수 있다. 시작점에서 검사를 시작하여 끝점에서 비교를 중단한다. 11글자인 apistogramma 같은 경우에 끝점을 11로 주면 False가 출력된다. 11번째 글자인 a에서 비교를 멈추기 때문.
str.capitalize()
# str.capitalize()
print(a.capitalize())
첫 문자가 대문자이고 나머지는 소문자인 문자열의 복사본을 돌려준다.
str.replace()
# str.replace(old, new, count)
print(b.replace('etta', 'atman'))
old : 대상 문자열, new : 바꿀 문자열
모든 부분 문자열 old가 new로 치환된 문자열의 복사본을 반환한다. 선택적으로 count가 주어지면 앞에서부터 count 갯수만큼만 치환됨
문자열은 immutable 이다.
mutable은 변경 가능한 객체, immutable은 변경 불가능한 객체를 의미한다.
자료형마다 다르지만 Number, String, Tupple 은 immutable 속성을 가진다.
문자열은 인덱싱이 가능하다.
인덱싱이란
a = 'apistogramma'
print(a[0])
변수 a에 저장된 문자열의 각 문자마다 0에서 시작되는 번호가 매겨져있는 것 이라고 보면 된다.
파이썬에서는 0부터 숫자를 세기때문에 print(a[0]) 에선 가장 첫 글자인 a가 출력된다.
여기에서
a[0] = 'A'
를 수행하면 제일 앞글자 'a' 가 'A'로 바뀔까?
정답은 X 이다. TypeError: 'str' object does not support item assignment 이런 에러를 뱉어낼 것이다.
이를통해 변경 불가능함을 알 수 있다.
인덱싱과 함께 봐야할 슬라이싱이라는 것이있다.
인덱싱처럼 단순히 한 문자만 뽑아오는 것이아니라 범위를 지정하여 여러 문자를 선택하는 것
# str[시작점:끝점:단계]
print(a[:]
print(a[0:3])
아무 값도 주지않으면 처음부터 끝까지 출력해주고
범위를 지정하여 사용하면 시작점부터 끝점 바로 직전까지 즉 0,1,2 번째 인덱스의 문자를 반환해준다.
print(a[:3])
print(a[3:])
시작점위치에 아무것도 입력하지 않으면 처음부터 시작하고
마찬가지로 끝점에 아무것도 입력하지 않으면 마지막점까지 반환해준다.
여기서 - 마이너스 를 사용할 수도 있는데.
-1 의경우 문자열의 가장 마지막 문자를 나타낸다 -2는 마지막에서 두번째
그래서
print(a[:-1])
를 출력하면 시작점이 0, 마지막점이 12글자일 경우 11이 되므로 11바로 직전인 10번째 글자까지를 출력해준다.
print(a[-5:-1])
마지막에서 5번째부터 시작하여 마지막까지
추가로
print(a[0:12:1])
슬라이싱의 마지막 옵션으로 있는 단계에서는 몇글자씩 jump하며 추출할 것인지를 선택한다 기본적으로는 1이지만 2로 하면 첫글자와 세번째글자 다섯번째 글자 와 같은 방법으로 뽑아온다.
print(a[::-1])
a[:] 가 처음부터 끝까지 출력이었고, 여기에 단계에 -1을 주자 역순으로 출력한다.
'python' 카테고리의 다른 글
네카라쿠배 프론트엔드 취업완성 스쿨 2기 2차 테스트 4일차 학습 (0) | 2021.06.17 |
---|---|
네카라쿠배 프론트엔드 취업완성 스쿨 2기 2차 테스트 3일차 학습 (0) | 2021.06.16 |
네카라쿠배 프론트엔드 취업완성 스쿨 2기 2차 테스트 2일차 학습 (0) | 2021.06.15 |
파이썬 print와 separator, end , format , escape 한 번에 알아보자 (0) | 2021.06.14 |
[python] sys.stdin 과(vs) sys.stdin.readline() 차이 (0) | 2020.08.14 |
댓글