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

 

 

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

Self Study

4-1 돈(예로 777777)을 입력하면 50000원, 10000원, 5000원, 1000원 지폐로 교환하는 프로그램을 작성해 보자.

 

더보기

답 :

## 변수 선언 부분 ##
money, c50000, c10000, c5000, c1000 = 0, 0, 0, 0, 0

## 메인 코드 부분 ##
money = int(input("지폐로 교환할 돈은 얼마? "))

c50000 = money // 50000
money %= 50000

c10000 = money // 10000
money %= 10000

c5000 = money // 5000
money %= 5000

c1000 = money // 1000
money %= 1000

print("\n 50000원짜리 ==> %d장"%c50000)
print("10000원짜리 ==> %d장"%c10000)
print("5000원짜리 ==> %d장"%c5000)
print("1000원짜리 ==> %d장"%c1000)
print("바꾸지 못한 잔돈 ==> %d원 \n"%money)

 

4-2 시프트할 숫자와 출력할 횟수를 입력받는 프로그램을 작성해 보자.

 

더보기

답 :

a=int(input("시프트 할 숫자는? "))
b=int(input("출력 할 횟수는? "))
result = 0
i = 0

for i in range(1, b+1) :
    result = a << i
    print("%d << %d = %d" % (a, i, result))

for i in range(1, b+1) :
    result = a >> i
    print("%d << %d = %d" % (a, i, result))

 

연습문제

1. 다음 각 산술 연산자 중 설명에 맞는 연산자를 보기에서 고르세요.

= + - * ^ ~ / // % ** *** & # $ @ ? ==

(1) 대입 연산자

(2) 나누기(몫)

(3) 나머지 값

(4) 제곱

 

더보기

답 : (1) =     (2) //     (3) %     (4) **

 

2. 다음과 같이 값이 들어 있을 때, 각 문항의 계산 결과를 쓰세요.

n1, n2, n3 = 1, 2, 3

(1) n1 + n2 * n3

(2) n1 * n2 + n3

(3) n1 - n2 * n3

(4) n1 * n2 - n3

 

더보기

답 : (1) 7     (2) 5     (3) -5     (4) -1

 

3. 다음 각 빈칸에 들어갈 함수의 이름을 쓰세요.

문자열을 정수로 변환하는 함수는 [     ①     ]( ), 실수로 변환하는 함수는 [     ②     ]( ) 입니다. 반대로 숫자를 문자열로 변경하는 함수는 [     ③     ]( ) 입니다.

 

더보기

답 : ① int     ② float     ③ str

 

4. 다음 코드를 실행한 후 출력되는 결과를 쓰세요.

num = 100
num += 1
num -= 1
num *= 1
num /= 1
num = int(num)
print(num)

 

더보기

답 : 100

 

5. 다음 각 관계 연산자의 결과를 True 또는 False로 선택하세요.

num1, num2 = -100, 100

(1) num1 == num2

(2) num1 >= num2

(3) num1 <= num2

(4) num != num2

 

더보기

답 : (1) Fasle    (2) False    (3) True    (4) True

 

6. 다음 각 논리 연산자의 결과를 True 또는 False로 선택하세요.

num1, num2 = -100, 100

(1) (num1 == num2) and (num1 != num2)

(2) (num1 == num2) or (num1 != num2)

(3) (num1 >= num2) and (num1 <= num2)

(4) (num1 >= num2) or (num1 <= num2)

 

더보기

답 : (1) Fasle    (2) False    (3) True    (4) True

 

7. 다음 각 비트 연산자의 결과를 쓰세요.

num1, num2 = 6, 1

(1) num1 & num2

(2) num1 | num2

(3) num1 >> num2

(4) num1 << num2

 

더보기

답 : (1) 0     (2) 7     (3) 3     (4) 12

 

8. 다음 각 비트 연산자의 결과를 쓰세요.

& () == and << >= +

 

더보기

답 : (), +, <<, &, >=, ==, and

 

9. 500원, 100원, 50원, 10원의 동전의 개수를 입력했을 때, 총 합계를 출력하는 코드를 작성하세요.

실행 결과
500원짜리 개수 --> 7
100원짜리 개수 --> 13
50원짜리 개수 --> 9
10원짜리 개수 --> 2
## 동전의 합계 ==> 5270원

 

더보기

답 :

## 변수 선언 부분 ##
a, b, c, d, c500, c100, c50, c10 = 0, 0, 0, 0, 0, 0, 0, 0

## 메인 코드 부분 ##
a = int(input("\n500원짜리 개수 ==> "))
b = int(input("100원짜리 개수 ==> "))
c = int(input("50원짜리 개수 ==> "))
d = int(input("10원짜리 개수 ==> "))

c500 = a * 500

c100 = b * 100

c50 = c * 50

c10 = d * 10


print("## 동전의 합계 ==> ", c500 + c100 + c50 + c10, "원")

 

10. [응용예제 02]를 활용해서 비트 논리곱을 구현합니다. 2진수 2개를 입력받아서 각 숫자에 대한 2진수와 비트 논리합(|)의 결과 2진수를 출력하는 프로그램을 작성하세요. 예로 1111011과 111001000을 입력하면 1111011 | 111001000의 결과 11111101이 차례로 출력된 결과는 다음과 같습니다.

실행 결과
2진수를 입력하세요 : 1111011
2진수를 입력하세요 : 111001000

 

더보기

답 :

아래의 첫 번째 코드는 def 함수를 이용하여 중복을 제거한 코드입니다. 그러나 현재 교재 과정에서는 아직 함수를 배우지 않았기 때문에 def 함수를 쓰지 않은 코드(두 번째)도 첨부하였습니다.

import turtle

num1, num2, result = 0, 0, 0
swidth, sheight = 1000, 300
curX, curY = 0, 0

def binary(Bin,num):
    curX = swidth / 2
    for i in range(len(Bin) - 2):
        turtle.goto(curX, curY)
        if num & 1 :
            turtle.color('red')
            turtle.turtlesize(2)
        else :
            turtle.color('blue')
            turtle.turtlesize(1)
        turtle.stamp()
        curX -= 50
        num >>= 1
        
if __name__ == "__main__" :
    turtle.title('거북이로 두 숫자 비트 논리합(|) 연산하기')
    turtle.shape('turtle')
    turtle.setup(width = swidth + 50, height = sheight + 50)
    turtle.screensize(swidth, sheight)
    turtle.penup()
    turtle.left(90)

    num1 = int(input("2진수를 입력하세요 : "), 2)
    num2 = int(input("2진수를 입력하세요 : "), 2)
    binary1 = bin(num1)
    binary2 = bin(num2)
    result = num1 | num2

    curY = 50
    binary(bin(num1),num1)
    curY = 0
    binary(bin(num2),num2)
    curY = -50
    binary(bin(result),result)
    
turtle.done()

 

import turtle

## 전역 변수 부분 ##
num1, num2, result = 0, 0, 0
swidth, sheight = 1000, 300
curX, curY = 0, 0

## 메인 코드 부분 ##
if __name__ == "__main__" :
    turtle.title('거북이로 2진수 표현하기')
    turtle.shape('turtle')
    turtle.setup(width = swidth + 50, height = sheight + 50)
    turtle.screensize(swidth, sheight)
    turtle.penup()
    turtle.left(90)
    
    num1 = int(input("숫자를 입력하세요 : "), 2)
    num2 = int(input("숫자를 입력하세요 : "), 2)
    binary1 = bin(num1)
    binary2 = bin(num2)
    result = num1 | num2
    binary3 = bin(result)
    curX = swidth / 2
    curY = 0
    
    for i in range(len(binary1) - 2):
        turtle.goto(curX, curY)
        if num1 & 1 :
            turtle.color('red')
            turtle.turtlesize(2)
        else:
            turtle.color('blue')
            turtle.turtlesize(1)
        turtle.stamp()
        curX -= 50
        num1 >>= 1

    curX = swidth / 2
    curY = -50
    
    for i in range(len(binary2) - 2):
        turtle.goto(curX, curY)
        if num2 & 1 :
            turtle.color('red')
            turtle.turtlesize(2)
        else:
            turtle.color('blue')
            turtle.turtlesize(1)
        turtle.stamp()
        curX -= 50
        num2 >>= 1

    curX = swidth / 2
    curY = -100
    
    for i in range(len(binary3) - 2):
        turtle.goto(curX, curY)
        if result & 1 :
            turtle.color('red')
            turtle.turtlesize(2)
        else:
            turtle.color('blue')
            turtle.turtlesize(1)
        turtle.stamp()
        curX -= 50
        result >>= 1

turtle.done()

 

 

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

Self Study

3-1 print() 함수를 이용하여 별표가 출력되도록 프로그램을 작성해 보자.

 

더보기

답 : 

print("***********")
print(" ********* ")
print("  *******  ")
print("   *****   ")
print("    ***    ")
print("     *     ")
print("    ***    ")
print("   *****   ")
print("  *******  ")
print(" ********* ")
print("***********")

 

 

3-2 Code03-04.py는 16, 10, 8, 2 이외의 숫자를 입력하면 오류가 발생한다. 코드를 수정해서 16, 10, 8, 2 외의 숫자를 입력하면 '16, 10, 8, 2 숫자 중 하나만 입력하세요.'라는 메시지를 출력하고 프로그램을 종료하도록 if 문을 추가해 보자.

힌트1 같지 않다는 !=로 비교한다.

힌트2 여러 조건이 동시에 참이어야 하는 관계 연산자는 and이다.

 

더보기

답 :

sel = int(input("입력 진수 결정(16/10/8/2) : "))

if sel == 16 :
    num = input("값 입력 : ")
    num10 = int(num, 16)
if sel == 10 :
    num = input("값 입력 : ")
    num10 = int(num, 10)
if sel == 8 :
    num = input("값 입력 : ")
    num10 = int(num, 8)
if sel == 2 :
    num = input("값 입력 : ")
    num10 = int(num, 2)
if sel != 16 and 10 and 8 and 2 :
    print("16, 10, 8, 2 숫자 중 하나만 입력하세요.")
    exit()


print("16진수 ==> ", hex(num10))
print("10진수 ==> ", (num10))
print("8진수 ==> ", oct(num10))
print("2진수 ==> ", bin(num10))

 

연습문제

1. 다음 각 보기를 실행하여 다른 값이 출력하는 것을 하나 고르세요.

 

① print("100")     ② print(100)     ③print(50+50)     ④print("50+50")

 

더보기

답 : 4

 

해설 : 다른 것들은 100이 출력되지만 4번은 문자열을 그대로 출력하기 때문에 50+50이 출력된다.

 

2. 다음 코드의 실행 결과를 고르세요.

print('%d / %d = %d' % (5, 10, 5/10))

① 5 / 10 = 0.5     ② 5 / 10 = 0.50000     ③ 5 / 10 = 0     ④ 5 / 10 = 0.00000

 

더보기

답 : 3

 

해설 : %d는 정수로 표시하기 때문에 5/10을 0로 출력한다.

 

3. 다음 코드의 실행 결과를 예상해 보세요.

 

(1) print("%04d" % 876)

(2) print("%5s" % "CookBook")

(3) print("%1.1f" % 123.45)

 

더보기

답 : (1) 0876    (2) CookBook    (3) 123.5

 

4. 다음 코드의 실행 결과를 고르세요.

print("{2:d} {0:d} {1:d}".format(111, 222, 333))

① 111 222 333    ② 333 222 111    ③ 333 111 222     ④ 222 333 111

 

더보기

답 : 3

 

5. 다음 보기 중에서 설명하는 이스케이프 문자를 각각 고르세요.

\n \t \b \\ \' \"

(1) 다음 탭으로 이동

(2) 뒤로 한 칸 이동

(3) \를 출력

 

더보기

답 : (1) \t    (2) \b    (3) \\

 

6. 파이썬에서 제공되는 데이터 형식입니다. 거리가 먼 것을 하나 고르세요.

 

① 불 : bool    ② 정수 : int    ③ 실수 : float    ④ 문자 : character    ⑤ 문자열 : str

 

더보기

답 : 4

 

7. 다음 코드 중에서 오류가 발생하는 것을 모두 고르세요.

 

① num1 = 100

② 100 = num1

③ num1 = num2 = 100

④ num1 = 100 = num2 = 100

⑤ num1 = num2 = num3 = 100

 

더보기

답 : 2, 4

 

8. 코드를 실행하면 오류가 발생합니다. 그 이유를 설명하세요.

a = b = 10 = c = d = 20

 

더보기

답 : 변수는 오른쪽에서 왼쪽으로 대입된다. 값을 할당할 변수는 왼쪽, 값은 오른쪽에 써야하기 때문이다.

 

9. 다음 10진수, 2진수, 16진수의 조합 중 틀린 것을 모두 고르세요.

 

① 0, 0000, 0     ② 2, 0011, 2    ③ 7, 0111, 7    ④ 11, 1001, C    ⑤ 16, 1111, F

 

더보기

답 : 2, 4, 5

해설 : 2번의 2진수 0011은 10진수 3이다. 4번의 2진수 1001과 16진수 C는 각각 10진수 9, 12이다. 5번의 2진수 1111과 16진수 F는 10진수 15이다.

 

10. 각 진수를 10진수로 변환하세요.

 

(1) 2진수 0011

(2) 2진수 01010

(3) 16진수 11

(4) 8진수 17

 

더보기

답 : (1) 3     (2) 10     (3) 17     (4) 15

 

11. 다음 각 진수를 모두 10진수로 변환하세요.

 

(1) 1011(2진수)

(2) 1A(16진수)

 

더보기

답 : (1) 11     (2) 26

 

12. 다음 빈칸에 들어갈 함수 이름을 쓰세요.

[     ①     ](숫자) 함수는 숫자를 16진수로, [     ②     ](숫자) 함수는 숫자를 8진수로, [     ③     ](숫자) 함수는 숫자를 2진수로 출력합니다.

 

더보기

답 : ① hex     ② oct     ③ bin

 

13. 오류가 발생하는 것을 모두 고르고, 그 이유를 간단히 설명하세요.

 

① int('1002', 2)

② int('1008', 8)

③ int('AAFG', 16)

 

더보기

답 : 2, 3

해설 : 2번 8진수는 0부터 8까지의 숫자만 사용할 수 있기 때문에 오류가 발생한다. 3번 16진수는 0부터 9까지의 숫자와 A부터 F까지의 문자로 이루어져 있는데 G는 16진수가 아니기 때문에 오류가 발생한다.

 

14. 다음은 데이터 형에 대한 설명입니다. 설명이 올바르지 않은 것을 모두 고르세요.

 

① 정수형은 <class 'int'>로 표현된다.

② 정수형은 크기가 무제한이다.

③ 불형은 True, False, Null 세 값 중 하나가 저장된다.

④ 실수형은 소수점이 있다.

⑤ 문자는 작은따옴표, 문자열은 큰따옴표로 지정한다.

 

더보기

답 : 3, 5

해설 : 3번 불형은 True와 False만 저장할 수 있다. 5번 파이썬은 작은따옴표, 큰따옴표 둘 중 아무것이나 사용해도 된다.

 

15. 다음과 같은 결과가 나오도록 코드의 빈 곳을 채우세요.

실행 결과
10진수 ==> 12345678
16진수 ==> 0xbc614e
  8진수 ==> 0o57060516
  2진수 ==> 0b101111000110000101001110
num= 12345678
[          ]
print("10진수 ==> ", num)
print("16진수 ==> ", hex_num)
print("  8진수 ==> ", oct_num)
print("  2진수 ==> ", bin_num)

 

더보기

답 :

hex_num = hex(num)
oct_num = oct(num)
bin_num = bin(num)

 

16. 글자 하나를 입력하면 2, 8, 10, 16진수인지 아닌지를 구분하는 코드를 작성해 보세요.

힌트1 if ~ elif ~ else 문을 사용하세요(5장에서 다룹니다)

힌트2 2진수는 0~1, 8진수는 0~7, 10진수는 0~9, 16진수는 0~F 까지의 범위입니다.

 

더보기

답 :

num = input("글자 입력 : ")

if '0' <= num <= '1' :
    print("2진수 또는 8진수 또는 10진수 또는 16진수 입니다.")
elif '0' <= num <= '7' :
    print("8진수 또는 10진수 또는 16진수 입니다.")
elif '0' <= num <= '9' :
    print("10진수 또는 16진수 입니다.")
elif '0' <= num <= '9' or 'A' <= num <='F' or 'a' <= num <='f' :
    print("16진수 입니다.")
else :
    print("숫자가 아닙니다.")

 

 

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

 

Self Study

2-1 터틀 그래픽 프로그램을 수정해서 마우스 왼쪽 버튼과 마우스 가운데 버튼의 기능을 통합해 보자. 즉 마우스 왼쪽 버튼만 눌러도 임의의 색상이 지정되고 거북이의 크기가 변경되면서 선이 그려지도록 하자.

더보기

답 :

import turtle
import random

## 함수 선언 부분 ##
def screenLeftClick(x, y):
    global r, g, b
    turtle.pencolor((r, g, b))
    turtle.pendown()
    turtle.goto(x, y)
    tSize = random.randrange(1, 10)
    turtle.shapesize(tSize)
    r = random.random()
    g = random.random()
    b = random.random()
    
def screenRightClick(x, y):
    turtle.penup()
    turtle.goto(x, y)
    
## 변수 선언부분 ##
pSize = 10
r, g, b = 0.0, 0.0, 0.0

## 메인 코드 부분 ##
turtle.title('거북이로 그림 그리기')
turtle.shape('turtle')
turtle.pensize(pSize)

turtle.onscreenclick(screenLeftClick, 1)
turtle.onscreenclick(screenRightClick, 3)

turtle.done()

 

연습문제

1. 다음은 변수에 대한 설명입니다. 거리가 먼 것을 하나 고르세요.

더보기

답 : 4

 

2. n1과 n2 변수를 더해서 n3에 넣으라는 의미의 코드를 고르세요.

더보기

답 : 3

 

3. 다음 코드가 출력하는 결과를 고르세요.

n1 = 10
n2 = 5
res = n1 - n2
print(n1, '-', n2, '=', res)
더보기

답 : 2

 

4. 파이썬 IDLE을 종료하는 함수를 고르세요.

더보기

답 : 4

 

5. 다음 코드를 실행하면 출력되는 결과를 쓰세요.

더보기

답 : 10 * 5 = 50

 

6. 다음 코드는 두 수를 입력받고 계산하는 코드이지만 실행 오류가 발생합니다. 정상적으로 실행되도록 3행을 수정하세요.

n1 = input("숫자1-->")
n2 = input("숫자2-->")
res = n1 = n2
print(n1, "+", n2, "=", res)

실행 결과

숫자1-->100

숫자2-->50

100 + 50 = 150

 

더보기

답 :

n1 = input("숫자1-->")
n2 = input("숫자2-->")
res = int(n1) + int(n2)
print(n1, "+", n2, "=", res)

 

7. 정수 3개를 입력받은 후에 세 숫자의 덧셈 및 곱셈을 출력하는 코드를 작성하세요.

더보기

답 :

a=int(input("숫자1 입력: "))
b=int(input("숫자2 입력: "))
c=int(input("숫자3 입력: "))
result=a+b+c
print(a, "+", b, "+", c, "=", result)
result=a*b*c
print(a, "*", b, "*", c, "=", result)

 

8. 화면에 마우스 오른쪽 버튼을 클릭하면 거북이가 마우스를 클릭한 위치까지 랜덤한 색상으로 선을 그리면서 이동한 후, 랜덤한 크기, 각도의 거북이 도장이 찍히는 프로그램을 작성하세요.

힌트1 거북 색상은 turtle.color(r, g, b)로 설정한다.

힌트2 거북 도장은 turtle.stamp()를 사용한다.

더보기

답 :

import turtle
import random

## 함수 선언 부분 ##
def screenRightClick(x, y):
    global r, g, b
    turtle.color(r, g, b)
    turtle.stamp()
    turtle.pencolor((r, g, b))
    turtle.pendown()
    turtle.goto(x, y)
    tangle = random.randrange(1, 360)
    tSize = random.randrange(1, 10)
    turtle.shapesize(tSize)
    r = random.random()
    g = random.random()
    b = random.random()
  
## 변수 선언부분 ##
pSize = 10
r, g, b = 0.0, 0.0, 0.0

## 메인 코드 부분 ##
turtle.title('거북이로 그림 그리기')
turtle.shape('turtle')
turtle.pensize(pSize)

turtle.onscreenclick(screenRightClick, 3)

turtle.done()

 

 

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

 

+ Recent posts