Self Study

5-1 Code05-08.py를 다음 조건처럼 좀 더 세분화해 보자.

95점 이상 : A+, 90점 이상 : A0, 85점 이상 : B+, 80점 이상 : B0,

75점 이상 : C+, 70점 이상 : C0, 65점 이상 : D+, 60점 이상 : D0, 60점 미만 : F

 

더보기

답 :

score = int(input("점수를 입력하세요 : ")) if score >= 95 : print("A+") elif score >= 90 : print("A") elif score >= 85 : print("B+") elif score >= 80 : print("B") elif score >= 70 : print("C+") elif score >= 75 : print("C") elif score >= 65 : print("D+") elif score >= 60 : print("D") else : print("F") print("학점입니다. ^^")

 

 

5-2 [프로그램 2]의 두 번째 기능처럼 두 숫자를 입력받고 두 숫자 사이의 합계를 구하는 프로그램을 만들어 보자. 단 1씩 증가하지 않고 증가하는 숫자도 입력받는다. 예를 들어 1, 100, 3을 입력하면 1+4+...+100의 합계를 구한다.

힌트1 range(시작값, 끝값+1, 증가값) 형식으로 사용한다.

 

더보기

답 :

## 변수 선언 부분 ##
select, answer, num1, num2, num3 = 0, 0, 0, 0, 0

## 메인 코드 부분 ##
num1 = int(input("*** 첫 번째 숫자를 입력하세요 : "))
num2 = int(input("*** 두 번째 숫자를 입력하세요 : "))
num3 = int(input("*** 더할 숫자를 입력하세요 : "))
for i in range(num1, num2 + 1, num3) :
    answer = answer + i
print("%d+%d+...+%d는 %d입니다." % (num1, num1+num3, num2, answer))

 

5-3 숫자를 하나 입력받고, 그 숫자가 소수인지를 체크하는 프로그램을 만들어 보자.

힌트 소수란 2부터 자기자신-1까지의 숫자로 나눠서 나누어 떨어지는 숫자가 하나도 없는 수를 말한다. 예를 들어 7의 경우 2, 3, 4, 5, 6으로 각각 나누어서 나누어 떨어지는 수가 하나도 없으므로 소수다.

 

더보기

답 :

## 변수 선언 부분 ##
num1 = 0

## 메인 코드 부분 ##
num1 = int(input("*** 숫자를 입력하세요 : "))
for i in range(2, num1) :
    if num1 % i == 0 :
        print("%d는 소수가 아닙니다." %num1)
        break
else :
    print("%d는 소수 입니다." %num1)

 

연습문제

1. 다음은 num이 100인 경우에 실행하는 if 문입니다. 문법이 옳은 코드를 고르세요.

① if num = 100 :

② if num is 100 :

③ if num equal 100 :

④ if num == 100 :

⑤ if num != 100 :

 

더보기

답 : 4, 5

해설 : if 문에는 관계 연산자가 들어가야한다.

 

2. 다음 코드가 출력하는 것을 고르세요.

num = 0
if num > 0 :
	print("케이스1", end = ' ')
else :
	print("케이스2", end = ' ')
print("케이스3", end = ' ')

① 케이스1

② 케이스2

③ 케이스3

④ 케이스1 케이스2

⑤ 케이스2 케이스3

⑥ 케이스1 케이스3

 

더보기

답 : 5

 

3. 다음은 입력한 수가 5의 배수인지 체크하는 코드입니다. 빈칸을 채우세요.

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

if [          ] :
	print("5의 배수가 아닙니다.")
else :
	print("5의 배수입니다.")

 

더보기

답 : num % 5 != 0

 

4. 다음은 장학생, 합격, 불합격으로 구분하는 중첩 if 문입니다. 이를 if ~elif 문으로 변경하세요.

score = int(input("점수를 입력하세요 : "))

if score >= 90 :
	print("장학생", end = ' ')
else :
	if score >= 60 :
    	print("합격", end = ' ')
    else :
    	print("불합격", end = ' ')
        
print("입니다. ^^")

 

더보기

답 :

score = int(input("점수를 입력하세요 : "))

if score >= 90 :
	print("장학생", end = ' ')
elif score >= 60 :
	print("합격", end = ' ')
else : 
	print("불합격", end = ' ')
        
print("입니다. ^^")

 

5. 다음 코드의 2~5행을 삼항 연산자로 변경한 것으로 옳은 것을 고르세요.

num = 5
if num % 2 == 0 :
	res = '짝수'
else :
	res = '홀수'
print(res)

① res = '홀수' if num % 2 == 0 else '짝수'

② res = if num % 2 == 0 '짝수' else '홀수'

③ res = '짝수' if num % 2 == 0 else '홀수'

④ res = if num % 2 == 0 '홀수' else '짝수'

 

더보기

답 : 3

 

6. 랜덤하게 1~20까지의 숫자를 20개 채운 후에, 뽑힌 숫자 목록을 추출하는 코드를 작성하세요.

실행 결과
생성된 리스트 [1, 17, 8, 13, 8, 19, 13, 1 11, 17, 11, 11, 4, 4, 4, 17, 17, 1, 4, 9]
숫자 1은(는) 뽑혔습니다.
숫자 4은(는) 뽑혔습니다.
숫자 8은(는) 뽑혔습니다.
숫자 9은(는) 뽑혔습니다.
숫자 11은(는) 뽑혔습니다.
숫자 13은(는) 뽑혔습니다.
숫자 17은(는) 뽑혔습니다.
숫자 19은(는) 뽑혔습니다.

 

더보기

답 :

import random

numbers = []
for num in range(0,21) :
    numbers.append(random.randrange(0,21))

print("생성된 리스트", numbers)

for num in numbers :
    print("숫자 %d는(은) 뽑혔습니다." %num)

 

7. 다음은 두 사람이 주사위를 던져서 높은 숫자가 나오면 이기는 게임입니다. 출력 결과는 A가 이기거나, B가 이기거나, 비기는 결과가 나와야 합니다. 코드를 작성하세요.

 

더보기

답 :

아래의 첫 번째 코드는 파이썬 내장함수인 sum을 이용한 코드입니다. 내장함수를 사용하지 않은 코드(두 번째)도 첨부하였습니다.

import random

## 전역 변수 선언 부분 ##
diceA, diceB = [], []

## 메인 코드 부분 ##

for A in range(2):
    diceA.append(random.randrange(1, 7))
    
print("A의 주사위 숫자는 %s입니다." % diceA)

for B in range(2):
    diceB.append(random.randrange(1, 7))
    
print("B의 주사위 숫자는 %s입니다." % diceB)

if sum(diceA) > sum(diceB):
    print("A가 이겼네요.")
elif sum(diceA) < sum(diceB):
    print("B가 이겼네요.")
else:
    print("둘이 비겼네요.")

 

import random

## 전역 변수 선언 부분 ##
diceA1, diceA2, diceB1, diceB2 = 0, 0, 0, 0

## 메인 코드 부분 ##

diceA1 = random.randrange(1, 7)
diceA2 = random.randrange(1, 7)
print("A의 주사위 숫자는 %d %d입니다." % (diceA1, diceA2))
diceB1 = random.randrange(1, 7)
diceB2 = random.randrange(1, 7)
print("B의 주사위 숫자는 %d %d입니다." % (diceB1, diceB2))

if diceA1 + diceA2 > diceB1 + diceB2 :
    print("A가 이겼네요.")
elif diceA1 + diceA2 < diceB1 + diceB2 :
    print("B가 이겼네요.")
else:
    print("둘이 비겼네요.")

 

8. [응용예제 02]를 변경해서 거북이 3마리를 생성한 후 화면을 돌아다닐 때, 서로 만나면 크기가 랜덤하게 변경된 후, 계속 움직이는 프로그램을 작성합니다. 즉, 무한루프로 반복됩니다. 만약, 화면 밖으로 나가면 중앙(0, 0) 위치로 다시 데려옵니다.

힌트1 거북이의 크기는 1~9 값을 랜덤하게 추출한다.

힌트2 거북이의 속도를 올리려면 turtle.speed(10)을 사용하면 된다.

 

더보기

답 :

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(10); t2.speed(10); t3.speed(10);
    
    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(0, 0)
            t2.penup(); t2.goto(0, 0)
            t3.penup(); t3.goto(0, 0)

        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.turtlesize(random.randrange(1, 10)); t2.turtlesize(random.randrange(1, 10)); t3.turtlesize(random.randrange(1, 10))

    turtle.done()

 

 

*주의사항 : 제가 직접 푼 것이므로 틀린 부분이 있을 수 있습니다. 오타나 틀린 부분 지적 환영!

+ Recent posts