3장. 자료형(Data-Type)

asda주asda·2022년 1월 12일
0

Python

목록 보기
3/31

자료형(Data-Type)

파이썬의 자료형

  • 파이썬의 자료형
    • 파이썬이 처리하는 자료형은 3가지 종류가 있다.

      1. 정수(integer): 1, 4, 8 ,2 ...
      2. 실수(floating-point): 1.1, 2.45, 3.14 ...
      3. 문자열(string): "hi", "hello" ...
    • type함수는 자료형을 알고 싶을 때 사용한다.

      .>>>type("Hello World")
      <class 'str'>
      .>>>type(3.2)
      <class 'float'>
      .>>>type(17)
      <class 'int'>
      // class-> 설계도, 도면, 틀을 말한다.

    • 파이썬의 변수에는 어떤 자료형의 데이터든지 저장이 가능하다. 또한 중간에 다른 자료형의 데이터를 저장이 가능하다.

    • 따라서, 일반적인 경우에 개발자는 데이터의 종류를 신경 쓰지 않아도 된다. 하지만 문자열숫자는 서로 구분하여야 한다.

      • 예를 들어 input()에서는 숫자를 기입하면 그 데이터를 문자열 형태로 저장한다. 이 때 이 데이터를 정수나 실수로 바꿀려면 int()함수, float()함수를 사용해야한다. 반대로 정수나 실수를 문자열로 변환하고자 한다면 str()함수를 사용해야한다.
      • 문자열 "10"과 숫자 10은 CPU에서 다르게 취급된다. 파이썬에서 "10"과 정수 10을 비교한다면 같지 않다고 나온다. 하지만 정수 10과 실수 10.0을 비교하면 같다고 출력한다. 값을 비교할 때는 비교연산자 == 을 사용한다.

        .>>> 10 == "10"
        false
        .>>> 10 == 10.0
        true

문자열(string)

파이썬의 문자열

  • 파이썬의 문자열
    • CPU는 0,1로 연산(가산밖에 못함)을 하므로 숫자가 중요하지만 인간에게는 문자열(string)을 사용하여 정보를 표현하고 저장하므로 문자열의 처리도 매우 중요한 부분이다. 프로그래밍을 할 때 아주 많이 접하는 문제가 문자열을 나누고 합치고 문자열에서 특정한 단어를 검색하는 작업이 있을 것이다.
      • 예) 이메일 주소 “aaa@google.com”에서 ‘@’문자를 중심으로 아이디와 도메인을 분리하는 문제를 생각해보면 프로그래밍 언어에서는 문자열을 처리하는 작업이 꽤 복잡하다.
    • 문자열(string)문자들의 순서있는 집합(sequence of characters)이다. 프로그래머가 아닌 사람들은 이것을 텍스트 데이터라고 부른다. 프로그래머들만 텍스트 데이터를 문자열이라고 부른다. 전문적인 용어를 사용해야만 혼돈이 없기 때문이다. 문자열은 아래 그림처림 일렬로 나열된 문자들이다.
    • 파이썬에서는 큰따옴표(“…”)로 텍스트를 감싸면 문자열이 된다.
    • 문자열은 변수에 저장될 수 있다. 변수에 저장된 문자열을 print()함수를 이용하여 출력한다. 아니면 변수이름만 입력하고 엔터키를 눌러도 출력된다.
    • 작은따옴표(‘…’)를 사용해도 문자열을 만들 수 있다.
>>> greeting= "Hello'
SyntaxError: EOL while scanning string literal
>>> 
>>> greeting= "Hello 
SyntaxError: EOL while scanning string literal
/* - 당연한 얘기지만 "와 '를 같이 쓰는 것 혹은 ',"를 하나만 쓰는 것은 불가하다.
 - 문법(Syntax)이라는 것은 컴퓨터에서는 프로그램의 문장을 바르게 구성하기 위한 규칙을 의미한다.
 - 위에서 EOL이라는 것은 “End Of Line” 즉 줄의 끝을 만났다는 의미이다. 
 큰 따옴표가 있을 것으로 기대하였는데 줄의 끝을 만날 때까지 발견하지 못했다는 의미가 되는 것이다. */

파이썬에서 왜 문자열을 나타내는데 큰따옴표와 작은따옴표를 동시에 사용하는 것인가?
그것은 문자열 안에 따옴표가 들어가 있는 경우를 처리하기 위해서이다.

>>> message="철수가 "안녕"이라고 말했습니다.# 컴파일러가 혼돈을 일으킨다.
SyntaxError: invalid syntax
>>> message="철수가 '안녕'이라고 말했습니다."
>>> print(message)
철수가 '안녕'이라고 말했습니다.
>>>

파이썬에서는 따옴표를 출력할 때 \를 사용한다. 문자 앞에 \가 붙으면 문자의 특수한 의미가 사라진다. 즉 \" 라고 입력하면 " 따옴표 그 자체가 출력된다.

>>> message= 'doesn\'t'  # \를 사용하여 작은따옴표를 출력한다.
>>> print(message)
doesn't
>>> message="\"Yes,\" he said."
>>> print(message)
"Yes," he said.

\n 은 줄바꿈 문자를 나타내는 특수한 문자이다.

>>> a = “첫 번째 줄\n두 번째 줄“
>>> print(a)
첫 번째 줄
두 번째 줄

만일 print()함수에서 \를 특수 문자 취급을 원치 않다면 첫 번째 따옴표 앞에 r을 추가하여 특수 문자의 의미를 없앨 수 있다.

>>> print(“c:\temp\name”)  # 여기서는 \n은 줄바꿈으로 해석된다.
c:\temp
ame
>>> print(r“c:\temp\name”)  #문자열 앞에 r을 붙이면 특수문자로 해석하지 않는다
c:\temp\name 

문자열의 길이는 len( )함수를 사용하면 알 수 있다. len()함수를 사용해 출력된 값은 정수형이다.

>>> len(“hello”)
5

이스케이프 문자란 일반 문자가 아니고 시스템을 제어하기 위한 특수한 문자이다. 파이썬에서의 이스케이프 문자는 다음과 같다.

문자열의 연결

  • 파이썬 쉘에서 2개 이상의 문자열 리터럴literal(즉 따옴표로 감싸진 문자열)이 서로 붙어있으면 자동으로 연결된다. 이것은 리터럴에서만 허용된다.
>>>'Py' 'thon'
Python
  • 변수나 수식은 해당하지 않지만 만약 변수와 변수, 변수와 리터럴을 연결하고 싶다면 + 연산자로 합칠 수 있다. 이와 같은 방법을 문자열 접합이라 한다.
>>> 'Py’ + 'thon'
'Python’

>>> first_name="길동"
>>> last_name="홍"
>>> name = last_name + first_name
>>> print(name)
홍길동

문자열과 정수 간의 변환(형변환)

+연산자는 2개의 문자열을 합치거나 2개의 정수를 합칠 수 있지만 만약 아래와 같은 경우 즉, 문자열과 정수를 합치라고 한다면 오류가 발생한다.

>>> "Student"+26
...
TypeError: Can't convert 'int' object to str implicitly

그 이유는 바로 파이썬에서는 모든 데이터에는 타입(type)이 있다. 자료형이라고도 한다.

자료형(Data Type)은 프로그래밍 언어에서 정수값, 실수값 등의 여러 종류의
데이터를 식별하는 분류로써 데이터 타입 또는 줄여서 타입이라고도 한다.파이썬은 변수를 생성할 때, 자료형을 적지 않지만 C언어, 자바 등은 다른 언어에서는 변수를 생성할 때 변수의 자료형을 명시하여야 한다.

위에서 “Student”는 문자열 타입이고 26은 정수 타입이다. 타입이 다른 데이터를 + 연산자로 합치려고 시도하면 오류가 발생하는 것이다. 26을 str()함수을 이용하여 문자열로 변환한 후에 합쳐야 하는 것이다.

>>> "Student"+str(26)
‘Student26’

반대로 문자열을 정수, 실수로 바꿀려면 int()함수, float()함수를 사용한다.

문자열의 반복

파이썬에서는 문자열을 반복시켜 새로운 문자열을 생성할 수 있다는 점이다.

>>> line = "=" * 50
>>> print(line)
==================================================

어떠한 문자열도 * 연산자를 이용하여서 반복시킬 수 있다. 예를 들어서 “Congratulation!” 를 3번 되풀이 하려면 아래와 같이 작성하면 된다.

>>> message = "Congratulations! "
>>> print(message*3)
Congratulations! Congratulations! Congratulations!

문자열의 출력

문자열에 변수의 값을 삽입하여 출력하고 싶으면 %s(형식 지정자) 를 이용한다. 예를 들어서 물건의 가격을 변수에 저장한 후에 “상품의 가격은 10000원입니다.“와 같이 출력한다고 하면 아래와 같이 하면 된다.

>>> price = 10000
>>> print("상품의 가격은 %s원입니다." %price)
상품의 가격은 10000원입니다.

문자열 안에서 하나 이상의 %s 를 사용할 수도 있다. 이때는 값들을 괄호로 묶어서 % 뒤에 명기해야 한다.

>>> message = “오늘은 %s월 %s일입니다.>>> print(message % (3, 1))
오늘은 31일입니다.

# (3,1)에 해당하는 위치에 변수를 넣을 수 있다. 예를 들면 다음과 같다
>>> message = "현재 시간은 %s입니다."
>>> time = "12:00pm"
>>> print(message % time)
현재 시간은 12:00pm입니다.

인덱싱

문자열 중에서 하나의 문자를 추출하려면 어떻게 해야 할까? 예를 들어서 암호화 프로그램에서는 문자열에서 하나의 문자를 추출하는 것이 필요하다.
인덱싱(Indexing)이란 문자열에 [, ]을 붙여서 문자를 추출하는 것이다.[, ] 사이에는 인덱스라는 숫자가 들어간다. 인덱스(index)는 문자열에 포함된 각각의 문자에 매겨진 번호이다. 예를 들어서 문자열 “python”에서 각 문자의 인덱스는 아래와 같다.

python
012345

기억해야 할 것은 시작은 0이라는 점이다. 끝 문자는 n-1이다. (n은 len()을 이용해 나온 문자열의 수) 첫 번째 문자의 인덱스는 0이다. 두 번째 문자는 1이고 세 번째 문자는 2가 된다.

파이썬에서는 인덱스가 음수가 될 수 있다는 특수한 기능이 있다. 인덱스가 음수일 경우는 오른쪽으로 왼쪽으로 간다. 음수 인덱스의 시작은 -1이다.

python
-6-5-4-3-2-1
>>> word = 'Python'
>>> word[0]  
'P'
>>> word[5]  
'n'

만일 인덱스에 해당하지 않은 수라면 아래와 같이 범위에서 벗어났다는 에러가 출력된다.

>>> word = 'Python'
>>> word[50]  
IndexError : string index out of range

파이썬에서 한번 작성된 문자열은 변경이 불가능하다. 따라서 아래와 같이 0번째 인덱스에 문자를 바꿀려고 하면 에러가 발생한다. 참고로 C언어나 자바는 가능하다.

>>> word = 'Python'
>>> word[0] = ‘C’  
TypeError : str object does not support item assignment

인덱스 값은 무조건 정수가 들어가야한다. 실수가 들어가도 안된다.
예를 들어 word[num]와 같이 변수가 들어갈 경우는 int()를 이용해 정수형으로 변환시켜야 한다.

리스트

파이썬은 여러 개의 값을 모아서 하나의 변수에 저장할 수 있다. 가장 널리 사용되는 것은 리스트(list)이다. 리스트는 목록 또는 일람표라고 할 수 있다. 리스트는 [ ] 안에 값을 나열하고 값과 값 사이에 콤마(,)를 찍으면 된다. 예를 들면 아래와 같다.

>>> shopping_list = ['milk', 'eggs', 'cheese', 'butter', 'cream']
>>> print(shopping_list)
['milk', 'eggs', 'cheese', 'butter', 'cream']
>>> 

파이썬에서 리스트는 아주 유용하다. 그 이유는 필요에 따라서 리스트를 조작할 수 있기 때문이다. 즉, 리스트의 항목을 삭제하거나 교체할 수 있다는 의미이다.
앞의 문자열과 비슷하게 파이썬의 리스트 안에 저장된 항목들도 고유한 번호를 가지고 있다. 리스트의 인덱스는 항상 0에서 시작한다
위의 예로 들자면

milkeggscheesebuttercream
01234

리스트의 내용을 번호(인덱스)를 이용해 특정한 항목을 출력할 수 있다.
또한 인덱스와 다르게 항목 변경이 가능하다. 리스트는 변경 가능한 객체이다.

>>> print(shopping_list[2])
cheese
>>> shopping_list[2]='apple'
>>> print(shopping_list)
['milk', 'eggs', 'apple', 'butter', 'cream']
>>> print(shopping_list[2])
apple
>>>

리스트는 정수, 문자열 등에 국한되지 않고 여러 개의 값을 저장할 수 있다.

name = input("이름: ")
age = int(input("나이: "))
address = input("주소: ")
tall = int(input("키: "))
weight = int(input("몸무게: "))

person = [name, age, address, tall, weight]
print(person)

'in'를 통해 리스트 안에 변수가 존재하는지를 확인 할 수 있다.

id_list [,,,]
id = []
if id in id_list:
	print("리스트 안에 id가 존재합니다.")

결과:
리스트 안에 id가 존재합니다.
 

0개의 댓글

관련 채용 정보