동아리에서 IT스터디로 python을 하게 되었다. 기본기를 다시 제대로 잡겠다는 마인드로 열심히 공부해보려고 한다.
우선 첫 주차에서는 숫자형, 문자열 자료형을 공부하기로 했다.
스터디 당일날 축제 행사로 인해 불참하게 되었지만 해당 단원에서 중요하다고 생각하는 부분 요약과 스터디에서 진행되었던 문제 풀이를 해보려고 한다.
문자열 인덱싱과 슬라이싱
인덱싱 = "(무언가를)가리킨다", 슬라이싱 = "(무언가를)잘라낸다"는 의미이다.
"파이썬은 0부터 숫자를 센다." <- 기억할 것!
인덱싱은 a[번호]로 특정한 값을 뽑는다. a[-번호] = 뒤에서 부터 세어 첫 번째가 되는 문자를 뜻한다.
+++ 0과 -0은 똑같은 거임 ^,^ (제일 처음 문자를 뽑아낸다.)
단순히 한 문자를 뽑는 것이 아닌 단어 등을 뽑기 위해 슬라이싱을 사용한다.
a[시작 번호:끝 번호]로 적으며, 지정할 때 끝 번호에 해당하는 것은 포함 X.
문자열 포매팅
number = 5
day = "three"
>>> "I eat %d apples. so I was sick for %s days." % (number, day)
'I eat 5 apples. so I was sick for three days.'
문자열 안에서 숫자를 넣고 싶은 자리에 %d, 삽입할 숫자는 가장 뒤에 있는 % 문자 다음에 쓴다.
문자열을 대입하려면 %s 사용한다.
숫자 값을 나타내는 변수로 대입 가능하다. 2개 이상의 값을 넣고 싶을 때는 마지막 % 다음 ( , ) 콤마로 구분하여 값을 넣어 준다.
숫자 뒤에 %를 붙이고 싶다면 (예: 98%) %d%% <- 이런 식으로 %%를 써야 한다. 문자열 안에 포매팅 연산자가 없으면 %는 홀로 쓰여도 상관 없다.
정렬과 공백: %10s(값을 오른쪽으로 정렬, 나머지는 공백), %-10s(값을 왼쪽으로 정렬, 나머지는 공백)
소수점으로 표현: %0.4f <- 여기서 ' . '의 의미는 소수점 포인트, 뒤의 숫자 4는 소수점 뒤에 나올 숫자의 개수를 말한다.
>>> number = 10
>>> day = "three"
>>> "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.'
format 함수를 사용한 포매팅
2개 이상의 값을 넣을 경우 {0}, {1}과 같은 인덱스 항목이 format 함수의 입력 값으로 순서에 맞게 바뀐다.
{0}은 format 함수의 첫 번째 입력 값인 number로 바뀌고 {1}은 format 함수의 두 번째 입력 값인 day로 바뀐다.
>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
name = value 형태를 혼용하는 것도 가능하다.
왼쪽 정렬: {0:<10} <- 왼쪽으로 정렬, 문자열의 총 자릿수 10으로 맞춘다.
오른쪽 정렬: {0:>10} <- 오른쪽으로 정렬
가운데 정렬: {0:^10}
지정한 값으로 공백 대신 문자로 채워넣는 것도 가능하다. <, >, ^ 바로 앞에 문자를 넣으면 된다.
예) {0:=^10} <- 공백 대신 =로 채워넣는 것이다.
# 1
>>> age = 30
>>> f'나는 내년이면 {age+1}살이 된다.'
'나는 내년이면 31살이 된다.'
# 2
>>> d = {'name':'공정민', 'age':23}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'
'나의 이름은 공정민입니다. 나이는 23입니다.'
위의 예시는 f 문자열 포매팅 기능이다. 변수 값을 생성한 후 표현식을 지원하기 때문에 +, -와 같은 수식(예시 1)을 함께 사용하는 것도 가능하다. 딕셔너리 또한 f 문자열 포매팅에서 위의 예시 2처럼 사용할 수 있다.
문자열 관련 함수들
문자 개수 세기: .count('a') -> 문자 a의 개수를 돌려준다.
위치 알려주기:
.find('a') -> 문자 a가 처음으로 나온 위치를 반환한다. 찾는 문자나 문자열이 존재하지 않는다면 -1을 반환한다.
.index('a') -> 문자 a가 처음으로 나온 위치를 반환한다. 찾는 문자나 문자열이 존재하지 않는다면 오류를 발생시킨다.
문자열 삽입: ",".join('abcd') -> abcd 문자열의 각각의 문자 사이에 ','를 삽입한다. / 리스트, 튜플도 입력 가능
소문자를 대문자로 바꾸기: .upper() / 대문자를 소문자로 바꾸기: .lower()
왼쪽 공백 지우기: .lstrip() / 오른쪽 공백 지우기: .rstrip() / 양쪽 공백 지우기: .strip()
# 1
>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
# 2
>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')
['a', 'b', 'c', 'd']
문자열 바꾸기: replace(바뀌게 될 문자열, 바꿀 문자열) -> 문자열 안의 특정한 값을 다른 값으로 치환
문자열 나누기: split()
-> 괄호 안에 아무 값도 넣어 주지 않으면 공백을 기준으로 문자열을 나눈다.
-> 괄호 안에 특정 값이 있을 경우 그 값을 구분자로 해서 구분한다. => 나눈 값은 리스트에 하나씩 들어간다.
출처: 점프 투 파이썬
스터디 활동
1. 가로는 20cm, 세로는 10cm인 삼각형의 넓이를 구하시오. (변수를 지정해서 구하기)
# 풀이
>>> a = 20
>>> b = 10
>>> a * b / 2
# 답
100.0
2. 각각의 출력 값을 구하시오.
# 문제 1
>>> 6 / 2
3.0
# 문제 2
>>> 6 // 2
3
# 문제 3
>>> 6 % 2
0
3. 각각의 결과 값을 구하시오.
# 문제 1
>>> 60 + 30
90
# 문제 2
>>> '60' + '30'
'6030'
# 문제 3
>>> 'Greenswan' * 2
'GreenswanGreenswan'
# 문제 4
>>> "%-10s jane." % 'hi'
'hi jane.'
# 문제 5
>>> "I eat {0} apples".format(3)
'I eat 3 apples'
4. 문자열이나 자료 값의 길이를 구하기 위해서 사용하는 함수는?
-> 정답: len()
5. 결과 값을 구하시오.
# 문제
>>> a = "Life is too short, You need Python"
>>> a[-11:]
# 답
'need Python'
6. 오류가 발생하는 곳을 찾고 수정하시오.
# 수정 전
>>> a = "Python is the best choice“
>>> a.find(k)
>>> text = a[:5]
>>> print(text.upper())
>>> b = "I only trust Python %d%" %50
# 수정 후
>>> a = "Python is the best choice"
>>> a.find('k')
-1
>>> text = a[:5]
>>> print(text.upper())
PYTHO
>>> b = "I only trust Python %d%%" % 50
>>> print(b)
I only trust Python 50%
'ETC > Green Swan, Python 기초' 카테고리의 다른 글
4주차_함수, 입력과 출력, 파일 읽고 쓰기 (2) | 2022.11.17 |
---|---|
3주차_if문, while문, for문 (0) | 2022.11.09 |
2주차_리스트, 튜플, 딕셔너리, 집합, 불, 변수 (0) | 2022.11.02 |
1주차_과제 (0) | 2022.11.02 |