세리프 따라잡기

파이썬 프로그래밍 기초: 자료형(1) 본문

Python

파이썬 프로그래밍 기초: 자료형(1)

맑은 고딕 2021. 5. 11. 17:31

※ 코드블럭에 프롬프트(>>>)로 시작하는 코드들은 파이썬 셸에서 입력한 것이고, 없다면 에디터 형식으로 입력한 것.

# 둘러보기 [맛보기]

>>> 1+1 #사칙연산
2
>>> 3/2.4
1.25
>>> 3*9
27
>>> a=1 #변수에 숫자 대입하고 계산
>>> b=2
>>> a+b
3
>>> c="pie" #변수에 문자 대입하고 출력
>>> c
'pie'
>>> if b>1: #조건문if
	print("b is greater than 1") # → b가 1보다 크면 " "안의 문구를 출력하라

	
b is greater than 1
>>> for a in [1, 2, 3]: #반복문for
	print(a) #  → [ ] 리스트의 앞에서부터 하나씩 꺼내 a 변수에 대입하고 출력하라

	
1
2
3
>>> i=0 #반복문while
>>> while i<3: # → i값이 3보다 작은 동안 i=i+1을 반복해 출력하라
	i=i+1
	print(i)

	
1
2
3
>>> def add(a,b): #함수 → def는 함수를 만들 때 사용하는 예약어 → add 함수 생성, a,b는 입력값
	return a+b # → a+b는 결과값

>>> add(3,4) # 3,4를 입력했으니 3+4를 수행하고 출력
7

* 파이썬은 대소문자를 구별한다

* 예약어란 프로그래밍 언어에서 이미 문법적인 용도로 사용하고 있는 단어

 

1. 자료형

1 + 1 = ?

1이 숫자형이라면 위의 값은 2가 되지만,

'1' + '1' = ?

1이 문자형이라면 위의 값은 문자 그대로 1과 1을 더했으니 합친 11이 출력될 것이다.

 

즉, 자료형이란 값의 타입을 말하는데: 문자의 값을 숫자로 인식할 지, 문자로 인식할 지를 구분할 수 있게 해준다.

컴퓨터가 인간과 같이 문자/숫자를 바로 알 수 없기 때문에, 프로그램 형식에 따라 알려줘야 한다.

 

자료형에는

자료에 대한 타입 어떤 값을 담는 자료구조
숫자, 문자열, 불(bool, 참/거짓) 변수, 리스트, 튜플, 딕셔너리, 집합

-1. 숫자형

- 정수형(int): 1, 2, -2 …

a=1
print(type(a)) # 다음과 같이 코드를 치면 셸에서 <class 'int'> 라고 표기 된다.

- 실수(float): 1.23, -34.56

[+컴퓨터식 지수 표현 방식: 4.23e10, 4.23e-10 … → 이때 e10은 10의 10승 / e-10은 10의 -10승을 뜻한다.]

a=4.123
print(type(a)) # <class 'float'>

- 8진수: 0o37

- 16진수: 0x7A

 

- 숫자형 활용 연산자

- 사칙연산(+, -, *, /)

- x의 y제곱(**)

>>> x=2
>>> y=4
>>> x**y #제곱은 *을 두 번 사용 → **
16

- 나눗셈 후 나머지 반환(%)

>>> 10%3 # 10을 3으로 나누면 나머지가 1
1
>>> 3%10
3

- 나눗셈 후 몫 반환(//)

>>> 10/3 #기본 사칙연산 나눗셈
3.3333333333333335
>>> 10//3 #몫을 반환 = 몫에 해당되는 정수값만 반환
3

-2. 문자열 자료형

- 문자열 자료형(str) 만드는 4가지 방법

"hello, python" = " 큰따옴표
'python is fun' = ' 작은따옴표
"""life is too short""" = """ 큰따옴표*3
'''you need python''' = ''' 작은따옴표*3

 

- 4가지가 된 이유

1) python's의 '(작은따옴표)를 넣어주기 위해 = 큰 따옴표로 문장을 감싸기 위해

>>> a="python's favorite food is perl"
>>> a
"python's favorite food is perl"

2) "(큰따옴표)를 넣어주기 위해서

>>> a='"python is very EZ." he says'
>>> a
'"python is very EZ." he says'

+) \를 넣는 방법

#작은따옴표
>>> a='python\'s favorite food is perl'
>>> a
"python's favorite food is perl"

#큰따옴표
>>> a="\"python is very EZ.\" he says"
>>> a
'"python is very EZ." he says'

3) 여러 줄인 문자열을 변수에 대입하고 싶을 때 (\n)

ex.

Life is too short

You need python

#이스케이프 코드 사용 \n
a='Life is too short\nYou need python'
print(a)

#출력 결과
#Life is too short
#You need python

→ 단점은 줄 구분이 힘들다.

 

#이스케이프 코드: 프로그래밍을 할 때 사용할 수 있도록 미리 정의해 둔 '문자 조합'. 주로 출력물을 보기 좋게 정렬하는 용도로 사용

코드 설명
\n 문자열 안에서 줄을 바꿀 때 사용
\t 문자열 사이에 탭 간격을 줄 때 사용
\\ 문자 \를 그대로 표현할 때 사용
\' 작은따옴표(')를 그대로 표현할 때 사용
\" 큰따옴표(")를 그대로 표현할 때 사용

4) 큰따옴표*3 or 작은따옴표*3개를 이용해 여러 줄 문자열 변수 대입

#작은따옴표*3
a='''Life is too short
You need python
         이렇게~'''
print(a)

#출력 결과
#Life is too short
#You need python
#        이렇게~
#큰따옴표*3
b="""
Life is too short
You need python
 호 롤 롤 롤 롤
"""
print(b)

#출력 결과
#Life is too short
#You need python
# 호 롤 롤 롤 롤

→ 3)의 줄 구분이 힘들다는 단점을 극복. 입력 그대로 출력이 나온다.

 

- 문자열 연산

파이썬에서는 문자열을 더하거나 곱할 수 있다.

#더하기
a='python is'
b=' fun!!!'
print(a+b) #python is fun!!!
#곱하기
a='python is'
b=' fun!!!'
print(b*5) # b를 5번 출력하라

#fun!!! fun!!! fun!!! fun!!! fun!!!

 

- 문자열 길이 구하기 (len 함수)

>>> a = 'you need python'
>>> len(a)
15 #공백 포함

 

- 인덱싱(indexing): 무엇인가를 '가리킨다'는 의미. 

다른 언어에서는 string에서 인덱싱이 없고 하려면 함수들을 써야하는데, 파이썬은 굉장히 쉽게 접근할 수 있다.

a='way back home'
print(a[4]) #b 출력

긴 문자열이 있으면 각각 숫자로 번호가 매겨진다.

w a y   b a c k   h o m e
0 1 2 3 4 5 6 7 8 9 10 11 12
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

위의 코드에서 4번째를 출력시켰기 때문에, b가 출력된 것.

a='way back home'
print(a[-4]) #h 출력

인덱싱에서 -는 역방향을 뜻하기에 역방향의 4번째인 h가 출력

 

- 슬라이싱(slicing): 무엇인가를 '잘라낸다'는 의미.

ex. 인덱싱에서 home이라는 문자만 뽑아내려면

a='way back home'
print(a[9]+a[10]+a[11]+a[12]) #home

이렇게 해야하는데, 슬라이싱을 이용하면 더 쉽고 간편하고 빠르게 할 수 있다.

a[이상:미만:간격]

ex.
a='12345678' 일때
a[:4] → 0≤a<4 범위 #1234
a[5:] → 5≤a<끝 범위 #678
a[::2] → 처음부터 끝까지 2칸씩 간격으로 #1357
a[::-2] → 처음부터 끝까지 뒤로 2칸 간격으로 #8642

따라서 슬라이싱을 활용해 home을 뽑으면

a='way back home'
print(a[9:]) #home

이렇게 간단하게 뽑을 수 있다.

 

더보기

# 중간 문자열 바꾸기

>>> a='pithon'
>>> a[1]
'i'
>>> a[1]='y' #오류가 뜨는 이유는 문자열의 요솟값은 바꿀 수 있는 값이 아니기 때문이다(=immutable)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> a[:1]+'y'+a[2:] #슬라이싱 기법을 이용해 문자열을 두 부분으로 나누고 중간에 'y' 문자를 추가
'python'
Comments