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()
*주의사항 : 제가 직접 푼 것이므로 틀린 부분이 있을 수 있습니다. 오타나 틀린 부분 지적 환영!
'Back-End > Python' 카테고리의 다른 글
파이썬 for Beginner 3판 6장 Self Study + 연습문제 답(더보기 클릭) (2) | 2023.05.04 |
---|---|
파이썬 for Beginner 3판 5장 Self Study + 연습문제 답(더보기 클릭) (0) | 2023.05.02 |
파이썬(Python) pipenv 오류 해결 방법 (0) | 2023.05.01 |
파이썬 for Beginner 3판 3장 Self Study + 연습문제 답(더보기 클릭) (1) | 2023.04.29 |
파이썬 for Beginner 3판 2장 Self Study + 연습문제 답(더보기 클릭) (1) | 2023.04.28 |