SW/Python

[ํ„ฐํ‹€๊ทธ๋ž˜ํ”ฝ] ํ‘œ ๊ทธ๋ฆฌ๊ธฐ

SSEM๐Ÿ‘Œ 2023. 6. 12. 09:43

 ํ„ฐํ‹€ ๊ทธ๋ž˜ํ”ฝ(Turtle Graphics)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ„ฐํ‹€ ๊ทธ๋ž˜ํ”ฝ์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ํ‘œ๋ฅผ ๊ทธ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํŒŒ์ด์ฌ ์ฝ”๋“œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค:

import turtle

# ํ‘œ ๊ทธ๋ฆฌ๊ธฐ ํ•จ์ˆ˜
def draw_table(data):
    t = turtle.Turtle()
    t.speed(0)  # ๊ฑฐ๋ถ์ด ์†๋„ ์„ค์ • (0์€ ๊ฐ€์žฅ ๋น ๋ฅธ ์†๋„)

    row_height = 30  # ํ–‰์˜ ๋†’์ด
    col_width = 100  # ์—ด์˜ ๋„ˆ๋น„

    # ํ…Œ๋‘๋ฆฌ ๊ทธ๋ฆฌ๊ธฐ
    t.penup()
    t.goto(-col_width/2, -len(data)*row_height/2)
    t.pendown()
    t.setheading(0)
    t.forward(col_width)
    t.setheading(90)
    t.forward(len(data)*row_height)
    t.setheading(180)
    t.forward(col_width)
    t.setheading(270)
    t.forward(len(data)*row_height)
    t.penup()

    # ๋ฐ์ดํ„ฐ ํ‘œ ๊ทธ๋ฆฌ๊ธฐ
    for i, row in enumerate(data):
        t.goto(-col_width/2, i*row_height - len(data)*row_height/2)
        t.pendown()
        for j, item in enumerate(row):
            t.write(item, align="center", font=("Arial", 12, "normal"))
            t.forward(col_width)
        t.penup()

    turtle.done()

# ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ
data = [
    ["์ด๋ฆ„", "๋‚˜์ด", "์„ฑ๋ณ„"],
    ["John", "25", "๋‚จ์„ฑ"],
    ["Jane", "30", "์—ฌ์„ฑ"],
    ["Mike", "35", "๋‚จ์„ฑ"]
]

# ํ‘œ ๊ทธ๋ฆฌ๊ธฐ
draw_table(data)

 ์ด ์ฝ”๋“œ๋Š” ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ‘œ๋ฅผ ๊ทธ๋ฆฌ๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. draw_table() ํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„์„œ ํ‘œ๋ฅผ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ ํ–‰๊ณผ ์—ด์˜ ๋„ˆ๋น„์™€ ๋†’์ด๋ฅผ ์„ค์ •ํ•˜๊ณ , turtle.Turtle()์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฑฐ๋ถ์ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ‘œ๋ฅผ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ํ‘œ๋ฅผ ๊ทธ๋ ค์ฃผ๋Š” ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ํ‘œ๊ฐ€ ํ„ฐํ‹€ ๊ทธ๋ž˜ํ”ฝ ์ฐฝ์—์„œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ํ‘œ์˜ ๊ฐ ์…€์€ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํ‘œ์˜ ํ…Œ๋‘๋ฆฌ์™€ ๊ฐ ์…€์€ ๊ฑฐ๋ถ์ด ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค.

 ๋งŒ์•ฝ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ๋ฅผ ๊ทธ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด, data ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  draw_table() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.