값을 나타내는 표현식과 값의 자료형에 대해 알아본다.
표현식¶
17, 3.14, '안녕하세요!' 등은 변수에 할당하거나 연산자 또는 함수의 인자로
사용할 수 있는 값이다.
변수 또한 동일한 방식으로 사용될 수 있다.
예를 들어 아래 코드에서 선언된 변수 num은 정수 17을 가리키기에
정수 17 대신 어디서나 활용될 수 있다.
num = 17연산에서 활용
연산자를 이용한 수식 표현에서 활용될 수 있다.
num + 219함수의 인자에서 활용
아래 코드는 두 인자 중에서 최댓값을 계산하는 함수의 인자로 변수를 활용하는 방식을 보여준다.
max(num+2, num//2):num+2가 나타내는 값 19와num//2가 나타내는 값 8의 최댓값 계산.max_17: 계산된 최댓값인 19를 할당받음.
max_value = max(num+2, num//2)
print(max_value)19
반면에 아래 코드는 최솟값을 계산하는 min() 함수를 활용한다.
min_value = min(num*2, num/2)
print(min_value)8.5
이전 두 코드에서 값을 나태내는 표현하는 식과 실제 나타내는 값은 다음과 같다.
| 표현식 | 값 |
|---|---|
num | 17 |
17 | 17 |
2 | 2 |
num + 2 | 19 |
max(num+2, num//2) | 19 |
max_value | 19 |
min(num*2, num/2) | 8.5 |
min_value | 8.5 |
이처럼 특정 값을 표현하는 식을 표현식expression이라 부른다.
파이썬을 포함하여 대다수의 프로그래밍 언어에서는 정수와 부동소수점을 이용한 계산뿐만 아니라 다양한 종류의 연산자와 함수를 활용하여 특정 값을 표현하는 표현식을 작성할 수 있다. 예를 들어 %s장에서 간단하게 소개한 문자열, 리스트 등도 값이며, 아래 표현식들처럼 문자열 연산과 리스트 인덱싱 등도 특정 값을 표현하는 표현식이다.
hello = "파이썬," + " 안녕!"
print(hello)파이썬, 안녕!
languages = ['파이썬', 'C', "자바", "Rust"]
print('파이썬' in languages)True
python = languages[0]
print("인기가 가장 높은 프로그래밍 언어:", python)인기가 가장 높은 프로그래밍 언어: 파이썬
주석¶
프로그램을 작성할 때 포함된 코드의 기능과 작성 의도 등을 설명하는 문구나 문장을 추가하면 프로그램의 작동 원리와 과정을 보다 쉽게 이해할 수 있다. 이와 같이 프로그램의 실행과는 무관하지만 명령문, 함수 등의 기능, 아이디어 등을 설명하는 문장이 주석comment이다.
주석은 설명 용도로만 사용되며 프로그램이 실행될 때 파이썬 실행기에 의해 무시된다.
한줄 주석
주석은 한 줄 또는 여러 줄로 작성될 수 있다.
한줄 주석은 우물정(샵) 기호 # 로 시작한다.
# speed는 시속을 가리키는 변수이다.
speed = 90 # 속도 단위는 km이다.
print("스피드:", speed, "km")스피드: 90 km
위 코드와 아래 코드는 동일하게 작동한다.
speed = 90
print("스피드:", speed, "km")스피드: 90 km
여러 줄 주석
한줄 주석을 연속적으로 사용하여 여러 줄 주석을 작성할 수 있다.
# speed는 시속을 가리키는 변수이다.
# 속도 단위는 km이다.
speed = 90
print("스피드:", speed, "km")스피드: 90 km
반면에 작은따옴표 세 개 ''' 또는 큰따옴표 세 개 """ 로 감싸서
여러 줄 주석을 작성할 수도 있다.
'''
speed는 시속을 가리키는 변수이다.
속도 단위는 km이다.
'''
speed = 90
print("스피드:", speed, "km")스피드: 90 km
또는
"""
speed는 시속을 가리키는 변수이다.
속도 단위는 km이다.
"""
speed = 90
print("스피드:", speed, "km")스피드: 90 km
자료형¶
값과 변수의 자료형¶
파이썬에 사용되는 값과 선언된 변수는 모두 자료형data type를 갖는다.
값 또는 변수의 자료형은 type() 함수를 이용하여 확인한다.
아래 코드는 정수의 자료형이 int라고 확인해준다.
type(6)int선언된 변수의 자료형은 할당된 값의 자료형으로 지정된다.
예를 들어 변수 b에 할당된 값이 6이기에 변수 b의 자료형 또한 int로 확인된다.
b = 6
type(b)int그런데 변수가 가리키는 값을 다른 값으로 대체할 수 있는데 이때 다른 자료형의 값이 사용될 수 있다.
예를 들어 아래 코드는 변수 b가 가리키는 값을 Hello, world! 라는 문자열로 지정한다.
b = "Hello, world!"변수가 가리키는 값이 달라지면 변수의 자료형 또한 변경된 값의 자료형으로 바뀐다.
문자열의 자료형은 str이다.
type(b)str표현식의 자료형¶
표현식의 자료형은 표현하는 값의 자료형이다.
type(num + 2)inttype(max(num+2, num//2))inttype(min(num*2, num/2))floattype("파이썬," + " 안녕!")strtype(['파이썬', 'C', "자바", "Rust"][0])str파이썬 기초 자료형¶
지금까지 살펴본 정수, 부동소수점, 문자열 세 종류의 값은
int, float, str의 자료형을 갖는다.
이에 더해 파이썬은 True와 False로 구성된 부울 자료형인 bool도 기초 자료형으로 제공한다.
정수 자료형: int
-2, -1, 0, 1, 2 등의 정수는 int 자료형의 값이다.
정수는 사칙연산, 변수 할당 등에 사용된다.
1 + 23a = 4
type(a)inta * 28부동소수점 자료형: float
부동소수점은 유한소수를 가리키며 float 자료형의 값이다.
정수와 마찬가지로 사칙연산, 변수 할당 등에 사용된다.
2.1 + 3.35.4c = 2.1
type(c)floatint와 float는 다른 자료형이다.
하지만 정수를 유한소수로 간주하듯이
필요에 따라 int 자료형의 값이 float 자료형의 값으로 취급된다.
예를 들어 2.3 + 3을 계산해야 할 때 2.3 + 3.0을 계산한다.
2.3 + 35.3문자열 자료형: str
문자들을 나열한 값들을 일컫는 자료형으로 작은 따옴표 ' 또는 큰 따옴표 " 를 사용한다.
hello_python = 'Hello, Python!'
print(hello_python)Hello, Python!
like_python = "파이썬 좋아!"
print(like_python)파이썬 좋아!
부울 자료형: bool
참과 거짓을 의미하는 True와 False를
부울값Boolean value
또는 진릿값이라 하며,
부울값의 자료형은 부울 자료형인 bool이다.
type(True)boold = False
type(d)bool형변환¶
서로 다른 두 자료형의 연산은 일반적으로 허용되지 않는다. 그런데 부동소수점 2.0과 정수 3을 더하면 5.0으로 계산된다. 이는 파이썬 실행기가 정수 3을 부동소수점 3.0으로 자료형을 변환하여 계산하기 때문이다.
2.0 + 35.0이렇게 내부적으로 값을 다른 자료형의 값으로 계산하는 기능을
형변환type casting이라 부른다.
형변환 사용되는 함수로 int(), float, str(), bool() 등이 가장 많이 자주 사용된다.
int() 함수
정수 모양의 문자열, 부동소수점, 부울값을 정수로 계산한다.
정수 모양의 문자열 형변환
int('5')5문자열이 정수의 모양을 갖추지 못하면 오류가 발생한다.
오류 종류: 값오류(
ValuError)오류 내용:
'5.1'은 정수 모양이 아님.
int('5.1')---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[34], line 1
----> 1 int('5.1')
ValueError: invalid literal for int() with base 10: '5.1'부동소수점에서 정수로 형변환. 소수점 이하 버리기
int(4.8)4부울값에서 정수로:
True와False는 각각 1과 0으로 취급
int(True)1int(False)0float() 함수
정수 또는 유한소수 모양의 문자열을 부동소수점으로 계산한다.
정수를 부동소수점으로 형변환
float(2)2.0유한소수 모양의 문자열 형변환
float('7.9')7.9정수 모양의 문자열 형변환
float('7')7.0문자열이 부동소수점 또는 정수 모양을 갖추지 못하면 오류가 발생한다.
오류 종류: 값오류(
ValuError)오류 내용:
'5.1a'은 부동소수점 모양이 아님.
int('5.1a')---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[41], line 1
----> 1 int('5.1a')
ValueError: invalid literal for int() with base 10: '5.1a'부울값에서 정수로:
True와False는 각각 1.0과 0.0으로 취급
float(True)1.0float(False)0.0str() 함수
임의의 값을 문자열로 변환한다.
str(6)'6'str(7.6)'7.6'str(False)'False'bool() 함수
임의의 값을 True 또는 False 로 변환한다.
0, 0.0, ''(비어 있는 문자열), [] (비어 있는 리스트) 등처럼 0, 비어 있는 것, 의미 없는 것등은 False 로
그렇지 않으면 True 로 지정한다.
bool(0)Falsebool(1)Truebool(-1)Truebool(0.0)Falsebool(-0.01)Truebool('')Falsebool('e')Truebool([])Falsebool([3])True예제¶
예제 1
먼저 아래와 같이 변수를 선언한다.
number = 17
two_semicolons = ';;'다음에 오는 각각의 표현식들에 대해, 표현식의 값과 자료형을 확인한다.
(1) number + 2
답:
number + 219type(number + 2)int(2) number - 2.0
답:
number - 2.015.0type(number - 2.0)float(3) number / 2
답:
number / 28.5type(number / 2)float(4) number // 2
답:
number // 28type(number // 2)int(5) number % 2
답:
number % 21type(number % 2)int(6) number의 세제곱을 (2 + 3)으로 나누기
답:
number**3 / (2 + 3)982.6type(number**3 / (2 + 3))float(7) two_semicolons * 3
답:
two_semicolons * 3';;;;;;'type(two_semicolons * 3)str예제 2
아래 수식을 계산하려 하면 오류가 발생한다.
3 + '3.0'---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[71], line 1
----> 1 3 + '3.0'
TypeError: unsupported operand type(s) for +: 'int' and 'str'유한소수 모양의 문자열을 부동소수점 자료형으로 변환하여 3 + 3.0이 계산되도록 한다.
힌트: float() 함수를 활용한다.
답:
float() 함수는 부동소수점 모양의 문자열을 실제 부동소수점으로 변환시킨다.
3 + float('3.0')6.0예제 3
두 변수가 다음과 같이 선언된다.
x = 2.438730
y = 5.711729(1) 두 변수가 가리키는 값이 평균값을 계산하는 표현식을 정의한 다음에 변수 z에 할당한다. 또한 z가 가리키는 값과 자료형을 화면에 다음과 같이 출력한다.
x와 y의 평균값: 4.0752295답:
z = (x + y)/2print("x와 y의 평균값:", z)x와 y의 평균값: 4.0752295
(2) 두 변수가 가리키는 값이 평균값을 다음과 같이 출력한다.
x와 y의 평균값: 4.075힌트: round() 함수 활용
답:
print("x와 y의 평균값:", round(z, 3))x와 y의 평균값: 4.075
(3) 두 변수가 가리키는 값이 평균값을 다음과 같이 출력한다.
x와 y의 평균값: 약 4힌트: int() 함수 활용
답:
print("x와 y의 평균값: 약", int(z))x와 y의 평균값: 약 4
예제 4
변수가 다음과 같이 선언된다.
even_num = 666(1) even_num이 가리키는 값이 짝수인지를 판정하는 표현식을 변수 is_num_even이 가리키도록 한다.
답:
even_num 변수가 짝수를 가리키는지 여부는 아래 표현식으로 나타낸다.
even_num % 2 == 0True따라서 is_num_even 를 다음과 같이 선언한다.
is_num_even = even_num % 2 == 0(2) is_num_even이 가리키는 값의 자료형을 확인한다.
답:
변수가 가리키는 값의 자료형은 변수 자체의 자료형과 동일하며,
True와 False는 bool 자료형을 갖는다.
type(is_num_even)bool(3) even_num이 짝수이면서 동시에 3의 배수임을 판정하는 표현식을 작성하라.
힌트: and 연산자 활용
답:
and 연산자는 두 개의 bool 자료형의 값을 사칙연산자처럼 좌우로 사용하며
두 값이 모두 True일 때만 True로 계산된다.
(even_num % 2 == 0) and (even_num % 3 == 0)True괄호는 생략해도 된다.
이유는 and 연산자보다 나머지 연산자 %의 우선순위가 높기 때문이다.
even_num % 2 == 0 and even_num % 3 == 0True연습문제¶
참고: (연습) 표현식과 자료형