-
2일차 - 파이썬의 문자열AI 솔루션 개발자과정(Java, Python) 2022. 10. 11. 17:06
문자열 연산자
'문자열 연결 연산자' '+' , '*'
' + '은 더하기 라고 생각 할 수 있는데, 더하기와는 다른 역할을 한다.
파이썬에서 문자열 연산자는 이어붙이는 역할을 한다.하지만, 문자열과 숫자열을 더하면 오류가 발생한다.
정수 1과 문자열 1을 더했을 때 나타나는 오류. 정수과 문자열을 더하는것은 지원하지않는 피연산자 타입 이라고 나온다.
' * '는 문자열을 n번 반복한다안녕하세요를 3번 반복한다. 문자 선택 연산자(인덱싱) '[]'
'문자 선택 연산자'는 문자열 내부의 문자 하나를 선택하는 연산자이다.
* 대괄호[] 안에 선택할 문자의 위치를 지정하며, 이 숫자를 인덱스(index)라고 한다.
* 프로그래밍 언어는 인덱스유형을 크게 두 가지로 구분해서 사용하는데, 숫자를 0부터 세는 '제로인덱스',
다른 하나는 1부터 세는 '원 인덱스'로 구분한다.
* 파이썬은 '제로 인덱스'유형을 사용하는 언어이다. 즉, 문자열의 위치를 셀 때 무조건 0부터 세어 첫번째 글자가 0번째 글자가 된다.
* 대괄호 안의 숫자를 음수로 입력하면 뒤에서부터 선택할 수 있다.
단, 범위를 벗어나는 인덱싱은 에러를 유발한다.문자열 범위 선택 연산자(슬라이싱) '[:]'
* 슬라이싱은 문자열 내부의 문자 범위를 지정할 때 사용하는 연산자이다.
[ : ] 안에 시작범위와 끝범위를 인덱스 번호로 지정하며, 파이썬은 끝번호를 포함하지 않는다.안 녕 하 세 요 의 인덱스 번호는
0 1 2 3 4 로 구분되며, 끝번호는 포함되지 않아서 1, 2, 3의 위치에 있는 문자만 출력된다.
인덱싱은 원하는 문자를 고르는 작업 이라고 할 수 있고,
슬라이싱은 원하는 범위만큼의 문자열을 고르는 작업 이라고 할 수있다.
슬라이싱은 대괄호 안에 넣는 숫자 둘 중 하나를 생략하여 나머지 값을 자동으로 지정할 수 있다.두 작업의 특징은
=> 작업의 대상이 되는 문자열의 원본을 훼손하지 않는다.문자열의 길이 구하기
함수란 : 기능에 이름을 붙인 명령문
함수의 형태는 이름 뒤에 소괄호()가 붙는다.
ex) print() , len() , type() ...
len() 함수를 사용하여 문자열의 길이를 구할 수 있다.
len()함수는 출력기능이 포함되지 않는다.
len함수로 데이터를 구하면, print함수 등으로 출력 하여야 한다.숫자열
소숫점이 없는 숫자를 '정수형(integer)' 이라 하고, 소숫점이 있는 숫자를 '실수형(floating point)' 이라 한다.
정수는 [양수, 0, 음수]로 나뉜다.
실수는 [양의 실수, 음의 실수]로 나뉜다. 실수는 '소수점이 움직이는 숫자' 라는 의미로 '부동 소수점'이라 부른다.
단, 0과 0.0은 같은 크기를 나타낸다 해도, 소수점의 유무에 따라 자료형이 달라지기에 주의해야 한다.파이썬에서는 자료형을 구분할 필요가 없지만, 문자열 선택 연산자[] 등을 사용할 때, 괄호 안에 넣는 숫자가 정수가아니라 실수라면 오류가 발생하는 경우도 있다고 한다.
파이썬에서의 지수 표현
0.522 X 10의 3승 을 표현할 때, 0.522E3 라고 표현할 수 있다.
숫자 연산자 ( +, -, *, /)
정수 나누기 연산자 '//'는 정수부분만 남기고 소수점 이하의 자릿수는 버리는 연산자이다.나머지 연산자 '%'는 A를 B로 나눈 값의 나머지를 구하는 연산자이다.
ex) print(5 % 2) = 1 (2와 1 이므로 2는 버리고 1만 출력한다.)제곱 연산자 '**' 는 숫자를 제곱하는 연산자이다. 수학에서 2의 4승은 파이썬에서 2**4로 표현한다.
ex) (2 ** 1) = 2, (2 ** 2) = 4, (2 ** 3) = 8
연산자의 우선순위
사칙연산에 따라 곱셈과 나눗셈이 덧셈과 뺄셈보다 우선한다.
같은 우선순위를 가지는 곱셈과 나눗셈은 왼쪽에서 오른쪽 순서로 계산한다. A + B * C 에서 A + B을 먼저 계산하고 싶을 때, A + B를 괄호로 감싸준다.
(A + B) * C
숫자를 연산할 때, 괄호를 동일한 괄호로 감쌀 수 있다.변수
'변수'는 값을 저장할 때 사용하는 '식별자' 이다. * 식별자는 이름을 붙일 때 사용하는 단어이다.
변수는 "변할 수 있는 자료"(모든 자료형을 의미한다.)이다.pi 를 3.1415라고 저장하였을 때, pi를 입력하면 3.1415가 출력된다.
대입 연산자 : 오른쪽 표현식을 왼쪽 변수에 할당한다.
복합 대입 연산자 : 자료형에 적용하는 기본 연산자과 '='연산자를 함께 사용하여 연산한다.복합 대입 연산자의 종류는 += , -= , *= , /= , %=, **= 이 있다.
a += 1 a에 1을 더한 후 대입하여 a = a+1이 된다.
a -= 1 a에 1을 뺀 후 대입하여 a = a-1이 된다
a *= 1 a에 1을 곱한 후 대입하여 a = a+1이 된다.
a /= 1 a에 1을 나눈 후 대입하여 a = a+1이 된다.
a %= 1 a에 1을 나머지를 구한 후 대입하여 a = a+1이 된다.
a **= 1 a에 1을 제곱한 후 대입하여 a = a+1이 된다.
복합 대입 연산자는 문자열에도 적용할 수 있다.사용자 입력 함수 : input()
명령프롬프트에서 사용자로부터 데이터를 입력받을 때 사용한다.
input()과 같이 함수의 결과로 나오는 값을 '리턴값'이라고 한다.실행하면 이처럼 문자열이 뜨고 프로그램이 종료되지 않는데, 이를 '블록'이라고 한다. input()함수가 사용자에게 자료 입력을 요구하면서 코드 진행을 잠시 블록하고 있는것이다.
이와 같이 변수에 대입하는것도 가능하다.
input()함수의 반환값은 언제나 문자열이다.
숫자를 input()함수로 대입하여도 언제나 문자열로 입력되서, 숫자와 연산할 경우 에러가 유발된다.
문자열을 숫자로 바꾸기 (cast)
int()함수를 이용하여 문자열을 정수로 바꿔주면, 다음과 같이 숫자와 연산을 할 수 있다.
float()함수를 이용하여 실수형 자료또한 연산 가능하다.숫자를 문자열로 바꾸기.
str()함수를 사용하면 숫자를 문자열로 변환할 수 있다.
숫자와 문자열의 다양한 기능.
문자열의 format() 함수
format()함수는 문자열이 가지고 있는 함수이다.
중괄호{}를 포함한 문자열 뒤에 마침표(.)를 찍고 format()함수를 사용하는데,
중괄호의 갯수와 format()함수 괄호 안의 매개변수의 개수는 반드시 같아야 한다.이와 같이 숫자 10이 문자열로 변환되었다.
format이라는 함수는 {} 기호를 format의 괄호 안에 있는 매개변수로 대체하는 것뿐이기 때문에 {} 기호 앞뒤 혹은 {} 기호와 {} 기호 사이에 다양한 문자열을 넣을 수 있다.
{} 기호의 개수가 format() 함수의 매개변수 개수보다 많으면 IndexError 예외가 발생합니다.
format() 함수의 다양한 형태. d = 정수 , f = 실수
정수 출력의 다양한 형태.
"{}".format(100) = "100"
"{:d}".format(100) = "100"
"{:+10d}".format(100) = " +100" # +기호를 사용하여 양수, 음수를 기호로 표현할 수 있다.
"{:=+10d}".format(100) = "+ 100" # =는 기호를 빈칸의 앞으로 옮긴다.
"{: d}".format(100) = " 100" # 매개변수의 앞에 빈칸을 추가한다.
"{:10d}".format(100) = " 100" # 문자열의 길이를 10칸으로 출력한다.
"{:010d}".format(100) = "0000000100" # 문자열의 길이를 10칸으로 출력하되, 빈칸을 0으로 변환한다.조합의 순서가 달라지면 출력이 이상해진다.
{:=+05d} 를 {:0+5d}처럼 입력하면 전혀 다른 형태가 나오거나 에러를 유발한다.
부동 소수점 출력의 다양한 형태.
"{:f}".format(3.14) = 기본적으로 소수점아래 6자리까지 출력된다.의미 없는 소수점 제거하기.
"{:g}".format(52.0) = 의미 없는 소수점을 제거한다.대소문자 바꾸기. uper() , lower()
문자열과 관련된 함수를 사용할 때, 함수를 사용하면 원본의 문자열이 바뀔것으로 생각할 수 있는데,
함수의 원본은 비파괴적 함수(immutable data)이다
upper() : 문자열을 대문자로 변경한다.
lower() : 문자열을 소문자로 변경한다.문자열 양옆의 공백 제거하기. strip()
strip() : 문자열 양 옆의 공백을 제거한다.
lstrip() : 문자열 왼쪽의 공백을 제거한다.
rstrip() : 문자열 오른쪽의 공백을 제거한다.문자열의 구성 파악하기. isOO()
* isalnum() : 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인한다.
* isalpha() : 문자열이 알파벳으로만 구성되어 있는지 확인한다.
* isdentifier() : 문자열이 식별자로 사용할 수 있는 것인지 확인한다.
* isdecimal() : 문자열이 정수 형태인지 확인한다.
* isdigit() : 문자열이 숫자로 인식될 수 있는 것인지 확인한다.
* isspace() : 문자열이 공백으로만 구성되어 있는지 확인한다.
* islower() : 문자열이 소문자로만 구성되어 있는지 확인한다.
* isupper() : 문자열이 대문자로만 구성되어 있는지 확인한다.문자열 함수 중 is~~ 유형의 함수들은 결과가 반드시 둘 중 하나이다. => True or False (bool)
문자열 찾기. find(), rfind()
문자열과 in 연산자 # 문자열의 포함 여부를 확인한다.
in 연산자 역시 출력은 True 혹은 False 라고 나타낸다.
문자열 자르기. split() # 괄호 안에 있는 것을 기준으로 자른다.
f - 문자열
format()함수를 더 간단하게 사용하는 f-문자열.
이와 같이 간단하게 나타낼 수 있다.
f-문자열 보다 format()함수를 사용하는 것이 더 좋은 경우가 있다.
1. 문자열 내용이 너무 많을 때.
이러한 상황에서는 데이터를 뒤에 모아서 볼 수 있는 format()함수가 유용하다.
2. 데이터를 리스트에 담아서 사용할 때.리스트를 대입만 하면 되는 경우, format()함수가 더 간략하게 작성할 수 있어 유용하다.
'AI 솔루션 개발자과정(Java, Python)' 카테고리의 다른 글
6일차 - 파일 처리와 예외 처리 (0) 2022.10.18 5일차 - 함수와 람다 (2) 2022.10.14 4일차 딕셔너리와 반복문 (0) 2022.10.13 3일차 - 불 자료형과 if 조건문 (0) 2022.10.13 파이썬 개발자과정 1일차 - 파이썬에 대하여 (0) 2022.10.07