티스토리 뷰

728x90
반응형

Chapter 05 연습문제 풀이

 

1. if 문의 기본 형식이다. 빈칸을 제시된 보기로 채우시오.

if 조건식 :

    실행할 문장 1

else :

    실행할 문장 2

 

 

2. 다음 if 문의 결과를 예측하시오.

a = 100

if a != 100 :

    print("100이 아니군요.")

else :

    print("100이군요.")

★ >100이군요

a에 100이 담겨 있으므로 조건식 a != 100이 False가 된다. 따라서 if에 속한 문장은 무시가 되고 else가 실행된다.

 

 

3. 다음 if 문의 결과를 예측하시오.

a = 123

if a == 100 :

    print("100이군요.")

    print("100이 아니군요.")

★ >

a = 123이므로 if의 조건식이 false가 된다. 따라서 if 문에 속한 아래 두 문장 모두 실행되지 않는다. (파이썬에서 if문의 범위는 들여쓰기로 구분하기 때문이다.)

 

 

4. 입력한 숫자가 3의 배수인지를 판단하는 프로그램이다. 빈칸을 채우시오.

a = int(input("정수를 입력하세요 : "))

if a % 3 == 0 :

    print("3의 배수를 입력했군요.")

else :

    print("3의 배수가 아니군요.")

★ 3의 배수를 나머지 연산하면 나머지가 0이므로 참이 되기 떄문이다.

 

 

5. 다음 if 문의 결과를 예측하시오.

a = 123

if a > 100:
    if a > 200:
        print("완전히 큰 수입니다.")
    else:
        print("적당한 수입니다.")
else:
    print("완전히 작은 수입니다.")
    print("프로그램 끝입니다.")

★ >적당한 수입니다.

123은 첫 번쨰 조건식 a > 100에 참이 된다. 그 안의 조건식 a > 200에는 거짓이 되므로 else가 실행된다.

참고로 첫 번쨰 else의 print("프로그램 끝입니다.")는 프로그램의 끝을 알려주는 출력 문장이기 때문에 들여쓰기를 하지 않아 조건에 걸리지 않게 하는 것이 바람직하다.

 

 

6. 다음 중첩 if 문을 elif를 사용하는 코드로 변경하시오.

score = 55

if score >= 60 :
    print("합격입니다.")
else :
    if score >= 40 :
        print("불합격이지만 과락은 아닙니다.")
    else :
        print("불합격이면서 과락입니다.")

★ 60 > score 라는 조건을 추가해 경계를 명확히 한다.

score = 55

if score >= 60 :
    print("합격입니다.")
elif 60 > score >= 40 :
    print("불합격이지만 과락은 아닙니다.")
else :
    print("불합격이면서 과락입니다.")

 

 

7. 두 사람이 주사위를 던져 더 큰 수가 나오면 이기는 게임이다. A가 이기거나 B가 이기거나 비기는 결과가 나와야 한다. 코드를 작성하시오.

import random

## A와 B가 던진 주사위 값이 저장되는 부분 ##
a = random.randrange(1,7)   # random.randrange(1,7)은 1 이상 7 미만의 난수를 리턴
b = random.randrange(1,7)

print("A의 주사위 숫자는 %d입니다." % a)
print("B의 주사위 숫자는 %d입니다." % b)

if a > b :
    print("A가 이겼습니다.")
elif b > a :
    print("B가 이겼습니다.")
else :
    print("비겼습니다.")

result

 

8. 139쪽의 [응용예제 02]를 수정해서 거북이 세 마리가 화면을 돌아다니다 서로 만나면 만난 위치에 도장을 찍고 계속 움직이는 프로그램을 작성하시오. 프로그램은 무한 반복된다. 거북이가 화면 밖으로 나가면 다시 각자의 처음 위치[거북이 1은 (-100, -100), 거북이 2는 (0, 0), 거북이 3은 (100, 100)]로 이동한다.

import turtle
import math
import random

## 전역 변수 선언 부분 ##
t1, t2, t3 = [None] * 3
t1X, t1Y, t2X, t2Y, t3X, t3Y = [0] * 6
swidth, sheight = 300, 300

        
## 메인 코드 부분 ##
if __name__ == "__main__" :
    turtle.title('거북이 만나기')
    turtle.setup(width = swidth + 50, height = sheight + 50)
    turtle.screensize(swidth, sheight)

    t1 = turtle.Turtle('turtle'); t1.color('red'); t1.speed(10); t1.penup()
    t2 = turtle.Turtle('turtle'); t2.color('green'); t2.speed(10); t2.penup()
    t3 = turtle.Turtle('turtle'); t3.color('blue'); t3.speed(10); t3.penup()

    t1.goto(-100, -100); t2.goto(0, 0); t3.goto(100, 100)

    while True:
        angle = random.randrange(0, 360)
        dist = random.randrange(1, 50)
        t1.left(angle); t1.forward(dist)
        angle = random.randrange(0, 360)
        dist = random.randrange(1, 50)
        t2.left(angle); t2.forward(dist)
        angle = random.randrange(0, 360)
        dist = random.randrange(1, 50)
        t3.left(angle); t3.forward(dist)

        t1X = t1.xcor(); t1Y = t1.ycor()
        t2X = t2.xcor(); t2Y = t2.ycor()
        t3X = t3.xcor(); t3Y = t3.ycor()

        ## 각 거북이가 화면 밖으로 나가면 각자의 처음 위치로 이동시키는 부분 ##
        if not((-swidth / 2 <= t1X and t1X <= swidth / 2) and (-sheight / 2 <= t1Y and t1Y <= sheight / 2)):
            t1.goto(-100, -100)
        if not((-swidth / 2 <= t2X and t2X <= swidth / 2) and (-sheight / 2 <= t2Y and t2Y <= sheight / 2)):
            t2.goto(0, 0)
        if not((-swidth / 2 <= t3X and t3X <= swidth / 2) and (-sheight / 2 <= t3Y and t3Y <= sheight / 2)):
            t3.goto(100, 100)

        ## 각각 두 거북이가 만났을 때 도장을 찍는 부분 ##
        if math.sqrt(((t1X - t2X) * (t1X - t2X)) + ((t1Y - t2Y) * (t1Y - t2Y))) <= 20 :
            t1.stamp(); t2.stamp()
        elif math.sqrt(((t1X - t3X) * (t1X - t3X)) + ((t1Y - t3Y) * (t1Y - t3Y))) <= 20 :
            t1.stamp(); t3.stamp()
        elif math.sqrt(((t2X - t3X) * (t2X - t3X)) + ((t2Y - t3Y) * (t2Y - t3Y))) <= 20 :
            t2.stamp(); t3.stamp()

turtle.done()

 

result

728x90
반응형

'python > 파이썬 for Beginner' 카테고리의 다른 글

파이썬 for Beginner Chapter 07  (15) 2019.04.15
파이썬 for Beginner Chapter 06  (0) 2019.04.15
파이썬 for Beginner Chapter 04  (3) 2019.04.08
파이썬 for Beginner Chapter 03  (7) 2019.03.25
파이썬 for Beginner Chapter 02  (8) 2019.03.16
댓글