파이썬이 처리하는 자료형은 3가지 종류가 있다.
type함수는 자료형을 알고 싶을 때 사용한다.
.>>>type("Hello World")
<class 'str'>
.>>>type(3.2)
<class 'float'>
.>>>type(17)
<class 'int'>
// class-> 설계도, 도면, 틀을 말한다.
파이썬의 변수에는 어떤 자료형의 데이터든지 저장이 가능하다. 또한 중간에 다른 자료형의 데이터를 저장이 가능하다.
따라서, 일반적인 경우에 개발자는 데이터의 종류를 신경 쓰지 않아도 된다. 하지만 문자열과 숫자는 서로 구분하여야 한다.
.>>> 10 == "10"
false
.>>> 10 == 10.0
true
>>> 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
이스케이프 문자란 일반 문자가 아니고 시스템을 제어하기 위한 특수한 문자이다. 파이썬에서의 이스케이프 문자는 다음과 같다.
>>>'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))
오늘은 3월 1일입니다.
# (3,1)에 해당하는 위치에 변수를 넣을 수 있다. 예를 들면 다음과 같다
>>> message = "현재 시간은 %s입니다."
>>> time = "12:00pm"
>>> print(message % time)
현재 시간은 12:00pm입니다.
문자열 중에서 하나의 문자를 추출하려면 어떻게 해야 할까? 예를 들어서 암호화 프로그램에서는 문자열에서 하나의 문자를 추출하는 것이 필요하다.
인덱싱(Indexing)이란 문자열에 [, ]을 붙여서 문자를 추출하는 것이다.[, ] 사이에는 인덱스라는 숫자가 들어간다. 인덱스(index)는 문자열에 포함된 각각의 문자에 매겨진 번호이다. 예를 들어서 문자열 “python”에서 각 문자의 인덱스는 아래와 같다.
p | y | t | h | o | n |
---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 |
기억해야 할 것은 시작은 0이라는 점이다. 끝 문자는 n-1이다. (n은 len()을 이용해 나온 문자열의 수) 첫 번째 문자의 인덱스는 0이다. 두 번째 문자는 1이고 세 번째 문자는 2가 된다.
파이썬에서는 인덱스가 음수가 될 수 있다는 특수한 기능이 있다. 인덱스가 음수일 경우는 오른쪽으로 왼쪽으로 간다. 음수 인덱스의 시작은 -1이다.
p | y | t | h | o | n |
---|---|---|---|---|---|
-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에서 시작한다
위의 예로 들자면
milk | eggs | cheese | butter | cream |
---|---|---|---|---|
0 | 1 | 2 | 3 | 4 |
리스트의 내용을 번호(인덱스)를 이용해 특정한 항목을 출력할 수 있다.
또한 인덱스와 다르게 항목 변경이 가능하다. 리스트는 변경 가능한 객체이다.
>>> 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가 존재합니다.