본문 바로가기
Language/Python

RND(Right! Now! Develop!) Study - Python Step. 02 자료형_01

by 태하팍 2014. 8. 5.
반응형

RND(Right! Now! Develop!) Study - Step. 02 자료형01


 개요

 학습 구성

 스터디 인원

 학습 시작

 참고 사이트


# 개 요

이번 포스팅에서는 파이썬의 자료형에 대해서 알아보도록 하겠습니다.

점프 투 파이썬 위키 사이트 링크 : https://wikidocs.net/1



# 학습 구성

자료형과 제어문 파이썬의 자료형(숫자형, 문자열, 리스트, 딕셔너리등)

이번 학습은 숫자형, 문자열에 대해서 알아보도록 하겠습니다.

# 스터디 인원
    - anycoding(손현태)

# 학습 시작



- 환경 : Python3


- 자료형
  어느 언어에서나 자료형이 있다. 여기에서는 숫자, 문자열, 리스트, 터플, 딕셔너리을 배울 것 이다. 터플? 딕셔너리? 어떤 것일까? 
  궁금하면 빨로우미~ㅋㅋ
 
1) 숫자형
    처음 프로그래밍을 배우시는 분이 아니라면 숫자형에 대해서는 익히 알 것이다.
    조금 다른 점이 있다면 복소수..(http://ko.wikipedia.org/wiki/%EB%B3%B5%EC%86%8C%EC%88%98)
    아래의 항목을 보도록 하자.

항목

사용 예

정수

123, -345, 0

실수

123.45, -1234.5, 3.4e10

복소수

1 + 2j, -3j

8진수

0o34, 0o25

16진수

0x2A, 0xFF


- 소수점 표현(아래의 예에서 4.23E10은 4.23 곱하기 10의 10승, 4.23e-10은 4.23 곱하기 10의 마이너스 10승을 의미한다.)
>>> a = 1.2
>>> a = -2.32
>>> a = 4.23E10
>>> a = 4.23e-10

8진수의 표현은 숫자가 0o 또는 0O(숫자 0 + 알파벳 o 또는 대문자 O)으로 시작하면 된다.
ex) 
>>> a = 0o12
>>> print(a)
10
16진수의 표현은 숫자가 0x로 시작하면 된다.
ex)
>>> a = 0xB
>>> print(a)
11
>>> 

- 연산
>>> a = 3
>>> b = 4
>>> a / b    # 2.7버전에서는 값이 0이 나온다고 함. a / (b*1.0) 이 처럼 b를 실수로 강제 형변환 해줘야 함.
0.75

** 는 a의 b승이라는 뜻. 즉, 3의 4승 => 3 * 3 * 3 * 3
>>> a ** b
81

2) 문자열
 파이썬에서는 문자열을 만들어주는 방법이 4가지가 있다.   
   [1] 쌍따옴표(")로 묶어주면 된다. 
   "ace-T is very handsome guy! yeh~~"
 
  [2] 홋따옴표(')로 묶어주면 된다.
  'ace-T is very handsome guy! yeh~~'

  [3] 그런데... 'acet's is very good man' 이라는 문자열이 있을 때는???
>>> 'acet's is very good man'
SyntaxError: invalid syntax
요럴때는 ' 를 역슬래쉬+' 를 해주거나~~"acet's is very good man"로 묶어주면 된다.
>>> 'acet\'s is very good man'
"acet's is very good man"

>>> "acet's is very good man"
"acet's is very good man"

[4] 문자열이 여러 줄 일 경우! => """ 또는 ''' 로 묶어준다. 
Life is too short You need python Python is powerful language

예1) 쌍따옴표 3개!!
>>> """
Life is too short  
You need python  
Python is powerful language
"""
'\nLife is too short  \nYou need python  \nPython is powerful language\n'

예2) 홋따옴표 3개!!
>>> '''
Life is too short  
You need python  
Python is powerful language
'''
'\nLife is too short  \nYou need python  \nPython is powerful language\n'

[참고] 이스케이프 코드 

코드

설명

\n

개행 (줄바꿈)

\v

수직 탭

\t

수평 탭

\r

캐리지 리턴

\f

폼 피드

\a

벨 소리

\b

백 스페이스

\000

널문자

\\

문자 "

\

"

\'

단일 인용부호(

'

)

\"

이중 인용부호(

"

)


ㅇ 문자열 연산

파이썬은 문자열을 더하고 곱 할 수있다. 헐~

예를 들어보면!

>>> a = "python"

>>> b = "is"

>>> c = "goood~~"

>>> print(a+b+c)

pythonisgoood~~


>>> print(a * 2)

pythonpython


>>> print("=" * 20)

====================


으으~너무 더워서 포스팅이 어렵네요 ㅠ.ㅠ 자야겠네용! 포스팅은 이어집니다..ㅎㅎㅎ

역시나 오늘도 덥군요 ㅋㅋ;


오늘은 인덱싱과 슬라이싱을 배우도록 하겠습니다.

인덱싱(indexing)이란 무엇인가를 ‘가리킨다’는 의미이고, 슬라이싱(slicing)은 무엇인가를 ‘잘라낸다’라는 의미

위의 아래의 예제를 살펴보도록 합니다. 인덱싱과 슬라이싱이 어떻게 적용이 되는지 알아보겠습니다~

>>> a = "Life is too short, You need Python"

a라는 변수에 문자열을 넣어둡니다. 워워~넣어둬~넣어둬~

그런뒤에 아래처럼 a[]로 가져와보겠습니다.

>>> a[4]

' '

>>> a[5]

'i'

>>> a[1]

'i'

>>> a[0]

'L'

>>> a[11]

' '

>>> a[12]

's'

>>> a[13]

'h'

>>> a[20]

'o'

>>> a[21]

'u'


와우! 문자열이 알고봤더니..배열형태로 들어갑니다. 배열은 0부터 시작하죵~ 그래서 a[0] 일 경우에 L이 나오게 되는거죠! ㅎㅎ


문자열 : Life is too short, You need Python

 L

 i

f 

e 

 

i 

s 

 

t 

o 

o 

 

s 

h 

o 

r 

t 

, 

 

Y 

o 

u 

 

n 

e 

e 

d 

 

P 

y 

t 

h 

o 

 0

4 

5 

10 

11 

12 

13

14 

15 

16 

17 

18 

19 

20 

21 

22

23

24

25 

26 

27 

28 

29 

30 

31 

32 

33 

                             

 ...

 -4 -3 -2 -1



참고사항으로 마이너스(-) 형태로 사용하면 거꾸로 시작이 되어집니다.

예를들어서 a 변수에 문자열 a = "Life is too short, You need Python" <------- 방향 마이너스 일 경우

>>> a[-1]

'n'

>>> a[-2]

'o'

>>> a[-0]   // -0은 그냥 0이군요! ㅎㅎ 

'L'


그리고 위에서 배운 문자열은 연산을 한다고 하였습니다. 한번 적용을 해보면

>>> b = a[0] + a[1] + a[2] + a[3]

>>> b

결과는?? 'Life' 가 나오게 됩니다. ㅎㅎㅎ


자~! 여기에서 파이썬은 획기적인 슬라이싱 기법을 제공 합니다!

이런식으로 말이죠! ㅎㅎ 

>>> a[0:4]

'Life'


그런데 0~4이면 공백도 가져와야하는데 가져오질 않았습니다.

그렇습니다!

0:4의 의미는 0 <= a < 4 범위에서 가져오는 것입니다.


그리고 아래처럼 다양하게 슬라이싱할 수 있습니다.^-^

>>> a[5:9]

'is t'

>>> a[:10]

'Life is to'

>>> a[10:]

'o short, You need Python'

>>> a[:]

'Life is too short, You need Python'


또 다른 예제! 참고하세요^-^

>>> a = "20010331Rainy" >>> date = a[:8] >>> weather = a[8:] >>> date '20010331' >>> weather 'Rainy'


o 문자열 포맷팅

마치 C언어에서의 %d %s 등의 쓰임새와 비슷하다.

- 숫자는 %d 로~

>>> print("I eat %d apples." %7)

I eat 7 apples.

- 문자열은 %s로~

>>> print("%s is very good man!" % "acet")

acet is very good man!


>>> print("%c %s %d is good!" %('d',"daum",777))

d daum 777 is good!

코드설명
%s문자열 (String)
%c문자 한개(character)
%d정수 (Integer)
%f부동소수 (floating-point)
%o8진수
%x16진수
%%Literal % (문자 % 자체)


o 포맷 코드의 또다른 기능!

>>> print("%10s" % "hi")

 0   1   2  3  4    5    6   7   8    9

 

 

 

 

 

 

 

 

 h

i 

"%10s"는 길이가 10개인 문자열 공간에서 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미이다. 그렇다면 반대쪽인 왼쪽 정렬은 "%-10s"가 될 것이다.


>>> print("%0.4f" % 3.42134234)

3.4213


o 소문자를 대문자로 만들기

 - upper()를 사용하면 된다.

>>> a = "hello Python"

>>> a.upper()

'HELLO PYTHON'

  대문자를 소문자로 만들기는?? lower()를 사용하면 된다. 역시나..ㅋㅋ 

>>> a.lower()

'hello python'


o 대문자와 소문자 서로 바꾸기(swapcase())

>>> a = "Hi Man!"

>>> a.swapcase()

'hI mAN!'


o 문자 갯수 세기(count())

>>> a = "hello Python"

>>> a.count('l')

2


 o 위치 알려주기

l이 두개이지만 처음에 것만 알려준다. 배열과 같으므로 hel 즉, 012 2가 리턴된다.

>>> a = "hello Python"

>>> a.find('l')

2

>>> a.index('l')

2


find()와 index()의 차이점은 

      없는 문자열을 찾을때 오류가 나느냐 안나느냐 이다! 

      [1] >>> a.find('a')

-1


[2] >>> a.index('a')

Traceback (most recent call last):

  File "<pyshell#138>", line 1, in <module>

    a.index('a')

ValueError: substring not found


o 문자열 삽입 기능 join()

>>> a=","

>>> a.join('abcd')

'a,b,c,d'


>>> b="abc d aldag  dag"

>>> a.join(b)

'a,b,c, ,d, ,a,l,d,a,g, , ,d,a,g'


o 왼쪽 공백 없애기(lstrip())

>>> a=" hi"

>>> a

' hi'

      >>> a.lstrip()

'hi'


o 오른쪽 공백 없애기(rstrip())

>>> a="hi "

>>> a

'hi '

>>> a.rstrip()

'hi'


o 양쪽 공백 없애기(strip())

>>> a ="   hi     "

>>> a

'   hi     '

>>> a.strip()

'hi'


o 문자열 바꾸기(replace())

>>> a = "hello python"

>>> a.replace("hello", "nice to meet")

'nice to meet python'


o 문자열 나누기(split())

>>> a = "hello python"

>>> a.split()  // 공백으로 분리가 된다.

['hello', 'python']


>>> a ="a:b:c:d" // : 으로 구분되어 분리가 된다.

>>> a.split(':')

['a', 'b', 'c', 'd']





# 참고사이트

  anyjava님 : http://blog.anyjava.net/114


2014/08/04 - [Language/Python] - RND(Right! Now! Develop!) Study - Python Step. 01 셋팅 및 기초문법


             - END -



반응형