디필의 요모조모

파이썬 for Beginner 5장 연습문제 본문

Programming Language/Python

파이썬 for Beginner 5장 연습문제

Diphylleia12 2019. 12. 7. 23:05

1. if 문의 기본 형식이다. 빈칸을 제시된 보기로 채우시오.
    실행할 문장 1, 실행할 문장 2, 조건식

    if 조건식:
        실행할 문장 1
    else :
        실행할 문장 2

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

    if a != 100:
        print("100이 아니군요.")
    else :
        print("100이군요.")

    100이군요.

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

    if a == 100:
        print("100이군요.")
        print("100이 아니군요.")

    아무것도 나오지 않는다.

4. 입력한 숫자가 3의 배수인지를 판단하는 프로그램이다. 빈칸을 채우시오.
    a = int(input("정수를 입력하세요:"))

    if a%3 == 0:
        print("3의 배수를 입력했군요.")
    else :
        print("3의 배수가 아니군요.")

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

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

    적당한 수입니다.

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

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

score = 55

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

 

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

import random
dice1, dice2 = 0, 0

dice1 = random.randrange(0,7)
print("A의 주사위 숫자는 %d입니다." % dice1)
dice2 = random.randrange(0,7)
print("B의 주사위 숫자는 %d입니다." % dice2)

if dice1 == dice2:
	print("비겼습니다.")
elif dice1 > dice2:
	print("A가 이겼습니다.")
else :
	print("B가 이겼습니다.")

7번 코드 실행 결과

 

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, exitcount = 300, 300, 0

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.penup()
    t2 = turtle.Turtle('turtle'); t2.color('green'); t2.penup()
    t3 = turtle.Turtle('turtle'); t3.color('blue'); t3.penup()
	
    t1.goto(-100, -100); t2.goto(0, 0); t3.goto(100, 100)
    t1.speed(0); t2.speed(0); t3.speed(0)

    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 (-swidth / 2 <= t1X and t1X <= swidth / 2) and (-sheight / 2 <= t1Y and t1Y <= sheight / 2) and \
            (-swidth / 2 <= t2X and t2X <= swidth / 2) and (-sheight / 2 <= t2Y and t2Y <= sheight / 2) and \
            (-swidth / 2 <= t3X and t3X <= swidth / 2) and (-sheight / 2 <= t3Y and t3Y <= sheight / 2) :
            pass
        
        else :
            t1.penup(); t1.goto(-100, -100)
            t2.penup(); t2.goto(0, 0)
            t3.penup(); t3.goto(100, 100)
        
        if math.sqrt(((t1X - t2X) * (t1X - t2X)) + ((t1Y - t2Y) * (t1Y - t2Y))) <= 20 or \
           math.sqrt(((t1X - t3X) * (t1X - t3X)) + ((t1Y - t3Y) * (t1Y - t3Y))) <= 20 or \
           math.sqrt(((t2X - t3X) * (t2X - t3X)) + ((t2Y - t3Y) * (t2Y - t3Y))) <= 20 :
            t1.stamp(); t2.stamp(); t3.stamp()
        
turtle.done()

8번 코드 실행 결과

 

Comments