파이썬 프로그래밍의 기초, 자료형 1
목차
👀, 🤷♀️ , 📜 , ⌨
이 아이콘들을 누르시면 코드, 개념 부가 설명을 보실 수 있습니다:)
밑의 코드들은 일부로 숨겨 두었는데 처음읽을땐 코드를 보고 두번쨰엔 보지 않고 콘솔창에 출력해보길 바랍니다😊
문자열 자료형
문자열(String)
문자, 단어, 숫자 등으로 구성된 문자들의 집합
"Life is too short, You need Python"
"a"
"123"
큰따옴표(“ “)로 둘러싸여 있으면 모두 문자열
문자열 제작, 사용법
제작
- 큰따옴표(“)로 양쪽 둘러싸기
- 작은따옴표(‘)로 양쪽 둘러싸기
- 큰따옴표 3개를 연속(“”“)으로 써서 양쪽 둘러싸기
- 작은따옴표 3개를 연속(‘’‘)으로 써서 양쪽 둘러싸기
4개인 이유
[1] 문자열에 작은따옴표 (‘) 필요하기 떄문
>>> food = "Python's favorite food is perl"
작은 따옴표 문자열 기호로 인식 X ➡ 작은 따옴표를 쓸 수 있다.
[2] 문자열에 큰따옴표(“) 포함시키기 때문
>>> say = '"Python is very easy." he says.'
큰 따옴표 문자열 기호로 인식 X ➡ 큰 따옴표를 쓸 수 있다.
[3] 백슬래시()를 사용해서 작은따옴표(‘)와 큰따옴표(“)를 문자열에 포함시키기 때문
>>> say = "\"Python is very easy.\" he says."
✔ \ 뒤 의 문자는 문자 그대로 인식하게 한다!!!
여러 줄인 문자열을 변수에 대입
[1] 줄을 바꾸는 이스케이프 코드 ‘\n’ 삽입하기
사실 이 방법이 가장 범용적이라 이 방법을 쓰길 추천한다.
>>> multiline = "Life is too short\nYou need python"
[2] 연속된 작은따옴표 3개(‘’’) 또는 큰따옴표 3개(“””) 사용하기
이건 코드를 쓰기전 코드를 설명할 떄 많이 쓴다.
>>> multiline='''
... Life is too short
... You need python
... '''
이스케이프 코드
\ (백슬래쉬)와 같이 쓰는 코드들을 뜻한다
참고로 \ 즉. 백슬래쉬는 엔터 위 원화키 즉 [w] 를 누르면 된다
\n | 문자열 안에서 줄을 바꿈 |
\t | 문자열 사이에 탭 간격 |
\ | 문자 \를 그대로 표현 |
\’ | 작은따옴표(‘)를 그대로 표현 |
\” | 큰따옴표(“)를 그대로 표현 |
\r | 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동) |
\f | 폼 피드(줄 바꿈 문자, 현재 커서를 다음 줄로 이동) |
\a | 벨 소리(출력할 때 PC 스피커에서 ‘삑’ 소리가 난다) |
\b | 백스페이스 |
\00 | 널 문자 |
문제
1. 다음 문장을 이스케이프 시퀸스를 이용하여 출력해봐라.
이 때, 두번쨰 문장 앞의 공백은 [tap] 처리 되었다.
'설기'가 말했습니다.
"나랑 놀아주지 않을래?"
⌨ 코드 보기
str1= "'설기'가 말했습니다.\n\t\"나랑 놀아주지 않을래?.\""
print(str1)
문자열 연산
더해서 연결하기(Concatenation)
>>> head = "Python"
>>> tail = " is fun!"
>>> head + tail
'Python is fun!’
곱하기
/# multistring.py
print("=" * 50)
print("My Program")
print("=" * 50)
입력 소스는 C:\doit 디렉터리에 multistring.py로 저장.
명령 프롬프트(cmd)실행
C:\Users>cd C:\doit
C:\doit>python multistring.py
==================================================
My Program
==================================================
문자열 인덱싱
무엇인가를 ‘가리킨다’는 의미, 문장이름[번호]
“파이썬은 0부터 숫자를 센다.”, ‘-‘는 뒤에서부터 읽기
i는 1, short의 s는 12가 된다.
>>> a = "Life is too short, You need Python"
>>> a[3]
'e'
>>> a[-1]
'n'
>>> a[-0]
'L'
0과 -0은 똑같은 것이기 때문에 a[-0]은 a[0]과 똑같은 값이다
문자열 슬라이싱
무엇인가를 ‘잘라낸다’는 의미, 응용을 쉽게 함.
문장이름[시작 번호: 끝 번호]
시작번호<= 에서 끝번호보다 작은
'Life'와 'Life '는 완전히 다른 문자열
>>> a[19:]
'You need Python'
∟ 끝번호까지 출력
>>> a[:]
'Life is too short, You need Python'
∟ 시작번호부터 끝번호까지 출력
>>> a[19:-7]
'You need'
∟ a[19]에서부터 a[-8]까지를 말한다. 이 역시 a[-7]은 포함X
슬라이싱으로 문자열 나누기
>>> a = "20010331Rainy"
>>> date = a[:8]
>>> weather = a[8:]
>>> date
'20010331'
>>> weather
'Rainy'
+Pithon이라는 문자열을 Python으로 바꾸려면?
기본적으로 문자열 자료형은 그 요솟값을 변경할 수 없다.
그래서 immutable한 자료형이라고도 부른다.
즉 슬라이싱을 사용해야 한다.
>>> a = "Pithon"
>>> a[:1]
'P'
>>> a[2:]
'thon'
>>> a[:1] + 'y' + a[2:]
'Python'
문제
1. 아래의 a 문자열에서 인덱싱을 이용하여 ‘Life’를 출력하라
>>> a = "Life is too short, You need Python"
⌨ 코드 보기
>>> a = "Life is too short, You need Python"
>>> b = a[0] + a[1] + a[2] + a[3]
>>> b
'Life'
문자열 관련 함수
[1] 문자 개수 세기
문자열이름.count(‘세고싶은거’)
>>> a = "hobby"
>>> a.count('b')
2
[2] 위치 알려주기
문자열 이름.find(‘찾을거’)
>>> a = "Python is the best choice"
>>> a.find('b')
14 (문자열에서 b가 처음 나온 위치)
>>> a.find('k')
-1 (찾는게 없을 때)
[3] 인덱싱
문자열 이름.index (‘찾을거’)
>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found (찾는게 없을 때 오류 발생)
[4] 문자열 길이 구하기
len
함수로 글자수 구할 수 있다
⛔ 사실 이건 문자열 관련 함수가 아니긴 한데(얘만 특이하게 문자열이름.함수이름
형태가 아니다) 문자열을 다룰 때 많이 써서 그냥 넣어봤다
>>> a = "Life is too short"
>>> len(a)
17
[5] 문자열 삽입
“삽입할 문자”.join(‘삽입 당하는 문자’)
>>> ",".join('abcd')
'a,b,c,d'
>>> ",".join(['a', 'b', 'c', 'd'])
'a,b,c,d'
[6] 소문자를 대문자로 바꾸기
문자열 이름.upper()
>>> a = "hi"
>>> a.upper( )
'HI'
[7] 대문자를 소문자로 바꾸기
문자열 이름.lower()
>>> a = "HI"
>>> a.lower( )
'hi'
[8] 왼쪽, 오른쪽, 양쪽 공백 지우기
문자열 이름.lstrip ()
문자열 이름.rstrip ()
문자열 이름.strip ()
>>> a q= " hi "
>>> a.lstrip( )
'hi ' -> 가장 왼쪽의 한칸 이상 연속공백X
>>> a= " hi "
>>> a.rstrip( )
' hi'
>>> a = " hi "
>>> a.strip( )
'hi'
[9] 문자열 바꾸기
문자열 이름.replace(바뀔 문자열, 바꿀 문자열)
>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
[10] 문자열 나누기
문자열 이름.spilt(나누는 기준)
>>> a = "Life is too short"
>>> a.split( )
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']
문제
미리 선언된 sentence 변수의 문장을 다음 내용으로 코딩해보자
- sentence에 포함된 ‘t’문장의 개수를 출력해라
- sentence에서 가장 먼저 나오는 ‘i’ 문자의 인덱스를 출력해라
- sentence의 문자열을 모두 대문자로 바꾼 후 출력해라
- sentence의 문자열을 모두 소문자로 바꾼 후 출력해라
- sentence의 문자열에 포함된 문자 ‘a’를 모두 ‘b’로 바꾼 뒤 출력해라
- sentence의 길이를 출력해라
sentence = "Do you know a cat named Seolgi? He's so cute and lovely, I don't think I can live without him. Seolgi is the best."
출력 예시
8
29
DO YOU KNOW A CAT NAMED SEOLGI? HE'S SO CUTE AND LOVELY, I DON'T THINK I CAN LIVE WITHOUT HIM. SEOLGI IS THE BEST.
do you know a cat named seolgi? he's so cute and lovely, i don't think i can live without him. seolgi is the best.
Do you know b cbt nbmed Seolgi? He's so cute bnd lovely, I don't think I cbn live without him. Seolgi is the best.
114
⌨ 코드 보기
sentence = "Do you know a cat named Seolgi? He's so cute and lovely, I don't think I can live without him. Seolgi is the best."
num1 = sentence.count('t')
print(num1)
num2 = sentence.index('i')
print(num2)
print(sentence.upper())
print(sentence.lower())
print(sentence.replace('a','b'))
print(len(sentence))