Programming 기초/Python
[Python 기초 #1] 기본 문법1 - 문자열, count, find, index,
코딩상륙작전
2023. 4. 12. 19:55
* 파이썬이란?
- 1990년 암스테르담의 귀도 반 로섬(Guido Van Roasadd)이 개발한 인터프리터 언어. 본인이 좋아하는 코미디 쇼인 '몬티 파이썬의 날아디는 서커스(Monty Python's Flying Circus)'에서 따왔다고 함.
- 사전적 의미는 고대 신화에 나오는 파르나소스 산의 동굴에 살던 큰 뱀을 뜻함. 알로 신이 델파이에서 파이썬을 퇴치했다는 이야기가 전해짐. 대부분의 파이썬 책 표지와 아이콘이 뱀 모양으로 그려진 이유.
- 구글의 절반이상, 인스타그램, 파일 동기화 서비스 드롭박스(dropbox)등이 파이썬으로 제작.
* 파이썬의 문법
1. //는 몫을 구한다. /는 나누기를 실행한다.
2. 제곱은 **
a = 3
b = 4
print(a//b)
print(a/b)
print(a**b)
-------------------------------------
>> 0
>> 0.75
>> 81
-------------------------------------
2. %는 나머지를 구한다.
a = 30
b = 4
print(a % b)
--------------------------------
>> 2
3. 문자열 자료형
- 큰 따옴표와 작은 따옴표 세 개씩 연속으로 쓰는 것도 문자열로 인식.
a = "Hello world1"
b = 'Hello world2'
c = """Hello world3"""
d = '''Hello world4'''
print(a)
print(b)
print(c)
print(d)
- 문자열에 작은따옴표 혹은 큰 따옴표 포함시키기
a = "Python's favorite food is perl"
b = """Python's favorite food is perl"""
c = '''Python's favorite food is perl'''
d = '"Python is very easy."he says.'
e = '''"Python's favorite food is perl"he says.'''
f = 'Python\'s favorite food is perl' # \는 이스케이프 코드
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
- 여러 줄인 문자열을 변수에 대입하고 싶을 때 (파이썬은 기본적으로 한 줄씩 실행하기 때문에 c언어처럼 엔터로 줄을 늘려 쓸 수 없다.)
multiline = "Life is too short\nYou need python"
multiline2 = """Life is too short
You need python"""
multiline3 = '''Life is too short
You need python'''
print(multiline)
print(multiline2)
print(multiline3)
--------------------------------------
Life is too short
You need python
Life is too short
You need python
Life is too short
You need python
---------------------------------------
- 문자열 연산하기 (파이썬의 장점)
head = "Python"
tail = " is fun!"
print(head + tail)
print(head*2)
------------------------------------
Python is fun!
PythonPython
------------------------------------
- 문자열 길이 구하기
head = "Life"
tail = " is too short"
print(len(head + tail))
#len()함수는 print 함수처럼 파이썬의 기본 내장 함수. 띄어쓰기도 센다.
- 문자열 인덱싱과 슬라이싱
# 문자열 인덱싱
head = "Life"
tail = " is too short"
print((head + tail)[2]) # 파이썬은 0부터 숫자를 센다.
print((head + tail)[-1]) # -를 붙이면 거꾸로 위치를 센다.
print((head + tail)[-0]) # 0과 -0은 똑같다.
-------------------------------------------------------------------
f
t
L
슬라이싱은 a[이상 : 미만 : 간격]의 형식이다.
head = "Life"
tail = " is too short"
print((head + tail)[0:4])
print((head + tail)[:8:2]) # 비어두면 처음부터 시작을 의미
print((head + tail)[::3])
print((head + tail)[::-1]) # 뒤에서부터 역순으로 출력
print((head + tail)[:5:-1])
print((head + tail)[5::-1])
print((head + tail)[0::-1])
------------------------------------------------------------------
Life
Lf s
Lesosr
trohs oot si efiL
trohs oot s
i efiL
L
*문자열 자료형은 그 요솟값을 변경할 수 없다. 그래서 immutable한 자료형이라고도 부른다.
- 문자열 포매팅(formatting)
a = "I eat %d apples." % 3
b = "I eat %s apples." % "five" # 문자열 대입에는 %s를 써야한다.
number = 2
c = "I eat %d apples." % number
d = "I eat %d apples and %s oranges" % (number, "five") #두 개 이상의 값을 넣을 때 괄호와 콤마로 구분
print(a)
print(b)
print(c)
print(d)
-----------------------------------------------------------------------
I eat 3 apples.
I eat five apples.
I eat 2 apples.
I eat 2 apples and five oranges
- 문자열 포맷 코드(c언어와 같다)
코드 | 설명 |
%s | 문자열(String) |
%c | 문자 1개(Character) |
%d | 정수(Integer) |
%f | 부동 소수(Floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal%(문자 '%' 자체) |
* %s 포맷 코드는 어떤 형태의 값이든 변환해 넣을 수 있다.
a = "I eat %d apples" % 3
b = "rate is %s" % 3.234
print(a)
print(b)
----------------------------------
I eat 3 apples
rate is 3.234
- 정렬과 공백, 소수점 표현
a = "%10s" % "hi" # 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 앞의 나머지는 공백으로 남겨 두라.
b = "%-10s TOM" % "hi" # 왼쪽 정렬.
c = "%0.4f" % 3.141592 # 소수점 네 번째 자리까지만 표현.
d = "%10.4f" % 3.141592 # 오른쪽 정렬과 소수점 네번째 자리까지만 표시
print(a)
print(b)
print(c)
print(d)
------------------------------------------------------------------
hi
hi TOM
3.1416
3.1416
- format 함수를 사용한 포매팅
- 2개 이상의 값을 넣을 경우 문자열의 {0}, {1}과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀐다.
- 이름으로도 넣을 수 있다.
number = 3
a = "I ate {0} apples. so I was sick for {1} days.".format(number, "three")
b = "I ate {0} apples. so I was sick for {name}days.".format(12, name=3)
# 키워드 인자는 마지막에 넣어야 함.
c = "I ate {name} apples. so I was sick for {0}days.".format(2, name=4)
d = "{0:>10}".format("hi") # 오른쪽 정렬
e = "{0:^10}".format("hi") # 가운데 정렬
f = "{0:=<10}".format("hi") # 왼쪽 정렬 및 공백 채우기
g = "{0:0.4f}".format(3.4123456) # 소수점 4자리까지 표기
h = "{0:10.4f}".format(3.4123456) # 자릿수를 10으로 맞춤
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
print(g)
print(h)
-------------------------------------------------------------------------
I ate 3 apples. so I was sick for three days.
I ate 12 apples. so I was sick for 3days.
I ate 4 apples. so I was sick for 2days.
hi
hi
hi========
3.4123
3.4123
- f 문자열 포매팅(파이썬 3.6부터 지원)
age = 30
a = f'나는 내년이면 {age+1}살이 된다.'
print(a)
---------------------------------------
나는 내년이면 31살이 된다.
* 자주 쓰이는 문자열 함수
- count 함수 : 문자 개수 세기
>>> a = "hobby"
>>> a.count('b')
2
- find 함수 : 찾는 문자 중 처음으로 나온 위치를 반환한다. 문자나 문자열이 존재하지 않는다면 -1을 반환.
>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
- 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
- join 함수 : 문자열 삽입. abcd 문자열 각각의 문자 사이에 ','를 삽입.
>>> ",".join('abcd')
'a,b,c,d'
>>> ",".join(['a', 'b', 'c', 'd'])
'a,b,c,d'
- upper 함수 : 소문자를 대문자로 바꾸기
>>> a= "hi"
>>> a.upper()
'HI'
- lower 함수 : 대문자를 소문자로 바꾸어 준다.
>>> a= "HI"
>>> a.lower()
'hi'
- split 함수 : 괄호 안의 값을 구분자로 해서 문자열을 나누어 준다. 괄호 안 공백시 스페이스, 탭, 엔터 기준으로 나눔.
>>> a= "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']
- replace 함수 : replace(바뀌게 될 문자열, 바꿀 문자열) 형식으로 특정한 값을 다른 값으로 치환.
>>> a= "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
- lstrip 함수 : 왼쪽 공백 지우기
>>> a = " hi "
>>> a.lstrip()
'hi '
- rstrip 함수 : 오른쪽 공백 지우기
>>> a = " hi "
>>> a.rstrip()
' hi'
- strip 함수 : 양쪽 공백 지우기
>>> a = " hi "
>>> a.strip()
'hi'