Trivia
2장.기본 작업 수행 본문
2.1 연산자
▶파이썬에서 사용하는 연산자
+, -, *, / |
더하기 빼기, 곱하기, 나누기 |
% |
나머지 (modulo) |
// |
몫 |
** |
제곱 |
/ |
몫(실수값) |
// |
몫(정수값) |
% |
나머지 |
ex) [예제 2-1] 기본 연산자 연습
IDEL에서 다음 수식을 직접 실행시켜보자.
1) 31 + 26
2) 511 - 54
3) 5 * 15
4) 96 / 4
>>> 31 + 26
57
>>> 511 - 54
457
>>> 5 * 15
75
>>> 96 / 4
24.0
>>>
▶'//' 연산자: 나눗셈 연산의 몫만을 결과로 나타낸다. (ex. 7//3은 2)
ex) [예제 2-2] '//' 연산자 연습
다음 수식을 직접 실행시켜보자.
1) 26 // 2
2) 31 // 4
>>> 26 // 2
13
>>> 31 // 4
7
>>>
▶'%' 연산자: 나눗셈 연산의 나머지를 연산 결과로 도출한다.
ex) [예제 2-3] '%' 연산자 연습
다음 수식을 직접 실행시켜보자.
1) 26 % 2
2) 31 % 4
>>> 26 % 2
0
>>> 31 % 4
3
>>>
[퀴즈 2-1]
Q. 다음 문장의 실행 결과를 예측하여 보자.
>>> 20 % 6
정답: 2
>>> 21 / 5
정답: 4.2
>>> 21 // 5
정답: 4
▶'**' 연산자: 파이썬에서는 '**' 연산자를 이용해서 제곱을 나타낸다.
ex) [예제 2-4] '**' 연산자 연습(int)
다음 수식을 직접 실행시켜보자.
1) 2 ** 4
2) 4 ** 6
>>> 2 ** 4
16
>>> 4 ** 6
4096
>>>
ex) [예제 2-5] '**' 연산자 연습(float)
다음 수식을 직접 실행시켜보자.
1) 3.1 ** 4.2
2) 2.6 ** 5.4
>>> 3.1 ** 4.2
115.80281433592612
>>> 2.6 ** 5.4
174.12297512053922
>>>
▶연산자 결합 법칙: 연산 식에서 같은 연산자가 연속해서 나올 경우에
연산 순서를 왼쪽부터 취할 것인지 아니면 오른쪽부터 취할 것인지 결정하는 것
연산자 |
결합 법칙 |
** (제곱) |
오른쪽 → 왼쪽 |
- (음수) |
왼쪽 → 오른쪽 |
* (곱), / (나누기), // (몫), % (나머지) |
왼쪽 → 오른쪽 |
+ (더하기), - (빼기) |
왼쪽 → 오른쪽 |
▶연산자 우선순위
● 하나 이상의 연산자가 수식에 나타날 때는 우선순위 규칙을 따름
● 괄호는 가장 높은 순위를 가짐 (즉, 괄호 안의 수식이 먼저 계산됨)
● 지수(**)는 다른 연산자들보다 높은 우선 순위를 가짐
ex) [예제 2-6] 연산자 우선순위 연습1
다음 수식을 직접 실행시켜보자.
1) (2 + 4) * 5
2) 4 * (26 - 9)
3) (4 + 5) ** (9 - 6)
>>> (2 + 4) * 5
30
>>> 4 * (26 - 9)
68
>>> (4 + 5) ** (9 - 6)
729
>>>
ex) [예제 2-7] 연산자 우선순위 연습2
다음 수식을 직접 실행시켜보자.
1) 4 * 6 - 5
2) 9 + 54 / 6
>>> 4 * 6 - 5
19
>>> 9 + 54 / 6
18
>>>
ex) [예제 2-8] 연산자 우선순위 연습3
다음 수식을 직접 실행시켜보자.
1) 2 ** 4 + 5
2) 6 * 5 ** 2
>>> 2 ** 4 + 5
21
>>> 6 * 5 ** 2
150
>>>
▶[실습 2-1] 연산자들의 복합
다음 수식을 직접 실행시켜본 후 결과를 확인해보자.
1) 5 * 4 + 6
2) 26 + 20 / 2
3) (511 // 31) ** (9 - 6)
>>> 5 * 4 + 6
26
>>> 26 + 20 / 2
36.0
>>> (511 // 31) ** (9 - 6)
4096
▶[실습 2-2] 실수가 포함된 수식 계산하기
다음 수식을 직접 실행시켜본 후 결과를 확인해보자.
1) 8.2 * 4 + 2
2) 20 + 9 / 4.5
3) (15.1 / 4) ** (6 - 4)
>>> 8.2 * 4 + 2
34.8
>>> 20 + 9 / 4.5
22.0
>>> (15.1 / 4) ** (6 - 4)
14.250625
[퀴즈 2-2]
Q. 다음 문장의 실행 결과를 예측하여 보자.
>>> 5 + 12 // 7 * 3
정답: 8
>>> 15 / 2 + 21 % 4 - 2 ** 3
정답: 0.5
>>>
2.2 변수
▶할당문 (Assign Statement): 변수에 값을 지정하기 위해 사용됨
● 변수는 값을 참조하는 이름으로 문자라고 생각하면 됨
● 변수에 값을 할당함
● 할당문의 왼쪽에는 변수, 오른쪽에는 값
● 할당문의 예
ex) a = 20 : a라는 변수에 20이라는 값을 할당함
ex) b = a : 변수간의 할당문에서는 실제로 참조를 할당함
ex) [예제 2-9] 할당문 사용 연습
다음 명령문을 직접 실행시켜본 후 결과를 확인해보자.
1) number_1 = 26
2) number_2 = 2 * 5 ** 2
>>> number_1 = 26
>>> number_2 = 2 * 5 ** 2
>>> number_1
ex) [예제 2-10] 할당되지 않은 변수 에러 연습
다음 명령문을 직접 실행시켜본 후 결과를 확인해보자.
1) number
2) number = 5
>>> number
Traceback(most recent call last):
File “<pyshell#0>”, line 1, in <module>
number
NameError: name ‘number’ is not defined
>>> number = 5
>>> number
▶변수명(Naming) 규칙
|
변수명 규칙 |
1 |
변수의 이름은 문자, 숫자 그리고 Underscore(_)로만 이루어진다. |
2 |
변수명은 문자 또는 Underscore로만 시작해야한다. 즉, 숫자로 시작하면 안된다. |
3 |
파이썬 지정단어(Keyword, Reserved word)들은 변수명으로 사용할 수 없다. |
4 |
파이썬에서는 대문자와 소문자를 구분한다. (ex. hour와 Hour는 서로 다른 변수) |
cf) import keyword 하면 파이썬에서 지정한 단어들을 확인할 수 있음
▶[실습 2-3] 올바른 변수명이 아닌 이유
다음의 변수명으로 임의의 값을 선언해 본 뒤 결과를 확인해보자.
1) money$
2) 7up
3) False
>>> money$ = 309
SyntaxError: invalid syntax
>>> 7up = 1230
SyntaxError: invalid syntax
>>> False = 901
[퀴즈 2-3]
Q. 아래의 '변수명'이 올바른지 O / X로 표현해보자.
>>> True ( X )
>>> 3apples ( X )
>>> elif ( X )
>>> new_score ( O )
>>> Brother ( O )
▶여러 변수 할당: 한번에 여러 변수에 할당 시 변수와 값의 개수가 일치해야 함
ex) [예제 2-11] 한 번에 여러 변수 할당 연습
다음 명령문을 직접 실행시켜본 후 결과를 비교해보자.
1) number_1, number_2 = 511
2) number_1, number_2 = 2, 4, 6
3) number_1, number_2 = 6, 9
>>> number_1, number_2 = 309
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
number_1, number_2 = 309
TypeError: 'int' object is not iterable
>>> number_1, number_2 = 6, 1, 3
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
number_1, number_2 = 6, 1, 3
ValueError: too many values to unpack (expected 2)
>>> number_1, number_2 = 3, 9
>>> number_1
▶변수에 변수 할당
①할당문의 오른쪽에 문자가 올 때는 반드시 먼저 값을 할당받은 후, 할당문의 오른쪽에 문자를 사용해야
한다.
②같은 경우로 문자를 사용할 때는 초기값을 할당해야 함
ex) [예제 2-12] 변수에 변수를 할당 연습1
다음 명령문을 직접 실행시켜본 후 결과를 비교해보자.
1) number_1 = number_2
2) number_2 = 309, number_1 = number_2
3) number_1, number_2 = 3, 9
>>> number_1 = number_2
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
number_1 = number_2
NameError: name 'number_2' is not defined
>>> number_2 = 309
>>> number_1 = number_2
>>> number_1
ex) [예제 2-13] 변수에 변수를 할당 연습2
다음 명령문을 직접 실행시켜본 후 결과를 비교해보자.
1) number_1 = number_2 + 2
>>> number_1 = number_2 + 2
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
number_1 = number_2 + 2
NameError: name 'number_2' is not defined
[퀴즈 2-4]
Q. 다음 코드의 괄호 안 결과를 예측하여 보자.
>>> number1 = 5
>>> number2 = number1
>>> number1 = number1 + 2
>>> number1
( 7 )
>>> number2
( 5 )
▶복합 대입 연산자: 연산과 할당을 동시에 표현
복합 대입 연산자 |
의미 |
a += 1 |
a = a + 1 |
a -= 1 |
a = a -1 |
a *= 1 |
a = a * 1 |
a /= 1 |
a = a / 1 |
a //= 1 |
a = a // 1 |
a %= 1 |
a = a % 1 |
▶[실습 2-1] 연산자들의 복합
다음 수식을 직접 실행시켜본 후 결과를 확인해보자.
1) x = 1
2) x += 1
3) x -= 1
>>> x = 1
>>> x += 1
>>> x
2
>>> x -= 1
ex) [예제 2-14] 변수들의 연산식 연습
다음의 순서로 명령문을 직접 실행시켜본 후 결과를 확인해보자.
1) number = 5
2) number = 4 * number + 6
3) number
>>> number = 5
>>> number = 4 * number + 6
>>> number
ex) [예제 2-15] 같은 변수에 대한 연산식 연습
다음 순서로 명령문을 직접 실행시켜본 후 결과를 확인해보자.
1) count = 0
2) count += 1
3) count
4) count *= 2
5) count
>>> count = 0
>>> count += 1
>>> count
1
>>> count *= 2
ex) [예제 2-16] 같은 변수에 대한 복합 대입 연산자 연습
다음 순서로 명령문을 직접 실행시켜본 후 결과를 확인해보자.
1) number = 2
2) number *= 5
3) number
4) number -= 4
5) number
6) number //= 2
7) number %= 2
8) number
>>> number = 2
>>> number *= 5
>>> number
10
>>> number -= 4
>>> number
※연습 문제※
Q1. int형 숫자들이 나눗셈 연산을 하면 결과의 자료형은 무엇인가?
ex) >>> 96 / 4
Q2. '//' 연산자는 나눗셈 연산의 ( )만을 결과로 나타내고,
'%' 연산자는 나눗셈 연산의 ( )만을 결과를 나타낸다.
Q3. 다음 실행문의 잘못된 부분을 찾으시오.
>>> b = a + 1
Q4. 다음 실행문이 잘못된 이유를 기술하시오.
>>> 3number = 1
Q5. 다음 실행문의 값을 구하시오.
>>> 2 * 3 ** (1 + 2)
Q6. 다음 문제를 보고 맞으면 O 틀리면 X를 기입하시오.
1) 변수의 이름은 문자, 숫자 그리고 _(Underscore), 특수문자로만 이루어진다. ( )
2) 변수명은 문자 또는 Underscore로만 시작해야 하며 숫자로는 시작할 수 없다. ( )
3) 변수 Number는 number로 사용해도 된다. ( )
4) number1, number2 = 125 입력 시 두 변수 number1, number2에 각각 125가 할당된다. ( )
5) 아래 프로그램의 출력값은 3이다. ( )
>>> count = 3
6) 아래 프로그램의 출력값은 30이다. ( )
>>> x = 10
Q7. 다음 실행문을 보고 빈칸을 채워보시오.
>>> number1 = 5
Q8. 다음 문제를 보고 빈칸을 채워보시오.
● **(제곱)의 결합 법칙은 ( )에서 ( )이다.
● a += 5의 의미를 설명하라. ( )
● >>> first number = 3
위를 실행하였을 때 에러가 발생하는 이유를 설명하라. ( )
Q9. a, b에 각각 5, 7을 할당하고 곱셈을 한 값을 변수 result에 저장하여 출력하는 프로그램을
작성하라.
Q10. 다음 식의 몫과 나머지를 각각 다른 변수 portion, the_rest에 저장시키는 프로그램을 작성하라.
Q11. x, y에 각각 11, 22를 할당하고, 그 후 숫자를 직접 이용하지 않고 다른 변수 z를 이용하여
두 수를 교환하는 프로그램을 작성하라.
Q12. 반지름(r)이 7인 원의 넓이(area)를 제곱을 이용하여 구하는 프로그램을 작성하라.
Q13. number1, number2, number3, number4에 각각 5, 4, 9, 2를 할당하여 아래의 식을 계산하는
프로그램을 작성하라.
------------------------------------------------------------------------------------------------------------
A1. float형
A2. 몫, 나머지
A3. a의 값이 초기화되지 않음 (a에 해당하는 값을 입력하지 않았음)
A4. 올바르지 않은 변수명 (변수명은 숫자로 시작할 수 없음)
A5. 54 / 20.25 / 2 / 11 / 16
A6. (1) X (2) O (3) X (4) X (5) X (6) X
A7. 10
A8. 오른쪽, 왼쪽 / a = a + 5 / 변수명에 공백(띄어쓰기)이 있기 때문
A9. >>> a = 5
>>> b = 7
>>> result = a * b
>>> result
35
A10. >>> portion = 123456 / 789
>>> the_rest = 123456 % 789
A11. >>> x = 11
>>> y = 11
>>> z = x
>>> x = y
>>> y = z
>>> x
22
>>> y
11
A12. >>> r = 7
>>> area = r ** 2 3.14
>>> area
153.86
A13. >>> number1 = 5
>>> number2 = 4
>>> number3 = 9
>>> number4 = 2
>>> (number1 * number2) * (number2 - number3) * (number3 // number4)
-400
'프로그래밍기초' 카테고리의 다른 글
1장.컴퓨팅 사고로 문제 해결하기 (0) | 2019.03.21 |
---|