티스토리 뷰

4.14 조건식(Conditional Expressions)

- 조건식(Conditional Expressions)이란 조건에 기반한 표현식을 말한다.

- 특정한 조건에 제약을 받는 변수를 설정해 그 변수에 값을 넣을 수 있다. 

 

* 예시

if x > 0:

y = 1

else

y = -1

위 예시 코드와 아래의 코드는 같은 의미이다. 아래의 코드가 바로 조건식을 이용해 만든 코드이다.

 

y = -1 if x > 0 else -1

 

조건식은 완전히 다른 스타일의 문법형태이다.

 

* 조건식 형태

expression1 if boolean-expression else expression2

- expression1 boolean-experession 이 참(True)일 경우 결과 값이며, 거짓(False)의 경우 expresstion2의 결과가 도출된다.

 

- 만약에 두 개의 숫자 중에 큰 숫자를 변수 max에 넣고 싶다면 아래와 같이 작성하면 된다.

max = number1 if number1 > number2 else number2

 

- 짝수, 홀수 구분하는 프로그램은 다음과 같이 조건식을 이용해 작성 할 수 있다.

print("number is even " if number % 2 == 0 else "number is odd")

 

4.15 연산자 우선순위와 결합법칙(Operator Precedence and Associativity)

- 연산자우선순위와 결합법칙연산자의 계산될 순서를 결정한다.

 

예를 들어, 아래와 같은 식이 있다고 하자.

3 + 4 * 4 > 5 * (4 + 3) - 1

 

위의 식에서 어떤 부분이 먼저 연산을 수행할지 예상해보면 괄호 부분의 연산부터 시행될 것이라는 걸 알 수 있다. 하지만 만약에 이런 괄호가 없다면 파이썬은 연산자의 우선순위와 결합법칙에 따라 연산순서를 정한다.

 

선순위

Operator

Description

 

**

지수 (전원으로 인상)

~ + -

비트 반전 ,부호 +, -

* / % //

곱하기, 나누기, 나머지, 몫

+ -

덧셈과 뺄셈

>> <<

좌우 비트 시프트

&

비트 'AND'

^ |

비트 전용 'OR'와 정기적 인 'OR'

<= < > >=

비교 연산자

<> == !=

평등 연산자

= %= /= //= -= += *= **=

할당 연산자

is is not

식별 연산자

in not in

맴버 연산자

not or and

논리 연산자

 

 

- 논리 연산자(logical operators)관계연산자(relational operators) 보다 낮은 우선순위이며, 관계 연산자(relational operators)는 산술 연산자(arithmetic operators) 보다 낮은 우선순위를 가지고 있다.

- 똑같은 우선순위를 가지고 있는 연산자들이 나열되어 있는 경우에는, 왼쪽부터 연산을 차례로 진행한다.

ex) a - b + c – d 와 ((a - b) + c) - d의 연산순서는 서로 같다.

 

*연산순위 예제

True or True and False  → True

True and True or False → True

 

4.16 객체의 위치 파악하기(Detecting the Location of an Object)

- 게임프로그래밍에서 한 개체가 다른 개체 안에 속해있는지 판단하는 일반적인 작업이 있다.

- 이번 섹션에서는 한 점이 원 안에 속해있는지 아닌지를 판단하는 프로그램을 예로 설명한다.

- 만약 점이 원 안에 속해있다면, 원의 중심과 점사이의 거리는 원의 반지름 보다 작거나 같을 것이다.

 

거리구하는 공식 :

 

*점의 위치 파악 프로그램

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
import turtle as t
 
x1, y1 = eval(input("Enter the center of circle: "))
radius = eval(input("Enter the radius of circle: "))
x2, y2 = eval(input("Enter the point: "))
 
distance = ((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1))**0.5
 
t.hideturtle()
t.penup()
t.goto(x1,y1-radius)
t.pendown()
t.circle(radius)
 
t.penup()
t.goto(x2,y2)
t.pendown()
t.dot(6,"red")
 
if distance > radius:
    t.write("The point is outside the circle")
else:
    t.write("The point is intside the circle")
 
t.done()
cs

 

참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG



본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.


교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 

 

댓글