02-1. 숫자형
1) 숫자형 : 정수, 실수, 8진수(ex. 0o34,0O34), 16진수(ex. 0x2A)
1-1) 실수 : 4.24E10 == 4.24e-10 <- 4.24 × 10^(-10)
2) 사칙연산 : a**b <- a^y
#Q. 방금 배운 연산자를 이용해 10*18^2+2*11을 계산해 보자.
print(10*18**2+2*11)
#정답 : 3262
나눗셈 후 몫을 리턴하는 연산자 : a // b != a / b
#Q. 방금 배운 연산자를 사용해서 숫자 14를 3으로 나누었을 때 몫과 나머지를 확인해 보자.
print("14 나누기 3의 몫은 ", 14//3, "이고, 나머지는 ", 14%3 , "입니다.")
#정답 : 몫: 4, 나머지 : 2
02-2. 문자열 자료형
1) 문자열 : 문자, 단어 등으로 구성된 문자들의 집합
2) 문자열 안에 작은따옴표나 큰따옴표를 포함시키고 싶을 때
#문자열에 작은따옴표 포함하기
food = "Python's favorite food is perl"
print(food)
#출력 : Python's favorite food is perl
#문자열에 큰따옴표 포함하기
say = '"Python is very easy." he says.'
print(say)
#출력 : "Python is very easy." he says.
#역슬래시를 사용해서 작은따옴표와 큰따옴표를 문자열에 포함하기
food = 'Python\'s favorite food is perl"
say = "\"Python is very easy.\" he says."
print(food)
print(say)
#출력 : Python's favorite food is perl
#출력 : "Python is very easy." he says.
3) 여러 줄인 문자열을 변수에 대입하고 싶을 때
#줄을 바꾸기 위한 이스케이프 코드 \n 삽입하기
multiline = "Life is too short\nYou need python"
print(multiline)
"""출력 :
Life is too short
You need python
"""
#연속된 작은따옴표 3개 또는 큰따옴표 3개 사용하기
multiline = '''
Life is too short
You need python'''
print(multiline)
"""출력 :
Life is too short
You need python
"""
multiline = """
Life is too short
You need python"""
print(multiline)
"""출력 :
Life is too short
You need python
"""
3-1) 이스케이프 코드
코드 | 설명 |
\n | 문자열 안에서 줄을 바꿀 때 사용 |
\t | 문자열 사이에 탭 간격을 줄 때 사용 |
\r | 캐리지 리턴(줄 바꿈 문자, 커서를 현재 줄의 가장 앞으로 이동) |
\f | 폼 피드(줄 바꿈 문자, 커서를 현재 줄의 다음 줄로 이동) |
\a | 벨 소리(출력할 때 PC스피커에서 '삑'소리가 난다) |
\b | 백 스페이스 |
\000 | 널 문자 |
4) 문자열 곱하기
print("=" * 50)
print("My Program")
print("=" * 50)
"""
==================================================
My Program
==================================================
"""
5) 문자열의 길이 구하기 : 문자열의 길이에는 공백 문자도 포함된다. >>> len(a)
#Q. 'You need python'라는 문자를 문자열로 만들고 길이를 구해 보자.
a = "You need Python"
len(a)
#정답 : 15
6) 문자열 인덱싱/슬라이싱
a = "Life is too short, You need Python"
print(a[-1]) #출력 : 'n'
print(a[0:4]) #출력 : Life, # 0<=a<3
print(a[19:]) #출력 : You need Python
print(a[:17]) #출력 : Life is too short
print(a[:]) #출력 : Life is too short, You need Python
문자열의 요솟값은 바꿀 수 있는 값이 아니다. (immutable), >>> a[1] = 'y' 불가능 |
7) 문자열 포매팅
print("I eat %d apples." %3) #출력 : I eat 3 apples. #정수는 %d
print("I eat %s apples." %"five") #출력 : I eat five apples. #문자열은 %s + 따옴표
number = 3
print("I eat %d apples." %number) #출력 : I eat 3 apples.
number = 3
day = "three"
print("I eat %d apples. so I was sick for %s days." %(number,day))
#출력 : I eat 3 apples. so I was sick for three days.
#에러 : print("I eat %d apples. so I was sick for %s days." %number,%day)
number = 10
day = "three"
print("I ate {0} apples. so I was sick for {1} days." .format(number, day))
#출력 : I ate 10 apples. so I was sick for three days.
print("I ate {number} apples. so I was sick for {day} days." .format(number=10, day=3))
#출력 : I ate 10 apples. so I was sick for 3 days.
print("{0:<10}".format("hi"))
#출력: hi
print("{0:>10}".format("hi"))
#출력: hi
print("{0:^10}".format("hi"))
#출력: hi
print("{0:=^10}".format("hi"))
#출력: ====hi====
print("{0:!<10}".format("hi"))
#출력: hi!!!!!!!!
#Q. format 함수 또는 f문자열 포매팅을 사용해 !!!python!!! 문자열을 출력해 보자.
print("{0:!^12}".format("python")) #출력 : !!!python!!!
print(f'{"python":!^12}') #출력 : !!!python!!!
8) 문자열 관련 함수들
#1. 문자 개수 세기
a = "hobby"
a.count('b') #출력 : 2
#2. 위치 알려 주기 1
a = "Python is the best choice"
a.find('b') #출력 : 14
a.find('k') #출력: -1, 존재하지 않을 경우...
#3. 위치 알려 주기 2
a = "Life is too short"
a.index('t') #출력 : 8
a.index('k') #에러!!!
#4. 문자열 삽입
print(",".join('abcd')) #출력 : a,b,c,d
#5. 소문자를 대문자로 바꾸기
a = "hi"
print(a.upper()) #출력 : HI
#6. 대문자를 소문자로 바꾸기
a = "HI"
print(a.lower()) #출력 : hi
#7. 공백 지우기
a = " hi"
print(a.lstrip()) #출력 : hi, 왼쪽 공백 지우기
a = "hi "
print(a.rstrip()) #출력 : hi, 오른쪽 공백 지우기
a = " hi "
print(a.strip()) #출력 : hi, 양쪽 공백 지우기
#8. 문자열 바꾸기
a = "Life is too short"
print(a.replace("Life","Your leg")) #출력 : Your leg is too short
#9. 문자열 나누기
a = "Life is too short"
print(a.split()) #출력 : ['Life', 'is', 'too', 'short']
b = "a:b:c:d"
print(b.split(':')) #출력 : ['a', 'b', 'c', 'd']
02-3. 리스트 자료형
1) 리스트의 인덱싱
>>> a = [1,2,3, ['a','b','c']]
>>> a[-1][0] #출력 : 'a'
>>> a[3][0] #출력 : 'a'
2) 리스트의 슬라이싱
>>> a = [1,2,3,4,5]
>>> a[0:2] #출력 [1, 2]
# Q. a[1,2,3,4,5] 리스트에서 슬라이싱 기법을 사용하여 리스트 [2.3]을 만들어 보자.
>>> list = a[1:3]
3) 리스트 연산하기
>>> a = [1,2,3, ['a','b','c']]
>>> type(a[1]) #출력 : <class 'int'>
>>> type(a[3]) #출력 : <class 'list'>
>>> type(a[3][0])#출력 : <class 'str'>
4) 리스트 수정과 삭제 : del 객체
5) 리스트 관련 함수 : append(요소 추가), sort(정렬), reverse(뒤집기), index(인덱스, 검색), insert(위치를 지정하여 요소 추가), remove(제거), pop(stack의 pop?), count(특정 요소의 개수 세기), extend(리스트를 추가)
02-4. 튜플 자료형
- [리스트] vs (튜플), 튜플은 요솟값을 바꿀 수 없다
1) 튜플 만드는 법 : t1 = (1, ) <<< 1개의 요소만을 가질 때는 쉼표 필수, t2 = 1,2,3 <<< 소괄호 생략 가능
Q. (1,2,3) 이라는 튜플에 값 4를 추가하여 (1,2,3,4)라는 새로운 튜플을 출력해 보자.
t1 = 1,2,3
t1 + (4,) #출력 : (1, 2, 3, 4)
02-5. 딕셔너리 자료형
- 대응 관계, '연관 배열' or '해시(hashing)
1) 딕셔너리란? : key -> value
2) 딕셔너리 만들기 : {Key1: Value1, Key2: Value2, ...}
3) 딕셔너리 쌍 추가, 삭제하기
>>> a = {1: 'a'}
>>> a[2] = 'b'
>>> a['name'] = 'pey'
>>> a[3] = [1,2,3]
>>> a #출력 : {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
>>> del a[1]
>>> del a['name']
>>> a #출력 : {2: 'b', 3: [1, 2, 3]}
4) 주의 사항 : 중복 Key값일 경우 가장 Last 이외 무시, Key값으로 리스트는 사용X but 튜플은 사용O
5) 딕셔너리 관련 함수 : keys(키값만을 모아 dict_keys객체 리턴), values(밸류값만을 모아 dict_values 객체 리턴), items( 모든 키-밸류 쌍을 튜플로 묶어서 dict_items으로 리턴), clear(모든 요소 삭제), get(키값으로 밸류 얻기, 인덱싱 방식과는 다르게 존재하지 않는 키를 검색할 때 에러를 발생시키지 않음, 디폴트 처리를 할수있음?), in(키값이 존재하는지 검색, boolean리턴)
# Q. 다음 표를 딕셔너리로 만드시오. (생략)
>>> d = {'name' : ' 홍길동', 'birth' : 1128, 'age' : 30}
>>> d # 출력 : {'name': ' 홍길동', 'birth': 1128, 'age': 30}
02-6. 집합 자료형
1) 집합 자료형 만들기
>>> s1 = set([1,2,3])
>>> s1 #출력 : {1, 2, 3}
>>> s2 = set("Hello")
>>> s2 #출력 : {'H', 'l', 'e', 'o'}
-특징 : 중복 허용X. 순서 없음
2) 교집합, 합집합, 차집합 구하기 : &(교집합, intersection함수도 동일 기능), | (합집합, union 함수도 동일 기능), -(차집합, difference 함수도 동일 기능)
3) 집합 자료형 관련 함수 : add(값 1개 추가, 1개 초과시 error ), update(값 여러개 추가, 리스트 형식으로...), remove(특정 값 제거)
02-7. 불 자료형
1) 자료형의 참과 거짓 : 공백 <- False, bool
02-8. 자료형의 값을 저장하는 공간, 변수
1) 변수란?
>>> a = [1,2,3]
>>> id(a) #출력 : 2792807691968 <- 변수 a가 가리키는 리스트의 주소 값
[1,2,3] <- 리스트 데이터(객체)가 자동으로 메모리에 생성, a <- 리스트가 저장된 메모리의 주소를 가리킴
2) 리스트 복사 : 같은 객체를 참조(point?)하게 될지도...
>>> b = a
>>> a is b #출력 : True
# [:] 이용하기
>>> a = [1,2,3]
>>> b = a[:]
>>> a is b #출력 : False
# copy 모듈 이용하기
>>> from copy import copy
>>> c = [1,2,3]
>>> d = copy(c) #copy 모듈 필요함
>>> d = c.copy()
>>> c is d #출력 : False
3) 변수를 만드는 여러 가지 방법
#파이썬은 동시에 여러 변수 대입 가능함
>>> a = b = 'python'
>>> a, b = ('python', 'java')
>>> (a, b) = 'python', 'java'
>>> [a, b] = ['python', 'java']
>>> a #출력 : 'python'
>>> b #출력 : 'java'
# 간단한 swap
>>> a = 3
>>> b = 5
>>> a, b = b, a
>>> a #출력 : 5
>>> b #출력 : 3
# Q. 다음 예제를 실행한 후 그 결과를 설명해 보자.
>>> a = [1,2,3]
>>> b = [1,2,3]
>>>a is b
# 출력 : False
# 설명 : 변수 a 와 b는 서로 다른 메모리를 가리킨다.
'프로그래밍 > Python' 카테고리의 다른 글
[OpenCV with Python] 경계 검출을 하려는데 영상이 화면에 걸렸다 (0) | 2024.05.19 |
---|---|
[OpenCV with Python] 한글이 포함된 경로로 imread시 error 발생 (0) | 2024.05.18 |
[Do it! 점프 투 파이썬] 01장. 파이썬이란 무엇인가? (0) | 2023.07.06 |
댓글