240802
1. 문자의 표현
1) 컴퓨터에서 문자를 어떻게 표현하는가?
- 숫자(부호)만을 처리한다.
- A라는 글자 모양 그대로 비트맵으로 저장시 메모리 낭비가 심하고
- 각 문자에 대해서 대응되는 숫자를 저장해놓고 메모리에 저장하는 방법을 쓴다
- 표준 ASCII(미국 문자 표준 인코딩)가 등장 : 7-bit 인코딩, 10진수(32~126)나 16진수로 표현
- bit란? 8 bits = 1 byte (byte란 주소가 부여되는 최소단위 -> 64byte 노트북은 한번에 처리할 수 있는 주소 단위)
- 그러나 ... 네트워크가 전세계적으로 발달하면서 각국의 문자를 정해놓은 규칙을 하나로 정리한 unicode가 등장
2) 유니코드도 다시 character set으로 분류된다
- ex. UCS-2, UCS-4 -> 문자 저장 방식에 정해진 순서가 없음
- 유니코드의 외부 인코딩 필요해짐
-> UTF-8(in web) : 최소 8비트부터 최대 32비트까지(저장하는 내용에 따라 길이 가변)
-> UTF-16(in windows, java) : 16비트부터 32비트까지
- 파이썬은 문자열을 유니코드(UTF-8)로 저장
3) CRLF : ASCII 코드의 제어문자
- windows -> CR(?) + LF(줄바꿈)
print(ord('A') #아스키코드 숫자로 리턴
print(chr(65)) #숫자를 아스키코드로 변환
2. 문자열 예제
# swap : (자기) 문자열 앞뒤로 바꾸기
str = 'hello'
n = len(str)
arr = list(str)
for i in range(n//2):
arr[i], arr[n-1-i] =arr[n-1-i],arr[i]
print(''.join(arr))
#strlen() 함수 만들어보기 : \0을 만나면 이를 제외한 글자수를 리턴
cnt = 0
def strlen(arr):
for a in arr:
if a == '\0':
break
else:
cnt += 1
print(cnt)
# 다시 while문으로 구현
i = 0
while arr[i] != '\0':
i += 1
print(i)
#문자열 뒤집기
s = 'hello'
#1
s = s[::-1]
#2
lst = list(s)
lst.reverse()
answer = ''.join(lst)
print(answer)
3. 문자열 비교
# == 연산자는 내부적으로 특수 메서드 __eq__()를 호출
#참조 # 복사
s1 = 'abc'
s2 = 'abc'
s3 = 'def'
s4 = s1
s5 = s1[:2] + 'c' #슬라이싱 : 주소값(참조위치) 다르게 생성
print(s1 is s2)
print(s4 == s1)
print(s5 == s1)
print(s5 is s1)
print(s4 == s1)
아스키코드는 유니코드의 하위 집합이다. 즉, 아스키코드로 표현하는 문자들은 동일한 코드 포인트를 유니코드에서 사용한다. 유니코드는 모든 언어의 문자, 이모지, 기호 등을 포함하여 전세계의 문자를 표현할 수 있음!
#알파벳 리스트 만들기
# ord() 함수는 문자를 유니코드 코드 값으로 변환합니다.
# chr() 함수는 유니코드 코드 값을 문자로 변환합니다.
# a부터 z까지의 리스트 생성
alphabet_list = [chr(i) for i in range(ord('a'), ord('z') + 1)]
print(alphabet_list)
'SSAFY' 카테고리의 다른 글
[수업기록] 알고리즘 : stack(2)-문자열 계산식, 백트래킹 (0) | 2024.08.08 |
---|---|
[수업기록] 알고리즘 : stack (0) | 2024.08.06 |
[수업기록] 알고리즘 : list(검색, 선택 정렬) (0) | 2024.08.01 |
[수업기록] 알고리즘 : list(배열, 정렬, 순열-조합, 완전탐색, 그리디, 행렬) (0) | 2024.07.31 |
[일기] 파이썬 수업이 끝이 났다 야호! (0) | 2024.07.26 |