Spring, 2019 School of CSE Pusan National University Python의 자료형(1) Spring, 2019 School of CSE Pusan National University
학습목표 학습목표 자료와 자료형 자료의 크기와 형태 Python의 자료형 문자열과 리스트 for 문 튜플 사전
자료와 자료형 자료와 자료형(복습) 자료형의 분류 자료와 자료형 컴퓨터가 저장하고 다룰 수 있는 대상을 모두 자료(data)라고 함 자료의 형태를 분류해 놓을 것을 자료형(type)이라고 함 자료형의 분류 정수 0과 문자열 “0"의 유형은 분명 다르다. 정수 0과 문자열 “0"의 크기가 같을까? 다르다면 어느 것이 더 클까? 정수 0과 문자열 "0"은 어느 것이 더 클까? 일반적으로 자료형은 자료의 크기와 저장형태에 따라서 다시 분류할 수 있음
자료의 크기와 형태 자료와 자료형에 관한 오해 자료의 형태 자료의 크기와 형태 0의 크기와 1의 크기는 0 < 1이지만 자료형의 크기는 같음 0 < 1이지만 “0" > “1"임(ASCII 순서) “0" > “1"이지만 자료형의 크기는 "One"보다 “Zero" 가 더 큼 cf. 하드디스크에 3GB 파일을 저장해도 하드디스크의 무게는 변화 없음 자료의 형태 0이라는 자료와 “0"이라는 자료의 형태는 분명 다름 0은 더 이상 나눌 정보가 없지만 “0"은 그렇지 않음 나눌 수 없는 타입을 스칼라 타입(scalar type; atomic type)이라고 하고 나눌 수 있는 타입을 구조 타입(structured type)이라고 함
Phython의 자료형 스칼라 타입 구조 타입 Phython 의 자료형 정수형: int, long, character, Unicode character 부동소수점수형: float 논리형: bool 문자열형: str 주의 1: character와 Unicode character는 내부적으로만 사용되며 값을 사용할 때는 모두 문자열로 간주함 주의 2: 문자열형은 구조 타입으로 간주하기도 함 구조 타입 리스트(list) 튜플(tuple; 순서쌍) 사전(dictionary) 클래스(class): 대부분의 다른 타입을 만들 수 있음
문자열 문자열 상수 s = "Hello" t = 'Hello' 첨자 연산 문자열 작은 따옴표나 큰 따옴표로 묶어 나타냄 아래 두 문자열은 같은 문자열임 s = "Hello" t = 'Hello' 첨자 연산 첨자 연산자 대괄호를 []를 이용하면 문자열의 일부를 꺼낼 수 있음 첫 번째 글자의 첨자는 0임(예: s[0]) 음수 첨자는 오른쪽 끝에서부터 셈 마지막 글자의 첨자는 -1임(예: s[-1]) 슬라이스 s[from:to]는 첨자 from부터 to 직전까지 문자열을 꺼냄
큰 문자열 여러 줄에 걸친 문자열 주요 확장열 큰 문자열 문자열 상수 중간에 줄바꿈문자를 사용하면 안 됨 줄바꿈문자를 사용하고 싶은 경우에는 따옴표 세 개를 연속하여 사용함 print """This a a very long string. It can take several lines of lines.""" cf. 확장열(\n)을 이용하여 여러 줄에 걸친 문자열을 나타낼 수도 있음 주요 확장열 \' Single-quote character (\" for double-quote) \\ Backslash character \a Bell character (경고음; alert) \b Backspace character \r Carriage return character (not the same as \n) \t Tab character
문자열 연산 대입 연산 불가 간단한 문자열 연산 슬라이스 연산 문자열 연산 문자열 내의 특정 문자를 바꾸는 것은 불가능함 s[0] = 'g'와 같은 대입 연산은 오류! 간단한 문자열 연산 문자열 길이: len(s) 문자열 연결: s + t 문자열 반복: s * 5 문자열 비교: ==, !=, <=, >=, <, > (코드 순으로 비교함) 슬라이스 연산 s[from:to] 형태에서 from이나 to 생략 가능 from이 생략되면 처음부터, to가 생략되면 끝까지 cf. s[:] == s
연습문제 영어 문자열을 읽어서 글자 a만 별표 *로 바꾸어 출력하는 프로그램을 작성해 보자. 연습문제 raw_input()을 사용하여 입력을 받을 것 while 루프를 사용할 것 공백을 출력하지 않는 방법을 이용할 것 첨자 연산과 길이 연산만 사용하고 다른 문자열 메소드는 사용하지 말 것
리스트 리스트란? 리스트 생성 empty = [] a = [1, 2, 3] 리스트(list)란 자료를 순서대로 나열한 것을 묶은 자료형 문자열의 내부에는 문자만 있지만 리스트에는 여러 형태의 자료가 모두 포함될 수 있음 리스트 생성 리스트 리터럴(literal)은 대괄호와 쉼표를 이용하여 생성함 empty = [] a = [1, 2, 3] hippo = ['Life', 'is', 'short'] 일정 간격의 리스트는 range를 이용하면 편리함 print range(1,10,2)
리스트 연산 선형 연산 리스트 변경 hippo = ['Life', 'is', 'short'] hippo[0] = 'Art' 문자열 연산과 같은 연산을 모두 포함하고 있음 길이(len), 연결(+), 반복(*), 슬라이스([:]), 첨자([]) 연산 등 리스트 변경 리스트는 문자열과 달리 원소를 변경할 수도 있음 hippo = ['Life', 'is', 'short'] hippo[0] = 'Art' 슬라이스를 이용하면 리스트 원소를 삭제할 수도, 추가할 수도 있음 hippo[0:1] = [] hippo[0:0] = ['Art', 'is', 'long', 'and', 'life'] print hippo
for 문 for 문의 용도 for 문을 이용한 계승 계산 prod = 1 for n in range(1,10+1): range(a,b)는 [a, a+1, …, b-1]을 생성함 b가 제외된다는 사실에 주의할 것 for 문을 이용한 계승 계산 prod = 1 for n in range(1,10+1): prod = prod * n print prod