자료형과 문자열
# 자료형 확인
type() 함수 사용
>>>print(type("안녕하세요"))
<class 'str'>
>>>print(type("273"))
<class 'int'>
# 문자열 만들기
큰/작은 따옴표: "", ''
이스케이프 문자: 역슬래시(\)와 함께 사용하는 특수 문자
\": 큰따옴표를 의미함
\': 작은따옴표를 의미함
\\: 역슬래시(\)를 의미함
>>>print("\"안녕하세요\"라고 말했습니다.")
"안녕하세요"라고 말했습니다.
>>>print('\'배가 고픕니다\'라고 생각했습니다.')
'배가 고픕니다'라고 생각했습니다.
>>>print("\\ \\ \\ \\")
\ \ \ \
# 여러 줄 문자열 만들기
1. 이스케이프 문자 중, \n 을 이용 시 줄바꿈이 가능함
2. """ 이용 시, Enter 입력 값이 모두 줄바꿈으로 변경됨
# 줄바꿈 없이 문자열 만들기
실질적인 줄바꿈이 아닐 시, 줄 뒤에 \기호 사용
# 문자열 연산자
문자열 연결 연산자: +
문자열 반복 연산자: *
문자 선택 연산자(인덱싱): []
문자열 내부의 문자 하나를 선택하는 연산자이며,
대괄호[] 안에 선택할 문자의 위치를 지졍하며, 이 숫자를 인덱스라고 함
제로 인덱스: 숫자를 0부터 카운트 -> 파이썬은 제로 인덱스를 사용
원 인덱스: 숫자를 1부터 카운트
문자열 범위 선택 연산자(슬라이싱): [:]
:(콜론)으로 문자의 범위를 지정
>>>print("안녕하세요"[1:4])
녕하세
!이때, 뒤의 숫자는 -1범위까지만 선택됨
앞/뒤의 값 생략 가능
[1:]
[:3]
# 문자열 길이 구하기
len() 함수 사용
>>>print(len("안녕하세요"))
5
IndexError(index our of range) 예외
- 리스트/문자열의 수를 넘는 요소/글자 선택 시 발생
>>>print("안녕하세요"[10])
IndexError: string index out of range
숫자
# 숫자의 종류
int: 정수
float: 부동소수점(실수)
# 숫자 연산자
사칙 연산자: +, -, *, /
정수 나누기 연산자: // (소수점 이하의 자릿수는 제외함)
나머지 연산자: %
제곱 연산자: **
# 연산자의 우선순위
숫자 계산 시, *(곱셈)과 /(나눗셈)이 +(덧셈)과 -(뺄셈)보다 우선함
그러므로, 우선 연산되어야 할 부분에 괄호로 감싸주는 것이 좋음
TypeError 예외
- 문자열과 숫자 연산 시, 출동함
>>>string = "문자열"
>>>number = 273
>>>string + number
TypeError: can only concatenate str (not "int") to str
변수와 입력
# 변수 선언
변수 = 값
# 복합 대입 연산자
a += 10
=
a = a + 10
# 사용자 입력: input()
input()함수의 자료형은 'str'(문자열)이다.
# 문자열을 숫자로 변경하기
int()함수: 문자열 -> int(정수)로 변환
float()함수: 문자열 -> float(실수)로 변환
# 숫자를 문자로 변경하기
str() 함수: 문자열로 변환
ValueError 예외
- 1. 숫자가 아닌 것을 숫자로 변환 시 발생
- 2. 소수점이 있는 숫자 형식의 문자열을 int() 함수로 변환 시 발생
참고 사이트
- 파이썬 튜터: https://pythontutor.com/(코드를 시각적으로 분석해줌)
숫자와 문자열의 다양한 기능
# 문자열의 format() 함수
중괄호에 format() 함수 안에 있는 매개 변수가 차례로 대치됨.
이때, 중괄호의 개수와 format 함수 괄호 안 매개변수의 개수는 반드시 같아야 한다.
"{}".format(10)
"{}{}".format(10, 20)
"{}{}{}{}{}".format(101, 202, 303, 404, 505)
# format() 함수의 다양한 기능
정수 출력의 다양한 형태
>>>output_a = "{:d}".format(52) #{:d} 사용 시, 매개변수로 정수만 올 수 있음
>>> # 특정 칸에 출력하기
>>>output_b = "{:5d}".format(52) #5칸
>>>output_c = "{:10d}".format(52) #10칸
>>># 빈칸을 0으로 채우기
>>>output_d = "{:05d}".format(52) #양수
>>>output_e = "{:05d}".format(-52) #음수
>>># 기호와 공백 조합 시, = 기호를 앞에 붙일 수 있음
>>>output_j = "{:=+5d}".format(52)
>>>output_k = "{:=+5d}".format(-52)
# 부동 소수점 출력의 다양한 형태: {:f}
소수점 아래 지정
>>>ouput_a = "{:15.3f}".format(52.273) # 52.273
>>>ouput_b = "{:15.2f}".format(52.273) # 52.27
>>>ouput_c = "{:15.1f}".format(52.273) # 52.3 (자동 반올림 발생)
# 의미 없는 소수점 제거하기: {:g}
output_a = 52.0 # 52.0
output_b = "{:g}".format(output_a) # 52
# 대소문자 바꾸기: upper()와 lower() (*원본은 변하지 않음)
upper(): 소문자 -> 대문자
lower(): 대문자 -> 소문자
# 문자열 양옆의 공백 제거하기: strip()
strip(): 양쪽 공백 제거
lstrip(): 왼쪽 공백 제거
rstrip(): 오른쪽 공백 제거
# 문자열의 구성 파악하기: isOO()
inalnum(): 문자열이 알파벳 or 숫자로만 구성되어 있는지 확인
isalpha(): 문자열이 알파벳으로만 구성되어 있는지 확인
isidentifier(): 문자열이 식별자로 사용할 수 있는지 확인
isdecimal(): 문자열이 정수 형태인지 확인
isdigit(): 문자열이 숫자로 인식될 수 있는지 확인
isspace(): 문자열이 공백으로만 구성되어 있는지 확인
islower(): 문자열이 소문자로만 구성되어 있는지 확인
isupper(): 문자열이 대문자로만 구성되어 있는지 확인
# 문자열 찾기: find()와 rfind()
find(): 왼쪽부터 시작하여 처음 등장하는 위치를 찾음
rfind(): 오른쪽부터 시작하여 처음 등장하는 위치를 찾음
# 문자열과 in 연산자 -> 출력은 True/False
>>>print("안녕" in "안녕하세요")
>>>True
# 문자열 자르기: split()
>>> a= "10 20 30 40 50".split(" ")
>>>print(a)
['10', '20', '30', '40', '50']
# f-문자열
f'문자열{표현식}문자열'
>>> f'{10}'
>>>f"3 + 4 = {3 + 4}"
>>>'3 + 4 = 7'
IndexError 예외
- {} 기호의 개수가 format() 함수의 매개변수 개수보다 많으면 발생
도전 문제
1. 구의 부피와 겉넓이
# 변수 지정
r = input("구의 반지름을 입력해주세요: ")
pi = 3.141592
v = 4/3 * pi * int(r) ** 3
s = 4 * pi * int(r) ** 2
# 출력하기
print("= 구의 부피는", v, "입니다.")
print("= 구의 겉넓이는", s, "입니다.")
# 결과
구의 반지름을 입력해주세요: 5
= 구의 부피는 523.5986666666666 입니다.
= 구의 겉넓이는 314.1592 입니다.
2. 피타고라스의 정리
# 변수 지정
a = float(input("밑변의 길이를 입력해주세요: "))
b = float(input("높이의 길이를 입력해주세요: "))
# 빗변 계산
c = ((a ** 2) + (b ** 2)) ** (1/2)
# 출력
print("= 빗변의 길이는", c, "입니다.")
# 결과
밑변의 길이를 입력해주세요: 3.0
높이의 길이를 입력해주세요: 4.0
= 빗변의 길이는 5.0 입니다.