[Python] 숫자, 문자열 이해하기

jae.y·2022년 9월 22일
1

🎯 목표 설정

자료형에 대해 이해해 봅시다.

📝 오늘 공부한 내용

자료형은 데이터의 '종류'를 말하며 영어로는 Type이라고 합니다. 정수라면 integer 타입, 실수라면 float 타입, 이름과 같이 문자 형태라면 string 타입 등 데이터 종류에는 여러가지 타입이 있습니다.

1. 파이썬의 숫자

우선 여러가지 자료형 중, 숫자에 대해 알아봅시다.
파이썬에서 수는 정수(int)실수(float)로 구분되며 천단위 구분기호 없이 오로지 숫자로만 구성된 데이터입니다.
정수(integer)는 소수점 이하의 값을 갖지 않는 수이며 표현 방식은 부호 없는 정수(unsigned integer)와 부호 있는 정수(signed integer)로 나눌 수 있습니다.
실수(floate)는 소수점 이하의 값을 갖는 수이며 정수 표현 방식과 달리 부동 소수점(floating point) 방식을 사용합니다.

참고 : 부동 소수점 이해하기

📍코드로 실습하기

12345 # 정수
12.345 # 실수
0.12345 # 실수

print(type(12345)) # int
print(type(12.345)) # floate

👀 만약, 숫자 외 기호가 추가된다면?

  • 아래는 colab에서 실행시킨 코드로, colab과 jupyter notebook에선 print 구문을 사용하지 않아도 다음과 같이 출력이 가능하다.
  • 오류 메세지 중 TypeError는 자료형이 맞지 않거나 함수 호출 규약이 틀리면 발생합니다. 즉, 데이터 유형과 관련된 오류라는 뜻입니다.
  • type() takes 1 or 3 arguments라는 오류 메세지는 type 함수에 1개 또는 3개의 arguments를 담아야한다는 뜻입니다. 아래 코드에선 1,000 즉 2개의 전달인자가 입력되었기 때문에 발생한 것으로 보입니다.
  • 코드를 입력하는 과정엔 수많은 오류 메세지를 보게 될 것입니다. 발생한 오류를 보고 어떤 문제 때문에 발생한 것인지를 알아보는 것은 실력 향상에 큰 도움이 될 것입니다.


📍퀴즈로 복습하기

Q1) 다음 중 숫자인 것은?
① "310"
② 22-12-25
③ 20,000
④ I

Q1) 정답 및 해설
① : ""(큰따옴표)로 묶여진 것으로 파이썬에서는 문자열로 인식합니다.
③ : 숫자와 기호가 함께 사용되면 문법 에러가 발생됩니다.
④ : 숫자 1이 아닌 문자 i 입니다.
정답② : 22-12-15는 연산기호인 (-)가 들어갔기 때문에 22-12-15=-5 이므로 int 입니다.



1.1) 숫자 연산

파이썬의 숫자는 덧셈, 뺄셈, 곱셈, 나눗셈의 사칙연산과 제곱, 나누기 연산 후 몫 또는 나머지를 구할 수 있습니다.
특히, 거듭 제곱(**)은 정수형 상수의 표현 범위는 제한이 없으며, CPU 레지스터로 표현할 수 있는 크기보다 큰 정수를 다룰 때는 연산 속도가 느려집니다.

📍코드로 실습하기

# 덧셈(+)
>>> 1 + 4
5

# 뺄셈(-)
>>> 6 - 8
-2

# 곱셈(*)
>>> 4 * 8
32
>>> 4.0 * 8.0
32.0

# 나눗셈(/)
>>> 9 / 3
3.0
>>> 10 / 4 
2.5

👀 위 코드에서 무엇을 알 수 있나요?
1. 나눗셈의 결과는 항상 실수(float)형태입니다.
2. 나눗셈을 제외한 나머지 연산에서는 데이터가 정수형태로만 구성될 시, 정수로 실행되고 실수가 하나 이상 포함되면 결과는 실수로 발생합니다.

👀 파이썬의 숫자는 사칙연산 외 연산자도 사용할 수 있습니다. 아래 코드를 봅시다.

# 제곱(**) 
>>> 2 ** 3
8

# 나눗셈 후 몫 반환(//)
11 // 2
5

# 나눗셈 후 나머지 반환(%)
23 % 5
3

📍퀴즈로 복습하기

Q2) 다음 코드의 출력 값들은?

#1번
15.0 * 2 
#2번
4 ** 3
#3번 
12 / 6
#4번
23 % 4
#5번
2 + 5 * 7
#6번
(3 + 2) // 2

Q2) 정답 및 해설
1번 : 30.0 (float와 int 두 유형의 데이터가 계산될 시, float로 출력됩니다.)
2번 : 64 (4*4*4)
3번 : 2.0 (나눗셈을 하게 되면 float로 출력됩니다.)
4번 : 3 (23/4는 몫이 5, 나머지가 3입니다.)
5번 : 37 (연산은 *,/+,-보다 먼저 이루어집니다.)
6번 : 2 (괄호 안에 있는 연산을 우선으로 5//2가 됩니다. 몫은 2, 나머지는 1입니다.)

👀 위 코드에서 무엇을 알 수 있나요?
1. 연산은 우선적으로 해야 될 요소가 없을 시, 왼쪽에서 오른쪽으로 수행합니다..
2. 괄호의 연산 순서는 소괄호 ▶ 중괄호 ▶ 대괄호 순 입니다.
3. 부호의 연산 순서는 (*와 /) ▶ (+와 -) 순 입니다.


2. 파이썬의 문자열

문자열(string)이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다. 예를 들어 다음과 같은 문자열이다.

"내 이름은 김삼순"
"The Zen of Python"
"12345"

위 문자열을 보면 모두 큰따옴표("")로 둘러싸여 있다.
파이썬에서 문자열은 여러 줄의 문장을 처리할 때 백슬래시 문자와 소문자 n을 조합한 \n 이스케이프 코드를 사용합니다.

2.1) 문자열 연산

파이썬에서는 문자열을 더하거나 곱할 수 있습니다. 다른 언어에서는 쉽게 찾아볼 수 없는 재미있는 기능입니다. 추상화가 잘 되어있는 파이썬 언어만의 장점인 문자열을 더하거나 곱하는 방법을 배워봅시다.

💡 문자열 연산 중 더하기 기능은 동일한 데이터 type에서만 허용됩니다.

2.1.1) 문자열 더해서 연결하기

📍코드로 실습하기

>>> print("점심" + "메뉴" + "추천")
'점심메뉴추천'

👀 만약, 문자열과 숫자를 더한다면?

  • 오류 메세지 중 TypeError는 자료형이 맞지않거나 함수 호출 규약이 틀리면 발생한다는 것을 배웠습니다.
  • Can only concatenate str (not "int") to str 라는 오류는 str만 str에 연결할 수 있다는 뜻입니다.
  • 즉, str엔 str 형태만 연결시킬 수 있지만 type이 int인 3000을 연결시켜서 난 오류입니다.

👩🏻‍💻 코드를 옳게 수정하려면?
- 3000 => "3000"으로 바꾸는 방법
- 3000 => str(3000)으로 바꾸는 방법
- f-string 이용

이때, str()를 이용하면 str이 아닌 type을 문자열로 반환합니다.

>>> print("짜장면 가격은" + str(3000))
'짜장면 가격은 : 3000'
# f-string을 이용해 문자열과 숫자를 한번에 처리해 봅시다.
 print(f"짜장면 가격은 : {3000}")
'짜장면 가격은 : 3000'

2.1.2) 문자열 곱해서 반복하기

📍코드로 실습하기

>>> print("안녕하세요" * 2)
'안녕하세요안녕하세요'

위 소스 코드에서 *의 의미는 숫자 곱하기의 의미와는 다릅니다. 위 소스 코드에서의 문장은 "안녕하세요"를 2번 반복하라는 뜻입니다.
*는 문자열의 반복을 뜻하는 의미로 사용됩니다.

📍코드 응용하기

lunch = input("추천해줄 점심 메뉴를 입력해주세요 : ")
dinner = input("추천해줄 저녁 메뉴를 입력해주세요 : ")

print("=" * 30)
print(f"점메추 : {lunch}")
print("=" * 30)
print(f"저메추 : {dinner}")

위 소스 코드에서 *를 이용해 두 문장을 구분하는 구분선을 만들어보았습니다.

2.2) 문자열 인덱싱, 슬라이싱

"Python"이라는 문자열 중에서 "Py"라는 글자만 구하고 싶다면 인덱싱슬라이싱을 이해하면 됩니다.
파이썬에서는 슬라이싱(slice) 기능을 제공하는데, 다음과 같이 가져오고 싶은 문자열의 범위를 지정하면 됩니다.

# index 익히기
>> phone_num = "010-5060-****"
>> print(phone_num[1])
'1'
# slice 익히기, 010만 출력해 보겠습니다.
>> phone_num = "010-5060-****"
>> print(phone_num[:3])
'010'

참고 : 인덱싱, 슬라이싱

2.3) 문자열 함수

문자열 내 가지고 있는 함수를 의미하며 내장함수라고 칭하기도 합니다.
형태 : (변수이름.)

1. 소문자로 변환 : .lower()
2. 대문자로 변환 : .upper()
3. 양끝 공백 제거 : .strip()
4. 문자열 길이 : len(변수이름)
5. 사용가능한 함수 목록 보기 : dir(변수이름)

참고 : 문자열 함수 알아보기


🧨 어려웠던 내용

해당 교육 과정에 참여하기 전, 파이썬에 대한 강의를 짧게 들은 적이 있습니다.
3시간 10분 강의였는데요, python 강의를 몰아보고싶은 분들은 참고하시면 좋을 것 같습니다.

참고 : 파이썬 강의 몰아보기

👩🏻‍💻 보충한 내용

교육 과정에서 배운 내을 base로 하되, 더 자세히 공부하려고 노력했습니다.
실습 내용을 직접 만들어 보는 등 학습 내용을 보충하였습니다 :)

🤔 느낀점

배워야 할 내용이 정말 많다고 느꼈습니다. 파이썬을 미리 학습한 경험이 있어서 강의를 쉽게 따라갔지만 이후에 Pandas, EDA 등의 내용을 배울 때를 대비해 미리 파이썬을 정복할 것입니다!

📄 참고문헌

1. 점프 투 파이썬
2. Python 언어 공부

profile
데이터 분린이 :)

0개의 댓글