# data[].attributes.body
import turtle # 터틀 그래픽 모듈 임포트

# 사각형을 그리는 함수 정의

def draw_rectangle(x, y, width, height, color):

t.penup() # 펜을 들어서 이동 중 선이 그려지지 않도록 함

t.goto(x, y) # 지정된 (x, y) 좌표로 이동

t.pendown() # 펜을 내려서 그리기 시작

t.begin_fill() # 색 채우기 시작

t.fillcolor(color) # 채울 색상 설정

for _ in range(2): # 두 번 반복 (사각형은 대칭 구조이므로 2번 반복)

t.forward(width) # 사각형의 가로 선 그리기

t.right(90) # 오른쪽으로 90도 회전

t.forward(height) # 사각형의 세로 선 그리기

t.right(90) # 오른쪽으로 90도 회전

t.end_fill() # 색 채우기 종료

# 터틀 객체 생성

t = turtle.Turtle()

# 거북이 속도 설정 (1-10, 또는 "fastest")

t.speed(3)

# 첫 번째 사각형 (가장 큰 사각형)

draw_rectangle(-100, 100, 200, 150, "lightgray")

# 두 번째 사각형 (안쪽 검정색 사각형)

draw_rectangle(-90, 90, 180, 130, "black")

# 세 번째 사각형 (아래쪽 작은 사각형)

draw_rectangle(-50, -50, 100, 20, "darkgray")

# 네 번째 사각형 (바닥 역할의 사각형)

draw_rectangle(-70, -70, 140, 20, "gray")

# 거북이 숨기기 (완성된 그림만 보이도록 설정)

t.hideturtle()

# 터틀 그래픽 창 유지

turtle.done()

파이선으로 어떻게 하면 내 진로와 관련된 그림을 그려서 선생님에게 제 진로를 보여드릴지 고민해 봤는데 저는 일단 코딩실력이 별로 좋지 못하기 때문에 간단한 모형으로 그렸어야 했고 그 결과 제 진로인 컴퓨터 공학과,it계열과 관련된 전자기기를 그리기로 결정했고 그중에서 가장 그리기 쉬운 직사각형 모양의 사각형들을 그려서 모니터를 그렸습니다 90도씩 꺾어 가면서 네모를 그려 모니터를 나타내었다

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

#판별식

elif 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(-100,0)

pen.pensize(1)

#초기 x값 설정

xcor=-50

#그래프 그리기

while xcor <= 50:

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

pen.goto(xcor,0.1*ycor)

pen.pendown()

xcor+=0.5

파이선으로 함수 f(x)=x^2+x+1을 계산하는 함수를 작성하고, 이 함수를 이용해 화면에 그래프를 그리는 프로그램을 작성해보았다. 제 진로가 AI개발 쪽으로 갈 것 같아 그래프를 그리는 임무에 충실히 임해 정확히 코드를 입력하여 그래프를 그려냈다.

# data[].attributes.body
#임포트 값 설정

import turtle

t=turtle.Turtle()

t.shape('turtle')

#이차함수 값 설정

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

b=int(input('x절편을 입력하세요: '))

c=int(input('y절편을 입력하세요: '))

#이차함수 설정

def f(x):

return a*((x-b)**2)+c

#x축 y축 그리기

t.goto(200,0)

t.goto(-200,0)

t.goto(0,0)

t.goto(0,200)

t.goto(0,-200)

t.goto(0,0)

t.penup()

#그래프 그리기

t.goto(-150,int(0.1*f(-150)))

t.pendown()

for x in range(-150,151,1):

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

수정 사항:

기존에 f(x)=x^2+1만 그리던 코드를 수정하여 사용자가 입력한 값대로 함수를 그리는 프로그램으로 만들었습니다. 또한 기존에 x값이 0부터 149까지 그리는 프로그램이였는데 이를 수정해서 -150부터 150까지 그리도록 바꾸었습니다.

#임포트값 설정

from turtle import *

import math

#그래프값 설정

print('f(x)=ax^2+bx+c')

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

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

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

print(f'f(x)={a}x^2+{b}x+{c}')

#판별식

d =int( 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("첫번째 근 : ", f"(-{b} + √{d}) / {2 * a}")

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

#허근 구하기

elif d < 0:

x1= -b / (2 * a)

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

x1 = complex(real_part, imaginary_part)

x2 = complex(real_part, -imaginary_part)

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

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

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

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

#중근 구하기

elif d==0:

x1 = -b / (2 * a)

print("중근 :", x1)

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

#y축 그리기

y= Turtle()

y.penup()

y.goto(0, -200)

y.pendown()

y.goto(0, 200)

y.setheading(90)

y.write("y", align="left")

#x축 그리기

x=Turtle()

x.penup()

x.goto(-200, 0)

x.pendown()

x.goto(200, 0)

x.setheading(0)

x.write("x", align="left")

#원점 설정

o= Turtle()

o.penup()

o.hideturtle()

o.goto(0, 0)

o.write("0")

#그래프 그리기

pen = Turtle()

pen.penup()

pen.pensize(1)

xcor = -100

pen.goto(xcor,0.01*(a (xcor*2) + b * xcor + c))

while xcor <= 100:

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

pen.goto(xcor,0.01*ycor)

pen.pendown()

xcor += 0.5

어려웠던 점: 실근, 허근, 중근을 구하는 과정에서 ''와 ,를 잘 못 입력하여 프로그램이 제대로 실행되지 않았습니다. 또 그래프를 그리는 과정에서 ycor값이 너무 커진 나머지 그래프가 한동안 그려지지 않는 것처럼 보이는 현상이 있었습니다.

수정 및 해결점:

"와 ,를 잘못 입력하는 경우를 줄이고자 f''를 사용해서 코드를 작성했습니다.

또 ycor값에 0.01를 곱하여 그래프가 그려지는데 걸리는 시간을 단축하였습니다. 또 align 명령어를 사용하여 x쓰는 곳과 y를 쓰는 곳을 설정했습니다.

느낀 점:

현재 저는 로봇공학자를 꿈꾸고 있으며 이를 뒷받침하고자 이번 활동에 참여하였습니다. 현재는 단순히 학습지에 있던 이차함수를 약간씩 수정하는 수준이지만 다음에 이와 비슷한 활동을 하게 된다면 보다 다양한 그래프를 그리는 코드를 작성하고 싶습니다.

# data[].attributes.body
import turtle

t=turtle.Turtle()

t.shape('turtle')

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

t.color('yellow')

t.begin_fill()

t.circle(radius)

t.end_fill()

turtle.exitonclick()

선생님이 주신 학습지를 통해 터틀 커서의 모양을 분석하고 반지름을 입력 받아서 정해진 색깔로 원을 그리는 프로그래밍을 했다. 프로그래밍을 하면서 대문자 소문자를 잘 구별해야 한다는 것을 알았고 어려움을 해결하고 완성하니 뿌듯했다.

# data[].attributes.body
#약 그리기

import turtle

#배경 색 정하기

screen = turtle.Screen()

screen.bgcolor("white")

#약통 그리기

bottle = turtle.Turtle()

bottle.speed(5)

def draw_bottle_body():

bottle.penup()

bottle.goto(-50, -100)

bottle.pendown()

bottle.begin_fill()

#약통 색 그리기

bottle.color("lightblue")

for _ in range(2):

bottle.forward(100)

bottle.left(90)

bottle.forward(200)

bottle.left(90)

bottle.end_fill()

#약통 위에 색 그리기

def draw_cap():

bottle.penup()

bottle.goto(-50, 100)

bottle.pendown()

bottle.begin_fill()

bottle.color("darkblue")

for _ in range(2):

bottle.forward(100)

bottle.left(90)

bottle.forward(20)

bottle.left(90)

bottle.end_fill()

#약통 중간에 라벨 색 그리기

def draw_label():

bottle.penup()

bottle.goto(-40, 20)

bottle.pendown()

bottle.color("white")

bottle.begin_fill()

for _ in range(2):

bottle.forward(80)

bottle.left(90)

bottle.forward(50)

bottle.left(90)

bottle.end_fill()

def draw_bottle():

draw_bottle_body()

draw_cap()

draw_label()

#약통 옆에 작은 원 그리기

def draw_small_circle():

bottle.penup()

bottle.goto(150, 0)

bottle.pendown()

bottle.begin_fill()

#약 색 채우기

bottle.color("blue")

bottle.circle(30)

bottle.end_fill()

draw_bottle()

draw_small_circle()

screen.exitonclick()

느낀점

나의 진로는 보건이나 의학계열 쪽이어서 그와 관련된 약 봉투와 약을 그렸다 파이선 코드를 하면서 약을 그린 원이 제대로 잘 안그려지고 여러 원을 더 작게 그리고 싶었는데 그 부분이 잘 되지 않아서 아쉽다 그래도 이번 활동을 통해 파이선 코드를 더 많이 알게 된것같아 좋은 경험이었던것같다

# data[].attributes.body
'''import turtle

import math

screen = turtle.Screen()

screen.bgcolor("white")

# 터틀 객체 생성하기

pen = turtle.Turtle()

pen.speed(0) # 가장 빠른 속도로 그리기

pen.width(2) # 선의 두께

# 나선 그리기 함수그리기

def draw_double_helix(radius, turns, height, spacing):

for i in range(turns):

# 각 나선 그리기

angle = 360 * i / turns

z = i * height / turns # z축 높이 계산하기

# 첫 번째 나선

pen.penup()

pen.setpos(radius math.cos(math.radians(angle)), radius math.sin(math.radians(angle)) + z)

pen.pendown()

pen.dot(10, "blue") # 파란 점으로 나선 표현

# 두 번째 나선

pen.penup()

pen.setpos(radius math.cos(math.radians(angle + 180)), radius math.sin(math.radians(angle + 180)) + z)

pen.pendown()

pen.dot(10, "red") # 빨간 점으로 두 번째 나선 표현

# 이중 나선 그리기

draw_double_helix(radius=100, turns=50, height=200, spacing=15)

# 완료 후 대기

pen.hideturtle()

turtle.done()'''

이것은 나의 진로인 생명공학과와 관련된 이중나선 구조를 만든것이다. 이중나선구조인 사슬은 뉴클레오타이드라는 단위로 이루어져 있으며,이들 사이의 염기들이 상보적으로 결합하여 유전 정보를 저장한다.Turtle을 사용하여 DNA의 이중 나선 구조를 그렸고, 파란색과 빨간색 점으로 두 나선을 그려, 상호 비틀어진 구조를 나타냈다.어려웠던 점은 나선 구조를 정확하게 그리기 위해 x, y 좌표를 계산하는 것이 어려웠다. 특히 두 개의 나선이 겹쳐져야 했기 때문에 각도를 정확히 맞추는 데 시간이 많 걸렸다.하지만 계속 반복해서 해보다가 되어서 재밌었다는생각을 했다.

# data[].attributes.body
import turtle

pen = turtle.Turtle()

pen.speed(5)

# 원 그리기 (지구)

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

pen.penup()

pen.goto(x, y - radius)

pen.pendown()

pen.begin_fill()

pen.color(color)

pen.circle(radius)

pen.end_fill()

# 대륙 그리기

def draw_continents():

pen.penup()

pen.goto(-50, 50)

pen.pendown()

pen.begin_fill()

pen.color("green")

pen.circle(30)

pen.end_fill()

pen.penup()

pen.goto(80, -100)

pen.pendown()

pen.begin_fill()

pen.color("green")

pen.circle(40)

pen.end_fill()

def draw_earth():

radius = 150

draw_circle(radius, "blue", 0, 0)

draw_continents()

pen.hideturtle()

draw_earth()

가장 간단한 소재이면서도 우리가 살아가고 있는 지구를 구상했다. 원형인 지구의 특성을 활용하여 pen.circle 명령어를 활용하여 간단하게 원을 그려낼 수 있었다. 지구의 대양을 표현하기 위해 중앙에 가장 큰 원을 그려냈으며, 가장 큰 원 안에 몇몇의 작은 대륙을 첨가하는 식으로 구상했다. 이번 프로그래밍 활동을 통해 지구를 표현하기 어려운 소재가 아닌 프로그래밍을 통해 간단하게 그려낼 수 있는 소재로 인식하게 되었다

# data[].attributes.body
def draw_rectangle(width, height):

"""

width: 가로 길이 (공연장의 폭)

height: 세로 길이 (공연장의 높이)

"""

for _ in range(height):

print("#" * width) # 가로 길이에 맞게 #을 출력

# 사용자 입력 받기

try:

print("직사각형 공연장 크기를 입력하세요.")

width = int(input("가로 길이 (숫자): "))

height = int(input("세로 길이 (숫자): "))

if width <= 0 or height <= 0:

print("가로와 세로 길이는 양의 정수여야 합니다.")

else:

print("\n직사각형 공연장 모양:")

draw_rectangle(width, height)

except ValueError:

print("숫자만 입력해주세요!")

_____________________________________________

공연기획학과를 지망하고 있기 때문에 직사각형의 공연장을 만들 수 있는 코드를 만들었습니다. 현실의 공연 기획에서도 효율적인 설계와 창의력이 중요하다는 점을 떠올리게 됐습니다. 코딩은 참 여러가지를 표현할 수 있다고 느꼈다

# data[].attributes.body
import turtle

def dna(): # 그래픽 모듈 turtle을 가져온다!

t = turtle.Turtle()

t.speed(5) # 거북이의 속도를 설정

for i in range(10): # 10번 반복하여 DNA 염기쌍을 생성!!

t.penup() # 펜만 올림

t.color("red") #검정색으로 하니 dna같지 않아서 빨간색으로 결정함

t.goto(-200 + i * 40, 30) # X 좌표를 -200에서 시작해 40씩 오른쪽으로 이동, Y는 30으로 고정

t.pendown()

t.circle(10) # 반지름이 10인 원을 그리기

t.penup() # 다시 펜만 올리기

t.goto(-200 + i * 40, -30) # Y 좌표를 -30으로 아래쪽으로 이동

t.pendown()

t.circle(10)

t.penup()

# 위쪽 원과 아래쪽 원을 연결하는 선을 만들기

t.goto(-200 + i * 40, 30)

t.pendown()

t.goto(-200 + i * 40, -30)

t.hideturtle()

dna()

import turtle

import math

def wave():

t = turtle.Turtle()

t.speed(5)

t.penup()

t.goto(-300, 0)

t.pendown()

t.color("blue")

->for x in range(-300, 300, 10):

y = 50 * math.sin(math.radians(x))

t.goto(x, y) <- 물결을 그리기 어려워 사인함수 코드를 가져왔습니다. ㅜㅜ

t.hideturtle()

turtle.done()

wave()

이 코드는 두 가지 그림이 겹쳐져 하나의 모양을 만들어낸다.  첫 번째 함수 dna()는 DNA 구조를 단순화한 형태로, 위아래에 빨간색 원을 그린 후 이 원들을 선으로 연결한다. 반복문을 통해 이런 구조를 여러 번 반복하여 이중 나선의 일부를 표현했다. 처음에는 그냥 검정색으로 만들었는데, dna의 모양이 잘 나타나지 않아 빨간색으로 수정하였다. 두 번째 함수 wave()는 함수를 사용해 물결 모양의 파형을 그린다. 물결 같은 선이 만들어진다. 이때 사인 함수 코드는 복사를 할 수밖에 없었다. 그 점이 조금 아쉽다. 그러나 이것은 매우 단순해진 유전자 모양을 떠올리게 한다. 이 모양을 선택한 이유는 유전자 조작에 대해 관심을 가지고 있다는 것을 나타내기 위하여 내 진로와 연관 있게 그림을 그렸다. 두 개의 그림을 합치는 것이 조금 어려웠는데 직접 오류들을 여러 번 만들어보니 조금씩 해결해 나가 뿌듯한 마음이 들었다.

# data[].attributes.body
import turtle

t=turtle.Pen()

t.forward(100)

t.left(144)

t.forward(100)

t.left(144)

t.forward(100)

t.left(144)

t.forward(100)

t.left(144)

t.forward(100)

t.left(144)

선생님께서 나눠주신 학습지 연습문제 1을 참고하여 꼭짓점이 8개가 아닌 5개인 진짜 별을 만들고 싶어서 레프트의 숫자를 다르게 해서 별을 만들었다

# data[].attributes.body
import turtle

pen = turtle.Turtle()

pen.shape("turtle")

pen.speed(3)

# 얼굴 그리기

pen.penup()

pen.goto(0, -50) # (0, -50) 위치로 이동합니다.

pen.pendown()

pen.begin_fill()

pen.color("yellow")

pen.circle(50) # 반지름이 50인 원을 그려서 얼굴을 만듭니다.

pen.end_fill()

# 눈 그리기

pen.penup()

# 왼쪽 눈

pen.goto(-20, 10) # (-20, 10) 위치로 이동합니다.

pen.pendown()

pen.begin_fill()

pen.color("black")

pen.circle(5) # 반지름이 5인 원을 그려서 왼쪽 눈을 만듭니다.

pen.end_fill()

# 오른쪽 눈

pen.penup()

pen.goto(20, 10) # (20, 10) 위치로 이동합니다.

pen.pendown()

pen.begin_fill()

pen.color("black")

pen.circle(5) # 반지름이 5인 원을 그려서 오른쪽 눈을 만듭니다.

pen.end_fill()

# 입 그리기

pen.penup()

pen.goto(0, -10) # (0, -10) 위치로 이동합니다.

pen.pendown()

pen.begin_fill()

pen.color("orange")

pen.setheading(-30) # 거북이의 방향을 -30도로 설정합니다.

# 입 그리기

for _ in range(3):

pen.forward(15) # 15만큼 앞으로 갑니다.

pen.left(120) # 120도 왼쪽으로 회전합니다.

pen.end_fill()

pen.hideturtle()

turtle.done()

# data[].attributes.body
import turtle

screen = turtle.Screen()

screen.bgcolor("white")

t = turtle.Turtle()

t.speed(3)

def draw_microscope():

# 현미경 본체를 그리기

t.penup()

t.setposition(-50, -100)

t.pendown()

t.color("black")

t.begin_fill()

for _ in range(2):

t.forward(100)

t.left(90)

t.forward(150)

t.left(90)

t.end_fill()

# 현미경 받침대 그리기

t.penup()

t.setposition(-25, -100)

t.pendown()

t.color("gray")

t.begin_fill()

for _ in range(2):

t.forward(50)

t.left(90)

t.forward(25)

t.left(90)

t.end_fill()

# 렌즈 그리기

t.penup()

t.setposition(0, 50)

t.pendown()

t.color("blue")

t.begin_fill()

t.circle(30)

t.end_fill()

draw_microscope()

turtle.done()

나의 진로가 현미경을 사용하여 여러 물질 속의 세균등을 관찰해 병을 발견하거나 진단을 하도록 돕는 직업이라서 파이썬 turtle을 이용하여서 현미경을 그렸다. 우선, 검정색으로 된 사각형을 그려넣어서 현미경의 본체를 나타냈다. 그리고 아래에 회색 직사각형을 그려넣어서 현미경의 받침대를 표현했다. 그리고 마지막으로 파란색의 원을 맨 꼭대기에 넣어서 현미경의 렌즈를 표현하였다. 파이썬 turtle을 이용해서 만드는 과정에서 처음에 어떻게 현미경 모양을 만들어야할지 잘 모르겠었는데 조금씩 turtle 에 대해 알게 되면서 어떤식으로 만들어야하는지 알 게 되었다. 특히 마우스 커셔 방향을 바꾸는 과정이 가장 어려웠다. 숫자를 각각 대입하는 것이 너무나도 어려웠다. 하지만 하나씩 해보니 점점 내가 원하는 모양으로 갖추어져서 신기하고 뿌듯했다. 처음으로 파이썬 turtle을 이용하게 되어 재미있었고 흥미로운 시간이었다.

# data[].attributes.body
import turtle

# 화면 설정 pen = turtle.Turtle()

# 건물 그리기

pen.penup() pen.goto(-50, -50) pen.pendown() pen.begin_fill() pen.color("gray") for in range(4): #직사각형pen.forward(100) pen.left(90) pen.endfill()

# 지붕 그리기

pen.penup() pen.goto(-60, 50) pen.pendown() pen.begin_fill() pen.color("brown") pen.goto(0, 100) # 삼각형 꼭대기 pen.goto(60, 50) pen.goto(-60, 50) pen.end_fill()

# 종료하지 않게 대기 turtle.done()

이 코드는 나의 진로인 건축 쪽과 관련해서 건물을 만든 코드인데 코드를 만들면서 가장 크게 느낀 점은 그림을 그릴 떄 위치와 길이를 정확하게 설정하고 일정 비율을 맞춰서 해야 한다는 점을 느꼈고, 처음에는 이해가 안 갔지만, 계속해서 보고 배우면서 그리는 방법도 잘 알게 되었고 나의 진로에 맞는 그림을 그린 것 같아 맘에 드는 그림이 된 것 같다. 뿌듯하다.

# 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

#판별식 >0 -서로 다른 두 실근

if d>0:

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

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

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

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

print('첫번쨰 근','(',-d,'+','루트',d,'i',')','/',2*a)

print('첫번쨰 근','(',-d,'+','루트',d,'i',')','/',2*a)

#판별식=0-중근

if d==0:

x1=(-b)/2*a

print('중근 : ',x1)

#판별식 <0-허근

if d==0:

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

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

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

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

print('첫번쨰 근','(',-d,'+','루트',d,'i',')','/',2*a)

print('첫번쨰 근','(',-d,'+','루트',d,'i',')','/',2*a)

#타이틀

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

#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.setheading(90)

x.write('x')

#원점

o=Turtle()

o.penup()

o.hideturtle()

o.goto(0,0)

o.write('o')

#그래프

pen=Turtle()

pen.speed(5)

pen.penup()

pen.goto(-50,0)

pen.pensize(1)

#초기x값 설정

xcor=-50

#그래프 그리기

while xcor<=50:

pen.speed(5)

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

pen.goto(xcor,ycor)

pen.pendown()

xcor+=0.5

pen.write(f'{a}x^2+{b}x+c')

#두번째 그래프 입력

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

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

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

#판별식

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

#판별식 >0 -서로 다른 두 실근

if d>0:

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

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

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

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

print('첫번쨰 근','(',-d,'+','루트',d,'i',')','/',2*a)

print('첫번쨰 근','(',-d,'+','루트',d,'i',')','/',2*a)

#판별식=0-중근

if d==0:

x1=(-b)/2*a

print('중근 : ',x1)

#판별식 <0-허근

if d==0:

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

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

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

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

print('첫번쨰 근','(',-d,'+','루트',d,'i',')','/',2*a)

print('첫번쨰 근','(',-d,'+','루트',d,'i',')','/',2*a)

#타이틀

print('두번째 이차함수 그리기')

#그래프

pen=Turtle()

pen.speed(5)

pen.penup()

pen.goto(-50,0)

pen.pensize(1)

#초기x값 설정

xcor=-50

#그래프 그리기

while xcor<=50:

pen.speed(5)

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

pen.goto(xcor,ycor)

pen.pendown()

xcor+=0.5

pen.write(f'{a}x^2+{b}x+c')

그래프 2개를 동시에 그려서 비교할 수 있는 프로그램을 작성했다. 처음에 반복문을 이용하려했지만 실패하여 그릴 수 있는 그래프를 2개로 한정짓고 코드를 작성하였다.

# data[].attributes.body
#임포트 세팅

from turtle import *

import math

# 1. 일단 x^2의 계수, x의 계수, 상수항을 입력받는다.

#입력

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

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

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

# 2. x, y축 원점을 그린다.

#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("O")

# 3. x값의 범위를 설정하고, 맨 끝 범위의 맞는 좌표로 보낸다.

#초기 x값 설정

xcor = -50

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

#그래프

pen = Turtle()

pen.pensize(1)

pen.penup()

pen.goto(xcor, ycor )

pen.pendown()

# 4. x값을 변화시키면서 (x, y)의 좌표로 터틀을 보낸다.

#그래프 그리기

while xcor<=50:

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

pen.goto(xcor, ycor)

xcor += 0.5