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

 

 

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

+ Recent posts