# data[].attributes.body
import turtle

t=turtle.Pen()

t.speed(50)

t.pencolor('yellow')

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.pencolor('white')

t.left(90)

t.forward(20)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.pencolor('yellow')

t.left(90)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.right(45)

t.forward(100)

t.pencolor('white')

t.left(90)

t.forward(20)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.pencolor('yellow')

t.right(45)

t.forward(20)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

사이사이 비어있는 별을 표현하여서 사이에는 화이트 색으로 배경색과 동일하게 보이지 않게 하고 그다음은 별색인 노란색으로 별을 그려서 표햔하였다.

# data[].attributes.body
import turtle

# 화면 설정

screen = turtle.Screen()

screen.bgcolor("white")

# 거북이 설정

t = turtle.Turtle()

t.shape("turtle")

t.speed(3)

# 별 그리기

t.penup()

t.goto(0, -100)

t.pendown()

t.color("sky blue")

# 별 모양 그리기

for _ in range(5):

t.forward(200) # 별의 한 변 길이

t.right(144) # 144도 회전

# 프로그램 종료 대기

t.hideturtle() # 거북이 숨기기

turtle.done() # 터틀 창을 닫지 않고 유지

이 코드는 하늘색 별을 그리는 코드이다. 첫번째로 커서를 그림에 내려 커서를 거북이로 바꾼 다음 스피드를 3으로 적당한 속도로 정한 다음 for문을 써서 길이를 5로 하고 각도를 144를 해 별을 그렸다. 그린 이유는 내가 하늘색을 좋아하기도 하고, 별은 되게 희망이라는 상징을 가진 이미지 라고 생각해 내 미래에 대한 희망을 나타내고 싶어 별을 그리게 되었다. 그리고 이러한 활동을 함으로써 수업에서 했던 내용을 다시 복습을 하며 재미를 느꼈고, 터틀 라이브러리에 대해 더 알아보고 싶다는 생각이 들었다.

# data[].attributes.body
[프로그램 코드]

import turtle

t=turtle.Pen()

t.forward(100)

t.right(240)

t.forward(100)

t.left(120)

t.forward(100)

t.left(30)

t.forward(60)

t.left(90)

t.forward(100)

t.right(270)

t.forward(60)

t.right(180)

t.forward(60)

t.left(90)

t.forward(20)

t.right(90)

t.forward(100)

t.right(90)

t.forward(140)

t.right(90)

t.forward(100)

t.right(90)

t.forward(140)

t.right(90)

t.forward(100)

t.left(90)

t.forward(30)

t.left(90)

t.forward(150)

t.right(90)

t.forward(30)

t.right(90)

t.forward(150)

t.right(90)

t.forward(230)

t.right(90)

t.forward(150)

t.left(90)

t.forward(30)

t.left(90)

t.forward(150)

t.left(90)

t.forward(260)

프로그램 코드로 궁전을 표현한 것이다. 먼저 지붕과 건물이 그려지도록 한 다음에 차례로 옆 건물들이 그려지도록 하였다. 프로그램 코드를 작성하면서 각도를 바꾸는 것과 좌우가 대칭이 되도록 이동 거리를 설정하는 것이 약간 어려웠지만 우여곡절 끝에 코드를 완성하고 나니 뿌듯했다.

# data[].attributes.body
import turtle

t = turtle.Pen()

t.speed(15)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.left(90)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.left(90)

t.forward(120)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

프로그렘으로 세 개의 별을 표현해보았다. 배운지 꽤 오래된 프로그램이라 다시 하기에 어려움이 있었지만 기억을 차근차근 되짚어 보면서 프로그램을 만들어보니 흥미롭고 재미있는 과정이였다고 생각이 든다. 어려웠던 점은 별을 만들때 각도를 어떻게 정해야 하는지 약간의 어려움이 있었다.

# data[].attributes.body
import turtle

t = turtle.Pen()

t.pensize(70)

t.speed(30)

t.pencolor('black')

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.pencolor('blue')

t.left(90)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.pencolor('red')

t.left(90)

t.forward(120)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

이것은 프로그램 코드로 우리나라의 태극기 색 들을 표현한 것이다.다. 별을 만드는 프로그램 코드이지만 펜 굵기를 키워서 색이 더 잘 보이고 모양이 더 커지도록 했다.

# data[].attributes.body
import turtle

screen = turtle.Screen()

screen.bgcolor("white")

t = turtle.Turtle()

t.shape("turtle")

t.speed(3)

t.penup()

t.goto(0, -100)

t.pendown()

t.begin_fill()

t.color("pink")

t.circle(100)

t.end_fill()

# 종료 대기

turtle.done()

# data[].attributes.body
import turtle

t=turtle.Pen()

t.color('yellow')

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(70)

t.left(55)

t.color('sky blue')

t.forward(50)

t.right(20)

t.forward(50)

t.forward(50)

t.right(20)

t.forward(50)

t.forward(50)

t.right(20)

t.forward(50)

프로그램 코드로 떨어지는 유성을 표현해보았다 배경은 흰색에 유성은 노란색으로 표현하였고 떨어지면서 생기는 잔상은 하늘색(sky blue)로 표현 하였다. 소원을 빌면 이루어질것처럼 생겼다.

# data[].attributes.body
import turtle

t=turtle.Pen()

t.hideturtle()

t.pensize(5)

t.speed(50)

t.pencolor('red')

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.pencolor('orange')

t.left(90)

t.forward(20)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.pencolor('yellow')

t.left(90)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.right(45)

t.forward(100)

t.pencolor('green')

t.left(90)

t.forward(20)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.pencolor('blue')

t.right(45)

t.forward(20)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

무지개를 표현하고 싶어서 약간 포물선느낌으로 그려지게 프로그램 코드 설정을 했고, 무지개색들로 도형이 그려지게 프로그램 코딩 설정을 하였다.

이 수업을 하면서 재미있었고, 창의롭게 자가 그리고 싶은걸 코드로 설정하면서 또 고민도 해졸 수 있는 재밌는 활동이다.

# data[].attributes.body
이 프로그램은 사용자가 입력한 이차함수의 계수들에 따라 그래프를 그려주고, 방정식의 근을 계산하여 출력하며 이차함수의 식도 화면에 출력되므로 함수의 구조를 확인 할 수있다.

데이터 분석에 활용할 그래프를 출력하는 코드를 작성하는 데에 도움이 될 것 같다.

#이차함수

import turtle

t=turtle.Turtle()

t.shape('turtle')

x1=((-b+(d)**(1/2))/2*a)

x2=((-b-(d)**(1/2))/2*a)

a=int(input("이차항의 계수"))

b=int(input("일차항의 계수"))

c=int(input("상수항의 계수"))

def f(x):

return a*x**2+b*x+c

t.goto(500,0)

t.goto(0,0)

t.goto(0,500)

t.goto(0,0)

t.goto(-500,0)

t.goto(0,0)

t.goto(0,-500)

t.goto(0,0)

t.color("white")

t.goto(-b/2*a,(-b**2+4*a*c)/4*a)

for x in range(150):

t.goto(x, int(0.01*f(x)))

t.color("white")

t.goto(0,0)

t.color("black")

for x in range(150):

t.goto(-x, int(0.01*f(x)))

t.color("white")

t.goto(-150,-150)

t.color("black")

t.write(f"함수 식 : {a}x^2+{b}x+{c}")

d=b**2-4*a*c

x1=((-b+(d)**(1/2))/2*a)

x2=((-b-(d)**(1/2))/2*a)

t.color("white")

t.goto(-200,-200)

t.color("black")

if(b**2-4*a*c<0):

t.write("실근이 존재하지 않음")

elif(b**2-4*a*c==0):

t.write(f"중근={x1}")

elif(b**2-4*a*c<0):

t.write(f"근 : {x1} 또는 {x2}")

t.hideturtle()

# data[].attributes.body
#이차함수 그래프 그리는 프로그램 f(x)=x**2+1

'''

import turtle

t=turtle.Turtle()

t.shape('turtle')

def f(x):

return x**2+1

t.goto(200,0)

t.goto(0,0)

t.goto(0,200)

t.goto(0,0)

for x in range(150):

t.goto(x, int(0.01*f(x)))

from turtle import *

import math

a=int(input('x^2의 계수를 입력하세요 : '))

b=int(input('x의 계수를 입력하세요 : '))

c=int(input('상수항을 입력하세요 : '))

d=b**2 -4*a*c

# d > 0

if d > 0:

x1=((-b + math.sqrt(d))/2*a)

x2=((-b + math.sqrt(d))/2*a)

print('첫번째 근 :' , x1)

print('두번째 근 :' , x2)

print('첫번째 근 :' , '(', -b , '+', '√',d , '/' , ')',2*a)

print('두번째 근 :' , '(', -b , '-', '√',d , '/' , ')',2*a)

# d=0

if d==0:

x1=(-b)/2*a

print('중근 :', x1)

#d < 0

if d < 0:

x1r=((-b + math.sqrt(-d))/2*a)

x2r=((-b + math.sqrt(-d))/2*a)

print('첫번째 근 :' , x1r, 'i')

print('두번째 근 :' , x2r, 'i')

print('첫번째 근 :' , '(', -b , '+', '√',d , 'i' , ')', '/' , 2*a)

print('두번째 근 :' , '(', -b , '-', '√',d , 'i' , ')', '/' ,2*a)

title('이차함수 그리기')

#y축

y=Turtle()

y.goto(0,-200)

y.goto(0,200)

y.setheading(90)

y.write('y')

#x축

x=Turtle()

x.goto(-200,0)

x.goto(200,0)

x.write('x')

#원점

o=Turtle()

o.penup()

o.hideturtle()

o.goto(0,0)

o.write('0')

#그래프

pen=Turtle()

pen.penup()

pen.goto(-50,0)

pen.pensize(1)

#초기 x값 설정

xcor=-50

#그래프 그리기

while xcor<=50:

ycor=(a*(xcor**2))+(b*xcor) + c

pen.goto(xcor,ycor)

pen.pendown()

xcor +=0.5

'''

import turtle

# 거북이 객체 생성

t = turtle.Turtle()

t.shape('turtle')

# 함수 정의

def f(x):

return 4 x*2 + 3 * x + 6

# 좌표 이동

t.goto(200, 0)

t.goto(0, 0)

t.goto(0, 200)

t.goto(0, 0)

# 그래프 그리기

for x in range( 101): # x의 범위를 -100부터 100까지 설정

t.goto(x, int(f(x) * 0.01)) # y값을 조정하여 그래프를 화면에 맞게 축소

# 화면 종료 대기

turtle.done()

선생님이 주신 함수코드를 바탕으로 좀 더 간소화되고 다른 모양에 이차함수를 그려보려고 노력해보았습니다.

그래프를 설계해보고 그려보는 과정이 흥미로웠고 과정에 뜻깊은 의미가 있었다고 생각합니다.

# data[].attributes.body
import turtle

t=turtle.Pen()

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

검은색 별 모양을 그리는 프로그램 코드이고

방향과 각도를 바꾸어서 그림을 그리도록 표현하였다 이 활동을 하면서 전에 배웠던 것들이 조금씩 기억나면서 복습이 되는 것 같아서 좋았던 것 같다

# data[].attributes.body
# tutle 가져오기(수입하기)

import turtle

# 커서 정의 하기

t=turtle.Pen()

# 큰 원 색깔 정하기

t.color('yellow')

# 커서 속도

t.speed(10)

# 펜 내리기

t.pendown()

# 원 그리고 색 채우기

t.begin_fill()

t.circle(100)

t.end_fill()

# 펜 올리고 앞으로 가다가 내려서 원 다시 그리기

t.up()

t.forward(150)

t.down()

t.begin_fill()

t.circle(100)

t.end_fill()

# 위에거 반복

t.up()

t.forward(150)

t.down()

t.begin_fill()

t.circle(100)

t.end_fill()

# 작은 원 그리기

t.up()

t.color('green')

t.begin_fill()

t.circle(60)

t.end_fill()

# 작은 원 반복

t.up()

t.right(180)

t.forward(150)

t.right(180)

t.down()

t.begin_fill()

t.circle(60)

t.end_fill()

# 작은 원 반복

t.up()

t.right(180)

t.forward(150)

t.right(180)

t.down()

t.begin_fill()

t.circle(60)

t.end_fill()

이 그림은 애벌레를 그린 것으로 성장하는 나를 상징한다. 이 그림을 그릴 때 작은 원이 내가 원하지 않는 곳에 그려져 시행착오를 격었 는데 right를 사용하여 원하는 위치로 바꿀 수 있었다. 그리고 반복문을 사용하고 싶었지만 반복문의 조건을 어떻게 해야 할지 모르겠어서 하지 못했다.

# data[].attributes.body
프로그래밍 코드

a = int(input('그리고 싶은 도형의 꼭짓점의 개수를 입력하시오 : '))

h = input('커서를 지우시겠습니까? (예/아니오) : ')

c = input('그리실 색은 무엇인가요? 영어로 입력하시오 :')

b = 180 - (180*(a-2)/a)

if (a<3):

print('도형을 그릴 수 없습니다.')

else:

import turtle

t = turtle.Pen()

if (h=='예'):

t.hideturtle()

t.color(c)

for a in range(a):

t.forward(100)

t.left(b)

프로그래밍 분석

위 코드는 사용자에게 그릴 도형의 꼭짓점과 커서의 형태 유무, 그려질 선의 색의 입력받아 도형을 그리는 코드다. 이러한 코드를 만드는 것에 사용된 된 것들은 이하와 같다.

1. 임의의 변수를 정의하여 밑 코드에서 활용하였다. 또한 꼭짓점의 개수와 같이 숫자를 집어 넣는 변수의 경우에는 int를 활용하여 문자로 처리될 값을 정수화 처리하였다. 그리고 어떠한 식을 b에 저장하여 간편하게 하였다. b에 저장된 식은 선을 그리는 과정에서 몇 도만큼 회전하는 지를 계산한 식이다. 이의 원리는 그 a각형의 각도를 구해 180도에서 빼는 것이다.

2. 우선 if 절을 이용하여 입력받은 도형을 그릴 수 있는 지에 대해 판별하였다.

3. turtle을 활용하여 도형을 그리기 위한 세팅을 하였다.

4. if 절을 이용하여 입력된 값이 '예'에 의거하여 참인 지 부정인 지 판별하여 커서를 숨기거나 드러냈다.

5. 입력받은 색깔 변수인 c를 ()안에 넣어 색깔을 바꾸었다.

6. for in range를 이용하여 a각형의 변만큼 움직이고 꼭짓점의 개수만큼 회전할 수 있게 하였다.

시행착오 및 해결 과정

위의 코드를 만드는 과정에서 어려웠던 점은 사용자의 생각을 내가 알아야 한다는 것이었다. 우선 삼각형 이하의 수를 적을 가능성에 대해서 생각하지 못했기에 이러한 예외를 찾아내기 위해 많은 생각을 했다. 또한 t.color()의 안에 c를 입력하는 과정에서 ''를 사용하는 바람에 코드가 작동하지 않아 고난을 겪기도 했다.

소감

이러한 코드를 만든 소감으로는 사용자의 의견을 다 반영하여 적는 것이 어렵다는 것이었다.

사용자의 의견을 다 반영하고 싶지만 프로그램 코드에는 사용자의 예외를 전부 처리할 수는 없는 노릇이었다. 이러한 점을 고려하여 쓰는 것이 어려웠다.

# data[].attributes.body
import turtle

t=turtle.Turtle()

t.screen.bgcolor('white')

t.color('cyan')

t.shape('turtle')

t.speed(10)

t.pendown()

t.left(90)

t.forward(50)

t.left(60)

t.forward(50)

t.left(60)

t.forward(50)

t.left(60)

t.forward(50)

t.left(60)

t.forward(50)

t.left(60)

t.forward(50)

t.right(60)

t.forward(50)

t.left(60)

t.forward(70)

t.left(180)

t.forward(70)

t.left(60)

t.forward(70)

t.left(180)

t.forward(70)

t.right(120)

t.forward(50)

t.left(60)

t.forward(55)

t.left(180)

t.forward(55)

t.left(60)

t.forward(55)

t.left(180)

t.forward(55)

t.right(120)

t.forward(40)

t.left(60)

t.forward(40)

t.left(180)

t.forward(40)

t.left(60)

t.forward(40)

t.left(180)

t.forward(40)

t.right(120)

t.forward(30)

t.left(60)

t.forward(40)

t.left(60)

t.forward(20)

t.left(180)

t.forward(20)

t.left(60)

t.forward(20)

t.left(180)

t.forward(20)

이 프로그램은 눈꽃결정의 한 부분을 표현한것이다 마저 전부 제작 못했지만 시간이 조금만 더 있었으면 제작 될수있었던것 같았다.

배웠던 점을 이용하여 그리고 싶었던 그림을 그리는게 즐거웠고 앞으로 더 파이썬에 대해 배우고 싶었던 생각이 들었다

# data[].attributes.body
import turtle

t=turtle.Turtle()

t.shape('turtle')

def f(x):

return x**2+1

t.goto(200,0)

t.goto(0,0)

t.goto(0,200)

t.goto(0,0)

for x in range(150):

t.goto(x, int(0.01*f(x)))

from turtle import *

import math

a=int(input('x^2의 계수를 입력하세요 : '))

b=int(input('x의 계수를 입력하세요 : '))

c=int(input('상수항을 입력하세요 : '))

d=b**2 -4*a*c

# d > 0

if d > 0:

x1=((-b + math.sqrt(d))/2*a)

x2=((-b + math.sqrt(d))/2*a)

print('첫번째 근 :' , x1)

print('두번째 근 :' , x2)

print('첫번째 근 :' , '(', -b , '+', '√', d , '/' , ')',2*a)

print('두번째 근 :' , '(', -b , '-', '√', d , '/' , ')',2*a)

# d=0

if d==0:

x1=(-b)/2*a

print('중근 :', x1)

#d < 0

if d < 0:

x1r=((-b + math.sqrt(-d))/2*a)

x2r=((-b + math.sqrt(-d))/2*a)

print('첫번째 근 :' , x1r, 'i')

print('두번째 근 :' , x2r, 'i')

print('첫번째 근 :' , '(', -b , '+', '√', d , 'i' , ')', '/', 2*a)

print('두번째 근 :' , '(', -b , '-', '√', d , 'i' , ')', '/' ,2*a)

title('이차함수 그리기')

#y축

y=Turtle()

y.goto(0,-200)

y.goto(0,200)

y.setheading(90)

y.write('y')

#x축

x=Turtle()

x.goto(-200,0)

x.goto(200,0)

x.write('x')

#원점

o=Turtle()

o.penup()

o.hideturtle()

o.goto(0,0)

o.write('0')

#그래프

pen=Turtle()

pen.penup()

pen.goto(-50,0)

pen.pensize(1)

#초기 x값 설정

xcor=-50

#그래프 그리기

while xcor<=50:

ycor=(a*(xcor**2))+(b*xcor) + c

pen.goto(xcor,ycor)

pen.pendown()

xcor +=0.5

프로그램 코드로 f(x)=x^2+1을 그리는 프로그램 코드를 만들었다 그 뒤에 있는 판별식 코드 또한 있었는데 판별식을 통해 판단은 하지만 그림은 안 그려줘서 어디에 오류가 있다는 점은 알고 있지만 그 오류를 해결하지는 못 했다

아래 있는 코드와 위에 그림을 그리는 코드까지 완벽히 했다면 더 좋은 코드로 만들어 질 수 있었지만 그것을 해결하지 못한 것이 많이 아쉬웠다

# data[].attributes.body
코드

import turtle

t=turtle.Pen()

t.speed(50)

t.pencolor('green')

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(110)

t.left(225)

t.left(120)

t.pencolor('red')

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.left(120)

t.pencolor('blue')

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

t.forward(100)

t.left(225)

꼭짓점이 6개인 별을 이용해 더 큰별을 보이는 것과 같은 모양을 만들었다 색깔을 하나로 통일하면 이상할 거 같으니 튀는 색깔 3개로 정하여 하게 되었다 시행착오는 저 별들이 겹치는 부분이 최대한 안생기도록 각도 조정에서 시행착오가 생기게 되었고 별을 그리는 것에서는 코드가 쉽고 내가 조정을 할 수 있어서 괜찮았다

# data[].attributes.body
import turtle

t = turtle.Turtle()

t.forward(80)

t.left(90)

t.color('red')

t.forward(80)

t.left(90)

t.color('orange')

t.forward(100)

t.left(90)

t.color('yellow')

t.forward(110)

t.left(90)

t.color('green')

t.forward(120)

t.left(90)

t.color('blue')

t.forward(130)

t.left(90)

t.color('purple')

t.forward(140)

t.left(90)

t.color('white')

t.forward(150)

t.left(90)

t.color('black')

t.forward(160)

느낀 점

이걸 만든 이유

나의 진로는 경찰인데 경찰 일을 하면서 시민들에게 무한한 도움을 주라고 사각형적인 모양으로 끝이 없는 모양을 만들었다 그리고 색을 여러 색을 사용하여 다양한 도움과 다양한 대처를 하겠다는 다짐으로 이렇게 만들었다.

어려웠던 점

시간이 없었어서 생각대로 서둘러 진행이 되지 않았어서 조금 힘이 들었었다 그러나 모양들이 생각대로 다 되었고 시간도 부족하지 않게 잘 끝났다.

느낀 점

이렇게 코딩을 이용해서 나의 진로와 진로에 대한 마음을 표현할 수 있었다는 게 너무 독특하고 유익한 시간이었다 또한 약간의 재미도 있었던 것 같다.

# data[].attributes.body
import turtle

t=turtle.Turtle()

t.speed(50)

def draw(rad):

for i in range(2):

t.circle(rad,90)

t.circle(rad/100,90)

t.seth(45)

draw(200)

t.penup()

t.goto(100,50)

t.down()

t.seth(95)

draw(200)

t.penup()

t.goto(-100,50)

t.down()

t.seth(-5)

draw(200)

t.color('red')

t.penup()

t.goto(-5,100)

t.begin_fill()

t.pendown()

t.circle(30)

t.end_fill()

t.color('blue')

t.penup()

t.goto(100,30)

t.begin_fill()

t.pendown()

t.circle(20)

t.end_fill()

t.color('blue')

t.penup()

t.goto(-90,80)

t.begin_fill()

t.pendown()

t.circle(20)

t.end_fill()

t.color('blue')

t.penup()

t.goto(-35,230)

t.begin_fill()

t.pendown()

t.circle(20)

t.end_fill()

터틀을 이용하여 원자 모형을 그렸다. 함수를 이용해 타원을 여러번 생성해낼 수 있게 했고, t.seth(angle)을 사용해서 타원의 각도를 조절했다. 또한 t.goto()를 사용해 좌표 하나하나를 봐가면서 원자핵과 전자를 그렸다. 원자의 궤도 위에 전자를 두어야 하는데, 궤도의 좌표를 모르니 내가 하나씩 확인해야 됐던 것이 번거로웠다. 나의 진로와 정보를 접목시켜 그림을 그리니, 평소보다 더 흥미를 가지고 할 수 있었다. 그리고 원자 모형을 할 때, 원자의 궤도 끝부분이 곡선형태여야 하는데, 뾰족한 모양으로 나와서 퀄리티 부분에서 조금 아쉬웠다. 그래도, 이 활동을 하면서 내가 모르는 프로그램 코드를 찾고, 공부하고, 직접 작성해보니 뿌듯함을 많이 느꼈다.

# data[].attributes.body
import turtle

t=turtle.Pen()

s=0

a=int(input('위아래 길이 설정 : '))

t. speed(10)

t. screen.bgcolor('red')

t. color('black')

t. hideturtle()

t.home

while(s<5):

for i in range (10):

t. forward(5)

t. right(90)

t. forward(a)

t. right(270)

for k in range (10):

t. forward(5)

t. left(90)

t. forward(a)

t. left(270)

s=s+1

이는 사용자가 원하는 길이로 진동을 만들 수 있는 프로그램이다. 중학생 때 물리학과 관련하여 배웠던 진동주기와 진동수같은 것들이 생각나서 만들었다.

# data[].attributes.body
import turtle

#거북이

t= turtle.Turtle()

t.color("white")

#원

pen = turtle.Turtle()

pen.speed(10)

pen.shape("turtle")

pen.width(3)

pen.penup()

pen.goto(0, -100)

pen.pendown()

pen.color("orange")

pen.begin_fill()

pen.circle(100)

pen.end_fill()

#B

pen.penup()

pen.goto(-40, -67)

pen.pendown()

pen.color("white")

pen.write('B', font=("Arial", 90, "bold"))

pen.hideturtle()

프로그램코드로 비트코인을 만들어보았다. 배경이 노란색 같은 주황색으로 되어 있고 가운데 B가 그려져 있는데 학습지에 글자에 관한 건 없길래 챗지피티에게 불어봐서 글자를 두껍게 그렸다.

# data[].attributes.body
import turtle

t = turtle.Turtle()

t.screen.bgcolor("white")

t.shape("classic")

t.color("pink")

t.pensize(8)

t.speed(5)

t.begin_fill()

t.left(50)

t.forward(133)

t.circle(50, 200)

t.right(140)

t.circle(50, 200)

t.forward(133)

t.end_fill()

t.hideturtle()

이 코드는 원을 그리는 코드와 별을 그리는 코드를 적절하게 섞어 핑크색 하트를 그려주는 코드이다. 그림이 그려질때 두껍게 그려지길 원해서 선을 두껍게 만들었고, 색도 따뜻하게 느껴지도록 핑크색으로 골랐다.

이 그림을 그린 이유는 진로가 사회복지 분야인데 이 분야는 감정적으로 상대방을 공감해주고 도움을 주려는 마음을 가져야 한다고 생각했다. 그래서 마음을 주제로 삼아 하트를 그렸고, 따뜻한 색인 핑크로 그리게 되었다.

이 활동을 함으로서 어렵게 느껴졌던 내용을 복습하여 더 자세하게 배우게 된 것 같고, 흥미를 가지게 만들었다.

# data[].attributes.body
from turtle import *

import math

a = int(input("x**2의 계수를 입력하세요 : "))

b = int(input("x의 계수를 입력하세요 : "))

c = int(input("상수항을 입력하세요 : "))

d = b**2 - 4 a c

if d > 0:

x1 = (-b + math.sqrt(d)) / (2 * a)

x2 = (-b - math.sqrt(d)) / (2 * a)

print("첫번째 근 :", x1)

print("두번째 근 :", x2)

print("첫번째 근 :", "(", -b, "+", "√", d, "/", ")", 2*a)

print("두번째 근 :", "(", -b, "-", "√", d, "/", ")", 2*a)

elif d == 0:

x1 = -b / (2 * a)

print("중근 :", x1)

else: # d < 0

x1r = (-b + math.sqrt(-d) 1j) / (2 a)

x2r = (-b - math.sqrt(-d) 1j) / (2 a)

print("첫번째 근 :", x1r, "i")

print("두번째 근 :", x2r, "i")

print("첫번째 근 :", "(", -b, "+", "√", d, "i", ")", "/", 2*a)

print("두번째 근 :", "(", -b, "-", "√", d, "i", ")", "/", 2*a)

y = Turtle()

y.goto(0, -200)

y.goto(0, 200)

y.setheading(90)

y.write("y")

y = Turtle()

y.goto(-200, 0)

y.goto(200, 0)

y.setheading(90)

y.write("x")

o = Turtle()

o.penup()

o.hideturtle()

o.goto(0, 0)

o.write("0")

pen = Turtle()

pen.penup()

pen.goto(-50, 0)

pen.pensize(1)

xcor = -50

while xcor <= 50:

ycor = (a (xcor*2)) + (b * xcor) + c

pen.goto(xcor, ycor)

pen.pendown()

xcor += 0.5

done()

# data[].attributes.body
#원의 방정식

from turtle import *

t=Turtle()

t.shape("turtle")

t.goto(200,0)

t.goto(0,0)

t.goto(0,200)

t.goto(0,0)

t.goto(-200,0)

t.goto(0,0)

t.goto(0,-200)

t.goto(0,0)

r = int(input("원의 반지름을 입력하세요 :"))

a=int(input("원 중심의 x좌표를 입력하세요: "))

b=int(input("원 중심의 y좌표를 입력하세요:"))

pen=Turtle()

pen.penup()

xcor=-50

ycor=0

while xcor<=50:

rcor=(xcor-a)**2+(ycor-b)**2

t.goto(rcor,0)

pen.goto(xcor,ycor)

pen.pendown()

xcor +=0.1

ycor +=0.1

원의 방정식을 그리려고 했어요

# data[].attributes.body
import turtle

t=turtle.Pen()

s=0

a=int(input('위아래 길이 설정 : '))

t. speed(10)

t. screen.bgcolor('red')

t. color('black')

t. hideturtle()

t.home

while(s<5):

for i in range (10):

t. forward(5)

t. right(90)

t. forward(a)

t. right(270)

for k in range (10):

t. forward(5)

t. left(90)

t. forward(a)

t. left(270)

s=s+1

사용자가 원하는 길이로 진동을 표현할 수 있는 프로그램이다. 중하교 과학때 배웠던 진동수와 진동주기같은 것들이 생각나서 만들었다.

# data[].attributes.body
10216 음반 그리기

# 거북이 기본 설정

import turtle

t = turtle.Turtle()

t.screen.bgcolor("white")

# LP판 큰 원 그리기

t.penup()

t.goto(0, -100)

t.pendown()

t.color("blue")

t.begin_fill()

t.circle(100)

t.end_fill()

# LP판의 중앙 원 그리기

t.penup()

t.goto(0, -20)

t.pendown()

t.color("white")

t.begin_fill()

t.circle(20)

t.end_fill()

# LP판의 줄 무늬 그리기

t.penup()

t.goto(0, -100)

t.pendown()

for r in range(90, 100, 2):

t.penup()

t.goto(0, -r)

t.pendown()

if r % 4 == 0:

t.color("blue")

else:

t.color("lightblue")

t.circle(r)

# 거북이(커서) 숨기기

t.hideturtle()

이 프로그램은 요즘 레트로 열풍이 불어 수집하는 사람이 많아진 LP 그림이다. 거북이 도구를 활용해 작성하였으며 반복문을 활용하여 줄무늬를 그려 넣어 LP판을 표현하였다. 생각보다 원의 시작 위치와 반지름을 정하는 과정에서 시행착오가 많이 일어나 조금 어려움을 겪었지만 원의 위치를 잘 생각해 보니 약간의 차이를 이용하면 된다는 답을 얻어 LP 판을 그릴 수 있었다. 프로그램을 작성하는 과정에서 어려움도 많이 겪었지만 완성하고 나니 잘 그린 것 같아 기분이 좋다.

# data[].attributes.body
import turtle

t=turtle.Pen()

t.speed(10)

t.right(120)

t.forward(100)

t.left(180)

t.forward(50)

t.right(120)

t.forward(50)

t.penup()

t.right(90)

t.forward(90)

t.left(150)

t.pendown()

t.forward(100)

t.right(180)

t.forward(50)

t.left(90)

t.forward(50)

t.penup()

t.left(150)

t.forward(200)

t.right(60)

t.pendown()

t.forward(50)

t.penup()

t.right(50)

t.forward(25)

t.right(130)

t.pendown()

t.forward(100)

t.penup()

t.left(150)

t.forward(50)

t.left(30)

t.forward(10)

t.pendown()

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.right(5)

t.forward(4)

t.penup()

t.left(120)

t.forward(70)

t.right(160)

t.pendown()

t.forward(100)

t.right(180)

t.forward(50)

t.right(90)

t.forward(50)

t.penup()

t.right(150)

t.forward(200)

t.left(150)

t.pendown()

t.forward(150)

t.right(90)

t.forward(75)

# data[].attributes.body
import turtle

t=turtle.Turtle()

def f():

t.forward(49)

t.left(60)

def h():

f(), f(), f(), f(), f(), f()

def g():

t.penup()

t.goto(0, 100)

t.pendown()

t.color('black')

h()

t.forward(49)

t.right(60)

def drawCircle(color, radius, x, y):

t.speed(100)

t.penup()

t.goto(x, y)

t.pendown()

t.color(color)

t.begin_fill()

t.circle(radius)

t.end_fill()

drawCircle('light green', 50, 0, 180)

drawCircle('black', 8, -30, 230)

drawCircle('black', 8, 30, 230)

drawCircle('light green', 40, 80, 100)

drawCircle('light green', 40, -80, 100)

drawCircle('light green', 40, 50, -20)

drawCircle('light green', 40, -50, -20)

drawCircle('green', 100, 0, 0)

g(), g(), g(), g(), g(), g()

t.hideturtle()

drawCircle은 원으로 거북이의 본체와 눈을 g()는 거북이 껍질의 문양을 표현하였다

내가 만든 프로그램은 거북이를 그리는 프로그램이다 . 거북이 도구를 활용해 작성해 반복문을 활용하여 drawCircle은 원으로 거북이의 본체와 눈을 g()는 거북이 껍질의 문양을 표현하였다 각 그림의 위치를 선정하는데 어려움을 격었으나 많은 시도를 하여 알맞은 위치를 찾았다 프로그램을 작성하는 과정에서 어려움도 많이 겪었지만 완성하고 나서 잘 완성되어 기분이 좋았다