핵심 자료형 in Python

타키탸키·2021년 1월 2일
0

Python 입문하기

목록 보기
1/14

프로그래밍 언어 사이에는 공유하고 있는 개념들이 참 많습니다. 이번 시간에는 Python을 통해 프로그래밍의 핵심 자료형 개념들을 함께 배워봅시다.

🦾 숫자형 연산

지난 시간에는 숫자형과 그 기본 연산을 배웠었는데요. 이번에는 여러 사칙 연산의 결과를 살펴봅시다.

# 덧셈
print(3 + 7)

# 뺄셈
print(4 - 5)

# 곱셈
print(2 * 6)

이 코드의 결괏값은 각각 10, -1, 12로 출력됩니다. 이처럼 Python에서 정수형 연산의 결괏값은 마찬가지로 정수형이 나옵니다.

이번에는 나머지 연산과 거듭제곱 연산을 해보겠습니다.

# 나머지
print(9 % 2)

# 거듭제곱
print(2 ** 4)

이 코드의 결괏값은 각각 1, 16으로 출력됩니다. 9 나누기 2의 연산에서 몫은 4와 나머지 1이 나오므로 1이 출력되고 ** 뒤의 수는 지수이기 때문에 2를 네 번 곱한 16이 출력됩니다.

만약 지금까지 했던 연산을 모두 소수형으로 바꾸면 어떻게 될까요? 마찬가지로 소수형이 결괏값으로 출력됩니다.

그렇다면 정수형과 소수형을 함께 연산했을 때는 어떤 결괏값이 나올까요? Python에서는 소수형의 힘이 쎄기 때문에 연산 안에 소수형이 하나라도 있으면 모두 소수형이 출력됩니다.

덧셈, 뺄셈, 곱셈, 나머지까지 연산해봤는데 아직 나오지 않은 연산이 하나 있죠? 바로 나눗셈입니다. 나눗셈은 독특한 결과를 출력합니다.

print(9 / 2)
print(8 / 2)
print(9.0 / 2)
print(8.0 / 2.0)

이 코드의 결괏값은 각각 4.5, 4.0, 4.5, 4.0으로 모두 소수형이 출력됩니다. 이처럼 Python의 나눗셈은 연산 속 숫자형에 상관없이 무조건 소수형으로 출력됩니다.

만약 나눗셈 연산을 하면서 정수형 결과를 얻고 싶다면 어떻게 해야할까요? 이와 관련된 부분은 후에 설명드릴 형 변환에서 자세히 알려드리겠습니다.

마지막으로 Python은 일반적인 사칙연산 규칙을 따르기 때문에 덧셈과 곱셈의 연산 중 곱셈의 연산을 우선적으로 실행합니다. 괄호가 있으면 괄호 안의 연산을 먼저 실행하는 것도 마찬가지입니다.

🦾 숫자형 연산 심화

이번에는 사칙 연산 외에 다양한 연산을 함께 보겠습니다.

첫번째 연산은 버림 나눗셈(Floor Division)입니다. 버림 나눗셈은 나눗셈 결과값에서 소수 부분을 버린 값을 출력합니다.

# 버림 나눗셈
print(9 // 2)

이 코드의 결괏값은 4가 나옵니다. 소수 부분인 0.5를 버린 값이죠.

# 버림 나눗셈 소수형
print(9.0 // 2)

그러나 위와 같이 소수형에 버림 나눗셈을 할 경우, 그 결과는 4.0으로 소수형이 나옵니다. 소수 부분을 버리되 자료형만 소수형으로 나타낸 것이죠.

이번에는 반올림 연산을 해볼까요?

# 반올림
print(round(3.141592))

이 코드의 결괏값은 3입니다. ROUND는 파라미터의 값을 가장 가까운 정숫값으로 반올림해줍니다. 만약 소수점 첫째 자리로 반올림하고 싶다면 두번째 파라미터에 1을 넣어주면 됩니다.

# 반올림 소수 첫째 자리
print(round(3.141592, 1))

따라서, 이 코드의 결괏값은 3.1이 됩니다.

반올림에서 주의할 점 한 가지는 Python의 경우 짝수 결과값을 지향하므로 5.5를 반올림했을 때는 6이, 4.5를 반올림했을 때는 4가 나옵니다. 일반적인 반올림과는 다른 결과이죠. 이를 round to nearest even 방식이라고 합니다.

🦾 문자열 연산

앞선 Python의 기본 챕터에서 문자열키보드로 쓸 수 있는 문자들을 표현하는 자료형이라고 말씀 드렸는데요. '(작은 따옴표)로 둘러싸인 자료형을 모두 문자열이라고 합니다. Python에서는 큰 따옴표를 사용해도 동일한 결과가 나옵니다. 작은 따옴표와 큰 따옴표를 하나의 문자열에 동시에 사용하지만 않으면 됩니다.

이번에는 문자열 연산에 대해 알아보겠습니다. Python 기본 챕터에서 제시했듯 문자열의 덧셈은 곧 문자열 연결(String Concatenation)을 말합니다. 예컨대, "Hello"와 "World"를 더하면 "HelloWorld"가 나옵니다.

따옴표 안에 숫자가 들어가면 마찬가지로 문자열로 인식됩니다. 따라서 "3" 더하기 "4"는 7이 아닌 34를 출력합니다.

그렇다면 "Hello"와 숫자 2를 곱하면 어떤 결과가 나올까요? 2 더하기 2의 결과가 4가 되는 것처럼 "Hello" 곱하기 2"Hello"를 두 번 더한 "HelloHello"가 됩니다.

이제 코드로 예시를 한 번 볼까요?

print("안녕")
print("세상아")

이 코드의 결괏값은 안녕세상아입니다. 콘솔창에서는 따옴표가 사라지고 문자만 출력됩니다. 문자열 작성에서 주의해야 할 점은 문자열 내에 들어가는 작은 따옴표입니다. 예를 들어 봅시다.

print('I'm fine') ❌
print("I'm fine") ⭕

이처럼 문자열 내에 작은 따옴표를 사용하게 될 경우 오류가 발생하므로 이와 같은 경우에는 큰 따옴표를 대신 사용하는 것이 좋습니다.

그렇다면 문자열 내에 작은 따옴표와 큰 따옴표가 모두 사용될 경우에는 어떻게 해야할까요? 다음 코드로 확인해봅시다.

print("I'm fine. "Thank You!"") ❌
print("I\'m fine. \"Thank You!\"") ⭕

이처럼 따옴표 앞에 역슬래쉬를 사용하여 이 따옴표가 문자열을 위한 따옴표가 아님을 명확히 나타내주어야 합니다. 참고로 결괏값은 다음과 같습니다. I'm fine. "Thank You!"

🦾 형 변환

앞서 나눗셈의 결과를 정수형으로 나타내기 위해 형 변환이 필요하다고 말씀드렸었는데요. 형 변환은 영어로 Type Conversion 혹은 Type Casting이라고 합니다. 형 변환의 정의는 값을 한 자료형에서 다른 자료형으로 바꾸는 것입니다.

예시로 한 번 볼까요?

print(int(4.2))

파라미터에는 4.2가 들어갔지만 이 코드의 결괏값으로는 4만이 출력됩니다. 정수형에는 소수 부분이 없기 때문에 정수형으로 형변환이 되는 과정에서 소수 부분이 탈락된 것이죠. int는 integer 즉, 정수의 줄임말입니다. 반대의 예시도 한 번 볼까요?

print(float(4))

이 코드의 결과값은 4.0이 나옵니다. float는 floating point 즉, 소수의 줄임말입니다. 정수형에서 소수형의 핵심인 소수 부분을 포함시킨 것이죠.

이번에는 문자열과 숫자형을 서로 변환해봅시다.

print("3" + "4")
print(int("3") + int("4"))

두 코드의 결괏값의 차이는 무엇일까요? 위 코드는 문자열 연산 즉, 문자열 연결을 실행하여 34가 출력되는 반면 아래 코드는 문자열이 숫자형으로 변환된 후 더하기 연산을 실행하므로 7이 나옵니다. 거꾸로도 한 번 해볼까요?

print(str(3) + str(4))

str은 string 즉, 문자열의 줄임말입니다. 정수 3과 4가 문자열로 변환되면서 위 코드의 첫번째 결괏값과 같은 34가 출력됩니다.

이를 응용하면 다음과 같은 코드를 작성할 수 있습니다.

age = 27
print("제 나이는 " + str(age) + "살입니다.")

이처럼 정수형으로 선언된 변수를 문자열과 함께 연산하기 위해서는 형변환이 필요합니다. 따라서 변수 age를 str으로 감싸주어 문자열로 변환시켜줍니다.

주의할 점은 문자열을 숫자형으로 변환시킬 때, 문자로 된 문자열 예컨대, "Hello"와 같은 문자열은 변환이 되지 않습니다. 즉, int("Hello")는 잘못된 코드입니다. 오로지 숫자로 된 문자열 "3" 등이 숫자형으로 변환될 수 있는 것이죠.

* 이 자료는 CODEIT의 프로그래밍 기초 in Python 강의를 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글