1주 - 2장 자료
Ch. 01 자료형
자료형과 문자열
자료형과 기본 자료형
문자열 : 메일제목,메세지 내용 등 -> 안녕하세요, “hello world”
숫자 : 물건의 가격, 학생 성적 등 -> 52,273,111
불 : 친구의 로그인 상태 -> True,False
자료형을 알아야하는 이유
프로그램의 가장 작은 단위인 데이터(자료)룰 모아 더욱 큰 자료형을 만들어가다 보면 거대한 프로그램이 만들어진다.
그러니 가장 작은 단위의 자료를 아는것은 매우 중요하다.
자료형 확인하기
자료형이란 자료의 형식을 말한다.
확인하기 위한 함수 type()함수
1
2
print(type("안녕하세요")) #class str
print(type(52)) #class int
문자열 만들기
문자열 : str,string 으로 쓰이며 글자들이 나열된 것을 문자열로 부름
"”나 ‘‘로 둘러싸 입력한 것은 모두 문자열로 보면됨
큰따옴표로 문자열 만들기
1
print("냐옹냐옹") #냐옹냐옹
작은따옴표로 문자열 만들기
1
print('냐옹냐옹') #냐옹냐옹
문자열 내부에 따옴표 넣기
작은 따옴표 안에 큰 따옴표를 넣거나
큰 따옴표 안에 작은따옴표를 넣음
1
print("'냐옹냐옹'") #'냐옹냐옹'
1
print('"냐옹냐옹"') #"냐옹냐옹"
이스케이프 문자를 사용해 문자열 만들기
1
print("\"안녕하세요\"라고 말했습니다.") #"안녕하세요"라고 말했습니다.
\ : 이스케이프 문자를 사용하여 문장 중간에 ““를 추가할 수 있음
\n : 줄바꿈을 의미함
\t : 탭을 의미함
\\ : 역슬레시를 의미함
1
2
3
4
5
print("냐옹\n냐옹")
#냐옹
#냐옹
print("냐옹\t냐옹") #냐옹 냐옹
print("냐옹\\냐옹") #냐옹\냐옹
여러 줄 문자열 만들기
큰따옴표 또는 작은 따옴표 3번연속 입력하면 문자열 그대로 출력함
1
2
3
4
5
6
print("""
냐옹냐옹
혼공단
1주차
화이팅
""")
위 아래 줄 바꿈을 막기 위해 \ 를 사용하면 줄바꿈 없이 사용가능
1
2
3
4
5
6
print("""\
냐옹냐옹
혼공단
1주차
화이팅팅\
""")
문자열 연산자
문자열 연결 연산자 +
+기호로 문자열 연결 연산을 적용 할 수 있다.
문자열 + 문자열 = 문자열문자열
1
2
3
print("안녕"+"하세요") #안녕하세요
print("안녕하세요"+"!") #안녕하세요!
print("안녕하세요"+1) #문법에러 발생
문자열 반복 연산자 *
*연산자로 숫자와 연결하면 반복할 수 있다.
1
2
print("안녕"*3) #안녕안녕안녕
print(3*"안녕") #안녕안녕안
문자 선택 연산자(인덱싱) []
문자 선택 연산자는 문자열 내부 문자를 하나 선택하는 연산자이며 [ ] 안에 숫자를 넣어 선택
안 | 녕 | 하 | 세 | 요 |
---|---|---|---|---|
[0] | [1] | [2] | [3] | [4] |
이때 인덱스 넘버는 0부터 시작합니다.
1
2
3
4
5
6
print("문자선택연산자")
print("안녕하세요"[0])
print("안녕하세요"[1])
print("안녕하세요"[2])
print("안녕하세요"[3])
print("안녕하세요"[4])
문자열 범위 선택 연산자(슬라이싱) : [:]
문자열의 특정 범위만을 선택하는 연산자
1
print("문자 범위 선택연산자" [:9])
선택 범위 : [시작번호: 끝번호-1] – 예시 [0:2] – 0번과 1번 출력함
둘중 하나를 생략하면 처음부터 또는 끝까지로 자동으로 지정함
[:3] - 처음부터 2번까지
[4:] - 4번부터 끝까지
IndexError(index out of range)
인덱스 범위를 벗어난 숫자를 선택하면 발생하는 오류
1
print("안녕하세요"[9])
인덱스 범위를 벗어나 숫자를 지정할 경우 오류 발생
문자열 길이 구하기
len()함수를 사용하여 길이를 구함
1
print(len("hello")) # 5
숫자
숫자의 종류
정수 : int로 표현되며 소수점이 없는 숫자
부동소수점(실수) : float 로 표현되며 소수점이 있는 숫자
숫자 연산자
사칙연산 +-*/
매우 간단한 사칙연산자 그대로 사용하면 된다
정수 나누기 연산자 //
소수점이 나오면 때고 정수만 출력함
1
2
print(3/2) # 1.5
print(3//2) # 1
나머지 연산자 %
나눗셈 후 나머지 값을 출력함
1
2
3
print(5/2) # 2.5
print(5//2) # 2
print(5%2) # 1
제곱연산자 **
말 그대로 앞자리수의 몇승을 곱할것인지 계산
1
2
3
print(2**2) #4
print(2**3) #8
print(2**4) #16
연산자 우선순위
우리가 익히아는 사칙연산 우선순위와 같이 계산한다.
(괄호)부터 곱셈(*) 나눗셈(/) 그리고 덧셈(+),뺼셈(-) 이런 순위로 계산하면 쉽다.
변수와 입력
변수란 값을 저장할때 사용하는 식별자를 뜻함
변수 만들기/사용하기
변수를 선언 pi
변수에 값을 할당 pi =3.14
변수를 참조하여 사용 pi-2
1
2
3
pi = 3.14
pi -2 #1.14
pi +2 #5.14
이때에도 똑같이 pi는 같은 자료형과 연산해야지 문법 오류가 안납니다.
pi + 문자열 연산시 문법 오류 발생
1
2
3
4
5
6
7
8
#변수 선언과 할당
pi= 3.14
r= 10
print("원주율=",pi)
print("반지름=",r)
print("원의 둘레=",2*pi*r)
print("원의 넓",pi*r*r)
복합 대입 연산자
연산자 | 설명 | 예제 코드 | 결과 |
---|---|---|---|
+= |
덧셈 후 대입 | x += 3 |
x = x + 3 |
-= |
뺄셈 후 대입 | x -= 2 |
x = x - 2 |
*= |
곱셈 후 대입 | x *= 4 |
x = x * 4 |
/= |
나눗셈 후 대입 (실수형) | x /= 2 |
x = x / 2 |
//= |
나눗셈 후 대입 (정수형) | x //= 3 |
x = x // 3 |
%= |
나머지 연산 후 대입 | x %= 5 |
x = x % 5 |
**= |
거듭제곱 후 대입 | x **= 2 |
x = x ** 2 |
사용자 입력 : input()
input() :사용자 입력을 받을 수 있는 함수
input()함수로 사용자 입력받기
1
2
string = input("인사말을 입력하세요") #안녕하세요 입력
print(string) #안녕하세요 출력
input()함수의 자료형
input() 함수에 입력한 모든 자료형은 모두 문자열로 변환됨
숫자,참거짓같은 불 값도 모두 문자열로 나옴
문자열을 숫자로 바꾸기
int() : 문자열을 정수 자료형으로 변환
float() : 문자열을 소수 자료형으로 변환
ValueError예외
숫자가 아닌것을 숫자로 변환하려 할때
소수점이 있는 수자형식의 문자열을 int()로 변환할떄
숫자를 문자열로 바꾸기
str(다른 자료형)으로 변환하여 연산가능하게 함
1
2
3
4
a = 123
b= "hello"
string_a = str(a)
print(string_a+b) # 123hello
숫자와 문자열의 다양한 기능
문자열의 format()함수
format() : 문자열 안에 매개변수를 사용하기 위한 포메팅 함수
1
2
3
string_a="{}".format(10)
print(string_a) #10
print(type(string_a)) #<class 'str'>
1
2
3
4
5
6
7
8
9
format_a="{}만원".format(5000)
format_b="파이썬 열공하여 연봉{}만원 만들기기".format(8000)
format_c="{} {} {}".format(3000,4000,5000)
format_d="{} {} {}".format(1, "문자열", True)
print(format_a) #5000만원
print(format_b) #파이썬 열공하여 연봉8000만원 만들기기
print(format_c) #3000 4000 5000
print(format_d) #1 문자열 True
indexError예외
{}기호의 개수가 format()함수의 매개변수보다 많으면 에러가 발생함
format()함수의 다양한 기능
정수 출력의 다양한 형태
정수를 특정한 칸에 출력하기
1
2
3
4
5
6
7
8
9
10
11
12
13
output_a = "{}".format(52)
output_b = "{:5d}".format(52)
output_c = "{:10d}".format(52)
output_d = "{:05d}".format(52)
output_e = "{:05d}".format(-52)
print(output_a) #52
print(output_b) # 52
print(output_c) # 52
print(output_d) #00052
print(output_e) #-0052
대소문자 바꾸기 upper()와 lower()
upper() : 문자열 알파벳을 모두 대분자로 바꿈
lower() : 문자열 알파벳을 모두 소문자로 바꿈
1
2
3
msg = "HelloWorld"
print(msg.upper()) #HELLOWORLD
print(msg.lower()) #helloworld
문자열 양옆의 공백 제거하기 strip()
strip() :문자열 양옆의 공백을 제거함
1
2
3
4
5
6
7
a= """
안녕하세요
문자열 함수를 알아봅시다
"""
print(a.strip())
#안녕하세요
#문자열 함수를 알아봅시다.
이러한 기능들을 trim이라고 부르기도 합니다.
문자열의 구성 파악하기 isOO()
isalnum():문자열이 알파벳 또는 숫자로만 구성?
isalpha(): 문자열이 알파벳으로 구성?
isidentifier(): 문자열일 식별자로 사용할 수 있는것?
isdecimal(): 문자열이 정수 형태인가?
isdigit(): 문자열이 숫자로 인식되는가?
isspace(): 문자열이 공백으로만 구성되어있나?
islower(): 문자열이 소문자로 구성되어있나?
isupper(): 문자열이 대문자로 구성되어있나?
문자열 찾기 find()
find():왼쪽부터 찾아서 처음 등장하는 위치를 찾음
rfind()오른쪽부터 찾아서 처음 등장하는 위치를 찾음
1
2
3
4
5
output_a = "안녕안녕하세여".find(안녕)
print(output_a) #0번째
output_b = "안녕안녕하세여".rfind(안녕)
print(output_b) #2번째