파이썬 로또 번호 생성기 코딩 (개발자 타겟)

2026. 1. 31. 07:10카테고리 없음

파이썬 로또 번호 생성기 코딩 딥시크 AI

 

🚀 3초 요약: DeepSeek가 GPT보다 낫다?

  • 무료 로컬 AI DeepSeek-R1에게 파이썬 코딩을 시켜보았습니다.
  • 주제: GUI 로또 번호 생성기 (Tkinter)
  • 결과: GPT-4o보다 속도는 느리지만, '사고 과정(Thinking)' 덕분에 에러 없는 완벽한 코드를 짭니다.

안녕하세요. 로컬 AI 연구소, Smart AI Navi입니다.

지난 포스팅에서 DeepSeek(딥시크) 설치법과 속도 최적화를 다뤘습니다. 이제 환경 구축은 끝났으니, 본격적으로 이 녀석의 '코딩 실력'을 검증해 볼 차례입니다.

주말을 맞아 가벼운 프로젝트를 하나 던져주었습니다.
"야, 이번 주 로또 번호 좀 뽑아봐. 그냥 텍스트 말고, 클릭해서 뽑는 프로그램으로 만들어줘."

과연 내 컴퓨터에 설치된 무료 AI가 이 미션을 수행할 수 있을까요? 결과는 충격적이었습니다.

 


Phase 1. 논리력 테스트 (Strawberry 문제)

코딩에 앞서, 전 세계적으로 유명한 AI 벤치마크 질문인 'Strawberry 테스트'를 먼저 진행했습니다.

❓ 질문: "How many letter 'r's are in the word 'Strawberry'?" (딸기라는 단어에 r이 몇 개인가?)

기존 LLM들의 실수:
대부분의 AI는 단어를 통째로 인식(Tokenization)하기 때문에 "2개"라고 오답을 내놓는 경우가 많습니다.

DeepSeek-R1의 답변 과정:
하지만 R1 모델은 <think> 태그를 열고 스스로 검산합니다.

Let's count manually.
S-t-r (1)
a-w
b-e-r (2)
r (3)
y.
So the total count is 3.

정확합니다. 이 '생각하는 능력(Reasoning)'이 바로 코딩에서 버그를 줄여주는 핵심 기술입니다.


Phase 2. 파이썬 로또 생성기 만들기

이제 본게임입니다. 파이썬의 기본 GUI 라이브러리인 Tkinter를 사용해 프로그램을 짜달라고 했습니다.

💻 프롬프트(Prompt):
"Create a Python script using Tkinter for a 'Lotto Number Generator'.
1. It needs a 'Generate' button.
2. Pick 6 random numbers (1-45) and 1 bonus number.
3. Sort the main numbers.
4. Draw colorful balls on a canvas for the numbers.
5. Make the UI look modern and clean."

DeepSeek가 작성한 코드 (100% 무수정)

놀랍게도 단 한 번의 에러도 없이 실행되었습니다. 특히 공을 그리는 Canvas 좌표 계산 부분이 완벽했습니다.

import tkinter as tk
from tkinter import font
import random

class LottoGenerator:
    def __init__(self, root):
        self.root = root
        self.root.title("DeepSeek AI Lotto Generator")
        self.root.geometry("600x450")
        self.root.configure(bg="#f0f0f0")

        # 타이틀 라벨
        title_font = font.Font(family="Helvetica", size=24, weight="bold")
        self.label = tk.Label(root, text="Lotto 6/45 Generator", font=title_font, bg="#f0f0f0", fg="#333")
        self.label.pack(pady=30)

        # 공이 그려질 캔버스 영역
        self.canvas = tk.Canvas(root, width=550, height=100, bg="white", bd=0, highlightthickness=0)
        self.canvas.pack(pady=20)

        # 생성 버튼
        btn_font = font.Font(size=14, weight="bold")
        self.btn = tk.Button(root, text="번호 추첨하기 (Generate)", command=self.generate_numbers, 
                             bg="#4CAF50", fg="white", activebackground="#45a049", 
                             font=btn_font, padx=20, pady=10, relief="flat")
        self.btn.pack(pady=30)

    def generate_numbers(self):
        # 번호 추출 로직 (1~45 중 7개)
        nums = random.sample(range(1, 46), 7)
        main_nums = sorted(nums[:6])
        bonus_num = nums[6]
        
        self.draw_balls(main_nums, bonus_num)

    def get_color(self, num):
        # 로또 공식 색상 적용
        if num <= 10: return "#fbc400" # 노랑
        elif num <= 20: return "#69c8f2" # 파랑
        elif num <= 30: return "#ff7272" # 빨강
        elif num <= 40: return "#aaaaaa" # 회색
        else: return "#b0d840" # 초록

    def draw_balls(self, main_nums, bonus_num):
        self.canvas.delete("all")
        
        start_x = 30
        y = 50
        radius = 30
        gap = 10
        
        # 메인 번호 6개 그리기
        for i, num in enumerate(main_nums):
            x = start_x + i * (radius * 2 + gap)
            color = self.get_color(num)
            
            # 원 그리기
            self.canvas.create_oval(x, y-radius, x+radius*2, y+radius, fill=color, outline=color)
            # 숫자 쓰기
            self.canvas.create_text(x+radius, y, text=str(num), font=("Arial", 14, "bold"), fill="white")

        # 보너스 번호 구분선 (+)
        plus_x = start_x + 6 * (radius * 2 + gap)
        self.canvas.create_text(plus_x, y, text="+", font=("Arial", 20, "bold"), fill="#999")
        
        # 보너스 번호 그리기
        bonus_x = plus_x + 30
        b_color = self.get_color(bonus_num)
        self.canvas.create_oval(bonus_x, y-radius, bonus_x+radius*2, y+radius, fill=b_color, outline=b_color)
        self.canvas.create_text(bonus_x+radius, y, text=str(bonus_num), font=("Arial", 14, "bold"), fill="white")

if __name__ == "__main__":
    root = tk.Tk()
    app = LottoGenerator(root)
    root.mainloop()

위 코드를 복사해서 lotto.py로 저장하고 실행해 보세요. 아주 예쁜 로또 생성기가 뜹니다.

DeepSeek는 심지어 로또 공식 공 색상(10번대 노랑, 20번대 파랑 등)까지 정확하게 구현했습니다. 제가 따로 말하지도 않았는데 말이죠.

 

Tkinter로 만든 로또 번호 추출기 실행 화면

Phase 3. 개발자를 위한 총평

직접 사용해 보고 느낀 DeepSeek-R1(Local)의 장단점입니다.

항목 DeepSeek-R1 (Local) ChatGPT-4o (Cloud)
코드 정확도 ⭐⭐⭐⭐⭐ (논리적) ⭐⭐⭐⭐ (빠르지만 가끔 환각)
속도 ⭐⭐⭐ (생각할 시간이 필요함) ⭐⭐⭐⭐⭐ (즉답)
비용 0원 (Free) 월 30,000원

결론적으로, "생각할 시간이 필요한 복잡한 로직"을 짤 때는 DeepSeek가 훨씬 안정적입니다. 특히 인터넷이 안 되는 환경이나, 보안이 중요한 사내 프로젝트에서는 대체 불가능한 선택지가 될 것 같습니다.

이번 설 연휴, 딥시크가 뽑아준 번호로 로또 1등을 노려보는 건 어떨까요? 😄


👉 3만원 아끼는 AI 재테크 썰 (네이버 블로그)

(50대 아재의 솔직한 AI 활용 후기는 네이버에서 연재 중입니다)