안녕하세요 성조입니다.
최근에 파이썬의 웹 프레임워크인 Django를 활용해서 프로젝트를 진행 할 기회가 생겨서 기존에 봤던 파이썬 기초 내용들을 복습하면서 포스팅하지 않았던 코드들을 작성해서 올려보려 합니다!
주관적으로 풀이한 문제이므로 100%가 보장되는 객관적인 답변은 아닐 수 있는 부분을 참고하여 답을 체크해주세요!
01. 2번부터 100사이까지 모든 짝수를 출력하는 반복 루프를 작성한다.
코드
1
2
|
for i in range(2, 101, 2):
print(i, end=" ")
|
cs |
해설
2번부터 100사이의 모든 짝수를 출력하면 2단위로 값이 출력되면 된다. range(시작, 끝, 단계)로 2에서 시작해서 101이전까지 반복하는데 2값씩 커지면서 반복한다는 의미이다.
02. 어떤 사람이 복리이자율 7^로 1000만원을 저금했을 경우에 2000만원이 되는데 몇 년이 걸리는지 계산하기 위하여 다음과 코드를 작성하였다. 잘못된 점은 없는지 체크해 보자.
예시 코드
1
2
3
4
5
6
7
|
year = 0
balance = 1000
while balance >= 2000:
year = year + 1
interest = balance * 0.07
balance = balance + interest
print(year, "년이 걸립니다.")
|
cs |
코드
1
2
3
4
5
6
7
|
year = 0
balance = 1000
while balance <= 2000:
year = year + 1
interest = balance * 0.07
balance = balance + interest
print(year, "년이 걸립니다.")
|
cs |
해설
3번 라인의 balance의 값만 ">="에서 "<="로 값을 변경하면 된다.
이유는 처음 balance가 선언된 값이 while문에 들어갔을 때 balance >= 2000라는 조건이 있는데 이 조건을 충족하지 못하기 때문에 balance는 1번도 돌지 못하고 0번을 반복하고 종료한다. 그러므로 이하의 값으로 조건을 바꾸면 반복할 수 있게 된다.
03. 다음 코드의 출력을 예상해보자. 각 단계에서 변수의 값을 예상해보시오.
예시 코드
1
2
3
4
5
6
7
|
n = 1234
sum = 0
while n > 0:
digit = n %10
sum = sum + digit
n = n // 10
print(sum)
|
cs |
정답 : 10
해설
while 조건은 n이 0을 초과하는 경우이다.
digit 변수에 n을 %10으로 나눈 값이 입력된다.
%는 나머지를 연산하는 값이므로 n값을 10으로 나머지를 구한다면 1000, 200, 30까지는 10의 배수이므로 계산이 진행되지만 4를 정수 10으로는 나눌 수 없어서 4는 나머지 값이 된다.
sum(0) = sum(0) + digit(4)
(n(1234) = n(1234) // 10) -> n(123)의 값으로 반복문이 진행된다.
위 조건이 0보다 큰 경우까지 계산하는 것이므로 정리하면 다음의 연산 과정을 가진다.
sum += 4
sum +=3
sum +=2
sum +=1
즉, 4+3+2+1 = 10이 된다.
04. 사용자에게 곱셈 퀴즈를 내고 답을 사용자로부터 받는 프로그램에서 사용자가 올바른 답을 입력할 때까지 반복하도록 수정하여 보자.
코드
1
2
3
4
5
6
7
8
9
|
import random as rd
while(True):
x = rd.randint(1, 10)
y = rd.randint(1, 10)
cal = int(input(str(x)+"*"+str(y)+"는 "))
if(cal == (x*y)):
print("맞았습니다", end=" ")
break;
|
cs |
해설
입력 값과 랜덤 값이 같은 경우 프로그램을 종료해야 한다.
x 변수와 y 변수에 랜덤 함수를 활용하여 1~9까지의 랜덤 값을 입력받는다.
이후 입력받은 cal 값과 x, y 변수의 곱의 값이 같으면 "맞았습니다"를 출력하고 프로그래밍을 종료할 수 있도록 break;문을 걸어준다.
05. 사용자가 입력한 정수의 합을 계산하는 프로그램을 작성하자. 사용자가 0을 입력하기 전까지 정수를 계속하여 읽도록 한다.
코드
1
2
3
4
5
6
7
|
sum =0
while(True):
cal = int(input("정수를 입력하시오 : "))
if(cal==0):
break;
sum += cal
print("합은", sum ,"입니다.")
|
cs |
해설
0이 입력되기 전까지 무한 반복을 하기 위해서 while문의 조건을 True로 지정한다.
이후 값을 입력받았을 때 0이면 break 아니면 변수 sum에 cal 값을 더한다.
0이 나오면 프로그램을 종료 후 print로 값을 출력한다.
06. 난수 생성 함수를 사용하여서 2개의 주사위를 던졌을 때 나오는 수를 다음과 같이 출력하여 보자.
코드
1
2
3
4
5
6
|
import random as rd
for i in range(3):
x = rd.randint(1, 6)
y = rd.randint(1, 6)
print("첫번째 주사위=",x ,"두번째 주사위=",y)
|
cs |
해설
2개의 수를 random 함수를 통해서 출력하는데 책에는 조건이 따로 지정되지 않아서 출력된 3개를 기준으로 반복을 진행했다.
07. 다음 그래픽과 반복을 사용하여 눈 모양을 그려보자.
코드
1
2
3
4
5
6
7
8
9
10
|
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.color("blue")
t.lt(90)
for i in range (6):
t.fd(100); t.fd(-30); t.lt(60); t.fd(30); t.fd(-30)
t.rt(120); t.fd(30); t.fd(-30); t.lt(60); t.fd(-70); t.lt(60)
|
cs |
해설
거북이가 파란 선을 갖고 있으며, 위를 바라보기 때문에 위를 기준으로 시작한다.
총 6개의 가지가 있기 때문에 6번의 반복을 진행한다.
힌트 값에서 하나의 패턴을 그리는 코드를 입력하고 그 코드가 360도를 6으로 나눈 60만큼 lt할 수 있도록 조정하여 코드를 반복시켜주면 거북이가 눈 모양으로 그림을 그린다.
08. 우리는 이번 장에서 터틀 그래픽으로 별을 그려보았다. 이 코드를 응용하여서 다음과 같이 10개의 별을 그리는 프로그램을 작성하라. 별들은 시작 각도가 약간씩 다르다.
코드
1
2
3
4
5
6
7
8
9
10
|
import turtle
t = turtle.Turtle()
t.color("red")
for i in range(10):
for j in range(1,6):
t.lt(144)
t.fd(200)
t.lt(10)
|
cs |
해설
10개의 별을 그리기 위해서 for 문은 10까지만 반복한다.
하나의 별을 그리는데 5개의 선이 필요하기 때문에 2번째 반복문은 1~5까지 반복할 수 있도록 값을 대입한다.
하나의 정오각형 별을 그리기 위해서는 180도 선에서 36를 제외한 값인 144도를 회전한 선이 5개 모이면 하나의 정 오각형 별을 그릴 수 있게 된다. fd는 길이를 의미하므로 200만큼 전진을 의미한다.
그리고 힌트에서 주어진 lt 10을 활용하여 정 오각형을 회전시킨다.
09. 반복과 난수를 함께 사용하면 화면에 랜덤한 원을 그릴 수 있다. 화면에 10개의 랜덤한 원을 그리는 프로그램을 작성하라. 원의 중심과 반지름이 모두 난수이어야 한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import random as rd
import turtle
t = turtle.Turtle()
t.shape("turtle")
for i in range(10):
x=rd.randint(-150,150)
y=rd.randint(-150,150)
r=rd.randint(1,100)
t.up()
t.goto(x,y)
t.down()
t.circle(r)
|
cs |
해설
10번 반복하므로 range의 값은 10이다.
x, y에 -150~150의 값을 줬는데 이 값이므로 x 범위, y 범위를 정해서 그 사이의 값만큼 이동한다.
이후 랜덤 한 원을 그린다.
10. 다음과 같이 거북이를 왕복 달리기시키는 프로그램을 작성해보자.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import turtle
t = turtle.Turtle()
t.shape("turtle")
for i in range(5):
t.fd(200)
t.rt(90)
t.fd(20)
t.rt(90)
t.fd(200)
t.lt(90)
t.fd(20)
t.lt(90)
|
cs |
해설
(사실 이런 문제가 자주 사용될지 모르겠어서 노가다를 진행해서 풀었다.)
11. 다음의 터틀 그래픽 프로그램을 분석해보자. 학습하지 않은 함수가 있다면 인터넷에서 조사하여 보자.
예시 코드
1
2
3
4
5
6
7
8
9
10
11
12
|
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.color("red", "yellow")
t.begin_fill()
while True:
t.forward(200)
t.left(170)
if abs(t.pos())< 1:
break
t.end_fill()
|
cs |
해설
라인 1) turtle 함수 불러오기
라인 3) t에 turtle.Turtle()함수 정의
라인 4) 거북이 소환
라인 5) (선, 내부)색상 지정
라인 6) 색을 칠하는 메소드
라인 7) 무한 반복
라인 8) 앞으로 200전진
라인 9) 왼쪽으로 170도 방향 전환
라인 10) 거북이의 절대 위치 좌표를 구하는데 1보다 작으면 즉, 0이 되면 break문을 활용하여 종료한다.
라인 12) end_fill은 칠 해준다.
https://www.geeksforgeeks.org/turtle-end_fill-function-in-python/
12. 터틀 그래픽과 반복을 사용하여 싸인(sine) 그래프를 그려보자. 거북이를 싸인값에 따라서 움직이면 된다.
코드
1
2
3
4
5
6
7
8
9
10
11
|
import turtle
import math
t = turtle.Turtle()
t.shape("turtle")
t.color("red")
for i in range(360):
sine=math.sin(math.pi*i/180)
print(sine)
t.goto(i,sine*100)
|
cs |
해설
4~6 거북이 보여주는 코드, 색상 지정 코드를 지정한다.
HINT 공식의 대입하는데 math의 sin 함수를 활용하여 풀이를 진행하면 9번 라인의 코드가 된다.
오답이나 문제가 있는 경우 언제든지 댓글 부탁드리겠습니다!
궁금하신 부분도 언제든 댓글 부탁드립니다!
감사합니다 다음 포스팅 때 뵙겠습니다!
'개인 학습용 해설 > 두근두근파이썬' 카테고리의 다른 글
[두근두근파이썬] 7장 연습문제 개인풀이 (2) | 2022.10.17 |
---|---|
[두근두근 파이썬] 5장 연습문제 개인풀이 (1) | 2021.07.23 |
[두근두근 파이썬] 4장 연습문제 개인풀이 (0) | 2021.05.20 |
[두근두근 파이썬] 3장 연습문제 개인풀이 (0) | 2021.02.07 |
[두근두근 파이썬] 2장 연습문제 개인풀이 (0) | 2021.02.05 |