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