UNIT 5. 숫자 계산하기
파이썬에서는 숫자를 정수, 실수, 복소수로 구분한다.
-
정수 계산하기
일반 사칙연산과 동일하다.
+ : 덧셈 연산자
- : 뺄셈 연산자
* : 곱셈 연산자
/ : 나눗셈 연산자 (이때, 파이썬 3에서는 정수끼리 나눗셈을 해도 실수가 나온다.)
// : 나눗셈 후 소수점 이하를 버리는 연산자
% : 나눗셈 후 나머지를 구하는 % 연산자로, 모듈로(modulo) 연산자라고 한다.
>>> 5/2
2.5
>>> 5//2
2
>>> 5%2
1
** : 거듭제곱을 구하는 연산자
int() : 값을 정수로 만들어 주며, 정수로 된 문자열인 경우엔 넣으면 정수로 만들 수 있다.
>>> int(3.3)
3
>>> int(5/2)
2
type() : 객체의 자료형(타입)을 알려준다.
>>> type(10)
<class 'int'>
divmod( , ) : 몫과 나머지를 함께 구해준다.
출력 결과인 몫과 나머지는 튜플(tuple)형태로 나오는데, 튜플은 값을 괄호로 묶은 형태이다.
튜플은 변수 여러 개에 저장할 수 있어, 다음과 같이 몫과 나머지를 변수 두 개에 저장할 수 있다.
>>> divmod(5,2)
(2,1)
>>> quotient, remainder = divmod(5,2)
>>> print(quotient, remainder)
2 1
※ 참고 : 2진수, 8진수 16진수
2진수 : 0과 1을 사용하며, 숫자 앞에 0b를 붙인다.
8진수 : 0부터 7까지 사용하며, 숫자 앞에 0o를 붙인다.
16진수 : 0부터 9, 그리고 A부터 F까지 사용하며, 숫자 앞에 0x 또는 0X를 붙인다.
-
실수 계산하기
정수 계산과 동일함. (다만 실수에서는 오차와 관련된 이슈가 있음.)
>>> 3.5+2.1
5.6
>>> 4.3-2.7
1.5999999999999996
>>> 1.5*3.1
4.65
>>> 5.5/3.1
1.7741935483870968
float() : 값을 실수로 만들어주며, 괄호 안에 숫자 또는 계산식을 넣어주면 됨.
>>> float(5)
5.0
>>> float(1 + 2)
3.0
※ 실수와 정수를 함께 연산하면? 표현 범위가 넓은 실수로 계산됨.
※ 연산의 우선순위 : ** -> 괄호 -> *,/ -> +,-
UNIT 6. 변수와 입력 사용하기
-
변수 만들기
변수는 '변수이름 = 값' 형식으로 만들 수 있다.
*규칙
- 문자부터 시작해야 하며 숫자부터 시작하면 안 됨.
- 특수문자는 사용할 수 없음.
- 파이썬의 키워드(if, for, while, and, or 등)는 사용할 수 없음.
*참고
'= 기호'는 같다는 뜻이 아니라 변수에 값을 할당(assignment)한다는 의미
*변수의 자료형
파이썬에서는 변수의 자료형이 중요함. type()에 변수를 넣으면 변수(객체)의 자료형이 나옴.
변수 입력 예시)
i = 10
a, b, c = 10, 20, 30
x = y = z = 10
변수 삭제는 del을 이용함 : del 변수
값이 들어있지 않는 변수를 만들때는 None을 할당해주면 됨 : 변수 = None
-
변수로 계산하기
변수는 변수끼리 계산할 수 있고, 계산 결과를 다른 변수에 할당할 수 있음.
연산 예시)
>>> a = 10
>>> b = 20
>>> c = a + b
>>> c
30
변수 한 개에서 값의 변화를 계속 유지하려면 계산 결과를 다시 변수에 저장해야함.
>>> a = 10
>>> a = a + 20 # a와 20을 더한 후 결과를 다시 a에 저장
>>> a
30
산술 연산 후 할당 연산자 사용하기
+= : 덧셈 후 할당한다는 뜻으로 -=, *=, /= 도 똑같이 연산 후 할당한다는 뜻임.
>>> a = 10
>>> a += 20 # a와 20을 더한 후 결과를 다시 a에 저장
>>> a
30
-
입력 값을 변수에 저장하기
input 함수 사용하기
input( ) : 사용자가 입력한 값을 가져오는 함수임.
>>> input()
Hello, world! (입력)
'Hello, world!'
input 함수의 결과를 변수에 할당할 수 있음.
>>> x = input()
Hello, world! (입력)
>>> x
'Hello, world!'
여기서 한 가지 불편한 점이 있는데, input 함수가 실행된 다음에는 아무 내용이 없어서 입력을 받는 상태인지 출력이 없는 상태인지 알 수가 없음.
-> input의 괄호 안에 문자열을 지정해주면 이를 해결할 수 있음. (변수 = input('문자열')
>>> x = input('문자열을 입력하세요: ')
문자열을 입력하세요: Hello, world! (입력)
>>> x
'Hello, world!'
*응용 : 두 숫자의 합 구하기
a = input('첫 번째 숫자를 입력하세요: ')
b = input('두 번째 숫자를 입력하세요: ')
print(a + b)
첫 번째 숫자를 입력하세요: 10 (입력)
두 번째 숫자를 입력하세요: 20 (입력)
1020
그런데, 이때 10 + 20의 결과는 30이 나와야 하는데 1020이 나옴.
이렇게 나온 이유는 input에서 입력받은 값은 항상 문자열 형태이기 때문에, 10과 20을 +로 더한 것이 아니라 연결한 형태인 1020이 나온 것임.
-
입력 값을 변수 두 개에 저장하기
input 한 번에 값을 여러 개 입력 받으려면 어떻게 해야 할까?
input에서 split을 사용해 변수 여러 개에 저장해주면 되는데, 다음과 같은 형식이다.
-
변수1, 변수2 = input().split()
-
변수1, 변수2 = input().split('기준문자열')
-
변수1, 변수2 = input('문자열').split()
-
변수1, 변수2 = input('문자열').split('기준문자열')
a, b = input('문자열 두 개를 입력하세요: ').split() #입력받은 값을 공백을 기준으로 분리
print(a)
print(b)
문자열 두 개를 입력하세요: Hello Python (입력)
Hello
Python
input에 split을 사용하면 입력받은 값을 공백을 기준으로 분리하여 변수에 차례대로 저장함.( split에 기준 문자열을 지정하면 공백이 아닌 다른 문자로 분리가 가능함 )
*두 숫자의 합 구하기
숫자 두 개를 입력 받아서 두 숫자의 합을 구해보자.
a, b = input('숫자 두 개를 입력하세요: ').split() # 입력받은 값을 공백을 기준으로 분리
print(a + b)
실행 결과는 다음과 같다.
숫자 두 개를 입력하세요: 10 20 (입력)
1020
30이 나와야 하는데 1020이 나왔다. 왜냐면 input에서 입력받은 값은 문자열이고, 이것은 split으로 분리해도 문자열이기 때문이다.
따라서 입력 값을 정수로 변환해 줄 필요가 있다.
a, b = input('숫자 두 개를 입력하세요: ').split() # 입력받은 값을 공백을 기준으로 분리
a = int(a) # 변수를 정수로 변환한 뒤 다시 저장
b = int(b) # 변수를 정수로 변환한 뒤 다시 저장
print(a + b)
실행 결과는 다음과 같다.
숫자 두 개를 입력하세요: 10 20 (입력)
30
*map을 사용하여 정수로 변환하기
map에 int와 input().split()을 넣으면 split의 결과를 모두 int로 변환해준다.
(실수로 변환할 때는 int 대신 float를 넣음)
a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
print(a + b)
실행 결과는 다음과 같다.
숫자 두 개를 입력하세요: 10 20 (입력)
30
UNIT 7. 출력 방법 알아보기
-
값을 여러 개 출력하기
print에는 변수나 값 여러 개를 ,(콤마)로 구분하여 넣을 수 있음.
>>> print(1, 2, 3)
1 2 3
>>> print('Hello', 'Python')
Hello Python
sep로 값 사이에 문자 넣기
값 사이에 공백이 아닌 다른 문자를 넣고 싶을 때 print의 sep에 문자 또는 문자열을 지정해주면 됨.
>>> print(1, 2, 3, sep=', ') # sep에 콤마와 공백을 지정
1, 2, 3
>>> print(4, 5, 6, sep=',') # sep에 콤마만 지정
4,5,6
>>> print('Hello', 'Python', sep='') # sep에 빈 문자열을 지정
HelloPython
>>> print(1920, 1080, sep='x') # sep에 x를 지정
1920x1080
-
줄바꿈 활용하기
print 한 번으로 값을 여러 줄에 출력할 수는 없을까?
print의 sep에 개행 문자(\n)라는 특별한 문자를 지정하면 값을 한 줄에 하나씩 출력할 수 있다.
>>> print(1, 2, 3, sep='\n')
1
2
3
>>> print('1\n2\n3') # 문자열 안에 \n을 사용하여 줄바꿈
1
2
3
※참고 : 제어 문자
화면에 출력되지는 않지만 출력 결과를 제어하며, \로 시작하는 이스케이프 시퀀스이다.
\n: 다음 줄로 이동하며 개행이라고도 부른다.
\t: 탭 문자, 키보드의 Tab 키와 같으며 여러 칸을 띄운다.
\\: \ 문자 자체를 출력할 때는 \를 두 번 써야 한다.
그러면 print를 여러 번 사용해서 print(1, 2, 3)처럼 한 줄에 여러 개의 값을 출력할 수는 없을까?
이때는 print의 end에 빈 문자열을 지정해주면 된다.
print(1, end='') # end에 빈 문자열을 지정하면 다음 번 출력이 바로 뒤에 오게 됨
print(2, end='')
print(3)
실행결과는 다음과 같다.
123
기본적으로 print의 end에 \n이 지정된 상태인데 빈 문자열을 지정하면 강제로 \n을 지워주기 때문이다.
'Programming Languages > Python' 카테고리의 다른 글
[P4C] 파이썬 코딩 도장 : UNIT 16 ~ UNIT 18 (0) | 2021.01.23 |
---|---|
[P4C] 파이썬 코딩 도장 : UNIT 13 ~ UNIT 15 (0) | 2021.01.22 |
[P4C] 파이썬 코딩 도장 : UNIT 8 ~ UNIT 12 (0) | 2021.01.21 |
[P4C] 파이썬 코딩 도장 : 문제 풀이 (0) | 2021.01.19 |
[P4C] 파이썬 코딩 도장 : UNIT 1 ~ UNIT 4 (0) | 2021.01.19 |