Python 기초 1 - 기본 데이터 타입

2020. 1. 22. 01:51DEV/Python

반응형

Python

특징

  • 사용하기 쉽게 직관적으로 되어 있다
  • 범용적으로 사용 가능 : Django, Pandas, etc
  • 다른 언어로 만든 프로그램을 파이썬 프로그램에 포함 가능
    • 매우 복잡하고 반복 연산이 많은 프로그램은 파이썬과 어울리지 않는다.
    • 전반적인 뼈대는 파이썬으로 만들고, 빠른 실행 속도가 필요한 부분은 C로 만들어서 파이썬 프로그램 안에 포함시시킬 수 있다.
    • 사실 파이썬 라이브러리 중에는 C로 만든 것도 많다. C로 만든 것은 대부분 속도가 빠르다.

파이썬으로 할 수 있는 일

  • 시스템 유틸리티 : 파이썬은 운영체제(윈도우, 리눅스 등)의 시스템 명령어를 사용할 수 있는 각종 도구를 갖추고 있다.
  • GUI(Graphic User Interface) 프로그래밍
    • 화면에 또 다른 윈도우 창을 만들고 그 창에 프로그램을 동작시킬 수 있는 메뉴나 버튼, 그림 등을 추가하는 것
    • 그 예로 파이썬과 함께 설치되는 Tkinter(티케이인터)가 있다
  • C/C++와의 결합 : C나 C++로 만든 프로그램을 파이썬에서 사용할 수 있으며, 파이썬으로 만든 프로그램 역시 C나 C++에서 사용할 수 있다.
  • 웹 프로그래밍
  • 수치 연산 프로그래밍 : 파이썬이 수치 연산에 적합한 것은 아니지만, C로 제작된 NumPy라는 수치 연산 모듈로 빠르게 연산 처리 가능
  • 데이터베이스 프로그래밍
    • 사이베이스(Sybase), 인포믹스(Infomix), 오라클(Oracle), 마이에스큐엘(MySQL), 포스트그레스큐엘(PostgreSQL) 등의 데이터베이스에 접근하기 위한 도구를 제공
    • 피클(pickle)이라는 모듈 : 파이썬에서 사용하는 자료를 변형 없이 그대로 파일에 저장하고 불러오는 일을 담당
  • 데이터 분석 : 파이썬으로 만든 판다스(Pandas) 모듈을 사용하면 더 쉽고 효과적으로 데이터 분석 가능. 데이터 분석에 특화된 ‘R’이라는 언어를 많이 사용하고 있지만, 판다스가 등장한 이후로 파이썬을 사용하는 경우가 점점 증가
  • 사물 인터넷 : 라즈베리파이(Raspberry Pi)는 리눅스 기반의 아주 작은 컴퓨터를 제어하는 도구로 사용

파이썬으로 할 수 없는 일

  • 시스템과 밀접한 프로그래밍 영역 : 대단히 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램
  • 모바일 프로그래밍

변수(Variable)

- 데이터를 저장하는 공간, 변수
- 저장 공간(memory)에 값을 생성하고 이름(name)을 지정하여 값을 기억하는 역할
- =(대입 연산자)를 이용하여 '이름=값' 형식으로 설정
- 선언과 동시에 값을 초기화해주어야 함

변수명 이름 규칙(Variable Namimg)

  1. 소문자로 시작 (변수 - 소문자, 함수 - 대문자, ...), 숫자로 시작 불가
  2. 숫자, _(under bar) 사용 가능
  3. 공백 사용 불가
  4. 변수의 의미를 담아 작성하는 것이 추후 관리에 용이

예약어(Reserved Keywords)

- 미리 선점하여 사용 중인 키워드
- 변수, 함수, 클래드 등의 사용자 정의 이름으로 사용 불가

기본 데이터 타입

  • 정수(int)
  • 실수(float)
  • 문자(string)
  • 불리언(boolean)

type 함수

해당 변수, 값의 타입(type)을 알고자 할 때 사용

>>> a = 1
>>> type(a)
int

None

- 아무런 값을 갖지 않을 때 사용
- 초기값을 갖지 않는 변수를 생성할 때 사용
- Null, nill 등과 같은 의미

>>> a = None

비교 연산자(Comparison Operator)

비교 결과는 Boolean 값

  • <, > : 작다, 크다
  • <=, >= : 작거나 같다, 크거나 같다
  • == : 같다
  • != : 같지 않다
>>> 3 + 4 == 7  # >> True
>>> 3 + 4 != 7  # >> False
>>> 2 + 4 > 5   # >> False
>>> 5 < 5       # >> False
>>> 5 >= 5      # >> True
>>> 1 + 2 <= 4  # >> True

숫자형 타입(numbers)

- 정수, 실수로 구성
- 수학의 기본 연산자(가감승제) 사용 가능

>>> 3 + 4   # >> 7  # 더하기
>>> 5 - 3   # >> 2  # 빼기
>>> 4 / 2   # >> 2  # 나누기
>>> 2 * 4   # >> 8  # 곱하기
>>> 3 ** 3  # >> 9  # 거듭제곱
>>> 5 % 2   # >> 1  # 나머지
>>> 5 // 2  # >> 2  # 몫

연산자 우선 순위

- 기본적인 수학의 연산자 우선 순위와 동일
- 강제로 연산을 선수하기 위해서 () 사용

>>> a = 5
>>> b = 4
>>> a + b * 4   # >> 21
>>> (a + b) * 4 # >> 36

식 평가 & 대입 (Expression evaluation & assignment)

=을 사용하여 변수에 대입이 발생한 경우만 변수의 값이 바뀐다

>>> a = 9
>>> print(a)     # >> 9
>>> print(a - 3) # >> 6
>>> print(a)     # >> 9

>>> a -= 3
>>> print(a)  # >> 6
>>> a **= 2   # >> 36

문자(String)

  • ""(큰 따옴표) 또는 ''(작은 따옴표)로 문자를 감싸서 사용 : 한 줄 문자열
  • """""", '''''' 사용 : 여러 줄 문자열
>>> "Hello, World"       # >> Hello, World
>>> "Hello" == 'Hello'   # >> True

>>> a = """Hello
>>> World"
>>> b = '''Hello
>>> World'''
>>> print(a) || print(b)
Hello
World

문자열 내 작은 따옴표 처리

  1. 큰 따옴표 사용
>>> "Kim's name"   # >> Kim's name
  1. \ 사용
>>> 'Kim\'s name'  # >> Kim's name

이스케이프 문자(Escape String)

- 일부 문자의 의미를 달리하여 특정한 효과를 주는 것
- \n : new line, \t : tab

>>> print('Hello world\n\n')
>>> print('End\t String')
Hello World


End    String    

문자열 연산

문자열 더해서 연결하기(Concatenation)

>>> head = "Python"
>>> tail = " is fun!"
>>> print(head + tail)
Python is fun!

문자열 곱하기

문자열의 반복을 뜻하는 의미로 사용

>>> a = "python"
>>> a * 2
>>> print(a)
pythonpython

>>> print("=" * 50)
>>> print("My Program")
>>> print("=" * 50)
==================================================
My Program
==================================================

문자열 포맷팅(Formatting)

문자열 안에 어떤 값을 삽입하기

  • %s : 문자열(String)
  • %c : 문자 1개(character)
  • %d : 정수(Integer)
  • %f : 부동소수(floating-point)
  • %o : 8진수
  • %x : 16진수
  • %% : Literal % (문자 % 자체)
>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'

# 포매팅 연산자와 %를 함께 사용할 경우 %%로 입력해야 함
>>> "Error is %d%%." % 98
'Error is 98%.'

# %10s : 길이가 10인 빈 문자열을 넣고 왼쪽 정렬
>>> "%10s" % "hi"
'        hi'

# %-10s : 길이가 10인 빈 문자열을 넣고 오른쪽 정렬
>>> "%-10sjane." % 'hi'
'hi        jane.'

# 길이가 10인 빈 문자열을 넣고 오른쪽 정렬로 소수점 4자리까지 출력
>>> "%10.4f" % 3.42134234
'    3.4213'

f 포맷팅

>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age+1}입니다.'
'나의 이름은 홍길동입니다. 나이는 31입니다.'

# 정렬
>>> f'{"hi":<10}'  # 왼쪽 정렬
'hi        '
>>> f'{"hi":>10}'  # 오른쪽 정렬
'        hi'
>>> f'{"hi":^10}'  # 가운데 정렬
'    hi    '

문자열 길이 구하기

len(string)으로 문자열의 길이 구하기

>>> a = "Life is too short"
>>> len(a) # >> 17

문자열 인덱스 및 추출 (Indexing & Slicing String)

문자열의 각 문자는 첫 번째 문자부터 마지막 문자까지 순서(index)를 갖고 있음

index

  • [ ]를 사용해서 하나의 문자 추출
  • 0부터 시작
  • 음수 인덱스 (-n) : 뒤에서부터 n번째 인덱스 위치 값 지정
  • 인덱스의 범위
    : 구간 설정으로 제어
    : 유효 범위 > [0, 문자열 길이] or [-문자열 길이, -1]
    : 유효 범위를 벗어나면 index out of range 오류 발생

slicing

  • [n:m]를 사용해서 부분 문자열 추출
  • n과 m 인덱스 사이의 문자열 추출 (m 인덱스 위치 문자는 포함하지 않는다) >> n <= string < m-1 구간의 문자열 반환됨
  • 시작/끝 중 인덱스가 생략되어 있으면 0/마지막까지로 간주
>>> a = "0123456789"
# index
>>> a[1]    # >> 1
>>> a[-4]   # >> 6

# slice
>>> a[6:]   # >> 6789
>>> a[1:3]  # >> 12
>>> a[7:9]  # >> 78
>>> a[-4:]  # >> 6789

문자열 함수

replace

  • 문자열 내의 특정 문자를 치환
  • string.replace(target, new string) 형식으로 적용
>>> a = 'hello world'
>>> a.replace('h', 'j')
jello world

format

  • 문자열 내의 특정한 값을 변수로부터 초기화하여 동적으로 문자열을 생성
  • 'text {}'.format(variable,...) 형식으로 적용
>>> temp = 26.5
>>> prob = 80
>>> a = '오늘 기온은 {}도이고, 비올 확률은 {}%이다.'.format(temp, prob)
>>> print(a)  
오늘 기온은 26.5도이고, 비올 확률은 80%이다.

>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
'I ate 10 apples. so I was sick for 3 days.'

# 왼쪽 정렬
>>> "{0:<10}".format("hi")
'hi        '

split

  • 문자열을 특정한 문자(delimiter)로 구분하여 문자열의 리스트로 치환
  • string.split(delimiter)
    : optional
    : 기본 delemiter는 띄어쓰기
>>> a = 'Hello World! What a nice day'
>>> print(a.split())     # >> [Hello, World!, What, a, nice, day]
>>> print(a.split('!'))  # >> [Hello World, What a nice day]

문자 개수 세기(Count)

>>> a = "hobby"
>>> a.count('b')
2

문자 위치 찾기

- 첫 번째 문자의 위치 반환
- 0부터 시작하는 인덱스 값 반환

find

문자가 없는 경우 -1 반환

>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1

index

문자가 없는 경우 오류 발생

>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found

문자열 삽입(join)

각 글자 사이에 문자 삽입

>>> ",".join('abcd')
'a,b,c,d'

공백 지우기

lstrip

  • 왼쪽 공백 지우기
  • 문자열 중 가장 왼쪽에 있는 한 칸 이상의 연속된 공백들 삭제
>>> a = " hi "
>>> a.lstrip()
'hi '

rstrip

  • 오른쪽 공백 지우기
  • 문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 공백 삭제
>>> a= " hi "
>>> a.rstrip()
' hi'

strip

  • 양쪽 공백 지우기
  • 문자열 양쪽에 있는 한 칸 이상의 연속된 공백 삭제
>>> a = " hi "
>>> a.strip()
'hi'

print 함수

  • 해당 변수의 값을 출력
  • ,를 사용하여 나열하면 여러 변수를 한 줄에 출력
  • 함수 설정
    • sep=" " : 구분자, 각 출력할 변수 사이를 구분하는 역할. 기본 값은 한 칸 띄어쓰기
    • end : 마지막에 출력할 문자열. 기본 값은 \n
>>> print(10, 100)
10 100

>>> print(10, 100, sep="*", end="!")
10*100!

참고

반응형

'DEV > Python' 카테고리의 다른 글

Python 기초 2 - Collection  (0) 2020.01.27