Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Trivia

2장.기본 작업 수행 본문

프로그래밍기초

2장.기본 작업 수행

Vloom 2019. 4. 4. 15:56

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

26
>>> number_2
50
>>>


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

5
>>> 


변수명(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

SyntaxError: can't assign to keyword
>>> 


[퀴즈 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

3
>>> number_2
9
>>>


▶변수에 변수 할당


할당문의 오른쪽에 문자가 올 때는 반드시 먼저 값을 할당받은 후, 할당문의 오른쪽에 문자를 용해야

    한다.

같은 경우로 문자를 사용할 때는 초기값을 할당해야 함


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

309
>>> number_2
309
>>>


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 -=

a = a -1 

a *= 1

a = a * 1 

 a /=

a = a / 1 

 a //=

a = a // 1 

 a %=

a = a % 1 


▶[실습 2-1] 연산자들의 복합

다음 수식을 직접 실행시켜본 후 결과를 확인해보자.


1) x = 1


2) x += 1


3) x -= 1


>>> x = 1

>>> x += 1

>>> x

2

>>> x  -= 1

>>> x
1
>>>


ex) [예제 2-14] 변수들의 연산식 연습

다음의 순서로 명령문을 직접 실행시켜본 후 결과를 확인해보자.


1) number = 5

2) number = 4 * number + 6

3) number


>>> number = 5

>>> number = 4 * number + 6

>>> number

26
>>>


ex) [예제 2-15] 같은 변수에 대한 연산식 연습

다음 순서로 명령문을 직접 실행시켜본 후 결과를 확인해보자.


1) count = 0

2) count += 1

3) count

4) count *= 2

5) count


>>> count = 0

>>> count += 1

>>> count

1

>>> count *= 2

>>> 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

6
>>> number //= 2
>>> number %= 2
>>> number
1
>>>


※연습 문제※


Q1. int형 숫자들이 나눗셈 연산을 하면 결과의 자료형은 무엇인가?

      ex) >>> 96 / 4


Q2. '//' 연산자는 나눗셈 연산의 (        )만을 결과로 나타내고,

 '%' 연산자는 나눗셈 연산의 (        )만을 결과를 나타낸다.


Q3. 다음 실행문의 잘못된 부분을 찾으시오.


>>> b = a + 1


Q4. 다음 실행문이 잘못된 이유를 기술하시오.


>>> 3number = 1


Q5. 다음 실행문의 값을 구하시오.


>>> 2 * 3 ** (1 + 2)

>>> 3 ** 4 / (2 + 2)
>>> 7 // 4 + 1 ** 5
>>> 6 + 11 * 2 // 4 ** 1
>>> ((3 + 4) ** 2) % 5 * 4


Q6. 다음 문제를 보고 맞으면 O 틀리면 X를 기입하시오.


1) 변수의 이름은 문자, 숫자 그리고 _(Underscore), 특수문자로만 이루어진다.                  (        )


2) 변수명은 문자 또는 Underscore로만 시작해야 하며 숫자로는 시작할 수 없다.               (        )


3) 변수 Number는 number로 사용해도 된다.                                                                    (        )


4) number1, number2 = 125 입력 시 두 변수 number1, number2에 각각 125가 할당된다.   (        )


5) 아래 프로그램의 출력값은 3이다.                                                                                 (        )

>>> count = 3

>>> count += 1
>>> count
4
>>> count *= 2
>>> count


6) 아래 프로그램의 출력값은 30이다.                                                                               (        )

>>> x = 10

>>> y = 20
>>> X += y


Q7. 다음 실행문을 보고 빈칸을 채워보시오.


>>> number1 = 5

>>> number2 = number1
>>> number1 += number2
>>> number1
(                                    )


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