梧桐精舍
东湖沙湾论彩 · 少量开放,精准服务

首页 / 数字三工具乐园 / 文章

2码稳定底王 开发者文档

2026-11-05 16:40:56 · 数字三工具乐园

2码稳定底王 - 开发者文档

📚 目录

  1. 项目结构
  2. 代码架构
  3. 核心模块
  4. API文档
  5. 开发环境
  6. 代码规范
  7. 扩展开发

📁 项目结构

2码稳定底王/
├── main.py                          # 主程序入口
├── config.py                        # 配置文件
├── core_algorithm.py                # 核心算法模块
├── data_fetcher.py                  # 数据获取模块
├── requirements.txt                 # 依赖包列表
│
├── utils/                           # 工具模块
│   ├── __init__.py
│   ├── logger.py                   # 日志系统
│   ├── validators.py               # 数据验证
│   └── ui_helpers.py               # UI工具函数
│
├── registration/                    # 注册系统
│   ├── __init__.py
│   ├── client_license_validator.py # 客户端验证器
│   ├── production_registration_core.py # 注册核心
│   └── 注册管理工具.py              # 注册管理工具
│
├── data/                           # 数据目录(自动创建)
│   └── *.xlsx, *.csv, *.txt       # 导出的数据文件
│
├── logs/                           # 日志目录(自动创建)
│   └── app_YYYYMMDD.log           # 日志文件
│
├── docs/                           # 文档目录
│   ├── 用户手册.md
│   ├── 开发者文档.md
│   └── API文档.md
│
└── tests/                          # 测试目录
    ├── test_algorithm.py
    ├── test_data_fetch.py
    └── ...

🏗️ 代码架构

架构图

┌─────────────────────────────────────────┐
│           GUI Layer (main.py)           │
│  - 用户界面                              │
│  - 事件处理                              │
│  - 结果显示                              │
└──────────────┬──────────────────────────┘
               │
┌──────────────▼──────────────────────────┐
│      Business Logic Layer               │
│  - core_algorithm.py (算法逻辑)          │
│  - data_fetcher.py (数据获取)            │
└──────────────┬──────────────────────────┘
               │
┌──────────────▼──────────────────────────┐
│        Utility Layer                    │
│  - utils/logger.py (日志)                │
│  - utils/validators.py (验证)            │
│  - utils/ui_helpers.py (UI工具)          │
└──────────────┬──────────────────────────┘
               │
┌──────────────▼──────────────────────────┐
│        Config Layer                     │
│  - config.py (配置管理)                  │
└─────────────────────────────────────────┘

模块依赖关系

main.py
  ├── config.py
  ├── core_algorithm.py
  ├── data_fetcher.py
  ├── utils/logger.py
  ├── utils/validators.py
  ├── utils/ui_helpers.py
  └── registration/client_license_validator.py
      └── registration/production_registration_core.py

🔧 核心模块

1. main.py - 主程序

职责:

  • GUI界面创建和管理
  • 用户交互处理
  • 功能调用和结果展示

主要类:

  • LotteryApp: 主应用程序类

关键方法:

  • __init__(): 初始化应用
  • create_widgets(): 创建界面组件
  • update_latest(): 更新最新开奖号码
  • custom_number(): 自定义号码处理
  • backtest(): 历史回测
  • get_matching_numbers(): 获取匹配号码
  • export_to_excel(): 导出Excel
  • export_matching_numbers(): 导出匹配号码

2. core_algorithm.py - 核心算法

职责:

  • 实现29组稳定2码生成算法
  • 实现匹配检查算法

主要函数:

  • convert_to_dual_code(number_str): 转换为对码
  • get_six_and_four_codes(original_number): 获取6码和4码
  • get_even_numbers_from_six_codes(six_codes): 提取偶数
  • calculate_three_numbers(even_list): 计算三个数字
  • get_29_groups(original_number): 生成29组2码
  • check_match(lottery_number, groups): 检查匹配

算法流程:

开奖号码 → 转对码 → 分离6码4码 → 提取偶数 → 
两两相加 → 查找对应两码 → 加上对码 → 29组2码

3. data_fetcher.py - 数据获取

职责:

  • 从互联网获取开奖数据
  • 解析数据格式
  • 提供数据接口

主要类:

  • DataFetcher: 数据获取类

主要方法:

  • fetch_data(lottery_type): 获取原始数据
  • get_latest_number(lottery_type): 获取最新开奖号码
  • get_history_data(lottery_type, periods): 获取历史数据

数据源:

  • 3D: [数据源地址已隐藏]
  • P3: [数据源地址已隐藏]

4. config.py - 配置管理

职责:

  • 统一管理所有配置常量
  • 提供配置接口

主要配置:

  • 算法常量(GROUPS_COUNT, EVEN_COUNT等)
  • 网络配置(REQUEST_TIMEOUT, DATA_URLS等)
  • UI配置(WINDOW_WIDTH, COLORS等)
  • 导出配置(EXPORT_FORMATS等)

5. utils/logger.py - 日志系统

职责:

  • 提供统一的日志接口
  • 管理日志文件

主要函数:

  • setup_logger(name, log_level): 设置日志系统
  • get_logger(name): 获取日志器

日志级别:

  • DEBUG: 调试信息
  • INFO: 一般信息
  • WARNING: 警告信息
  • ERROR: 错误信息

6. utils/validators.py - 数据验证

职责:

  • 验证用户输入
  • 提供验证函数

主要函数:

  • validate_lottery_number(number): 验证开奖号码
  • validate_periods(periods_str): 验证回测期数

7. registration/ - 注册系统

职责:

  • 管理软件试用和注册
  • 验证授权文件

主要类:

  • ClientLicenseValidator: 客户端授权验证器
  • TrialManager: 试用期管理器
  • HardwareIdentifier: 硬件标识符
  • RSAKeyManager: RSA密钥管理
  • LicenseGenerator: 许可证生成器

📖 API文档

core_algorithm.py

get_29_groups(original_number: str) -> List[str]

生成29组稳定2码。

参数:

  • original_number (str): 开奖号码字符串,如 "218"

返回:

  • List[str]: 29组2码列表,如 ["01", "04", "05", ...]

示例:

from core_algorithm import get_29_groups

groups = get_29_groups("218")
print(groups)  # ['01', '04', '05', ...]

check_match(lottery_number: str, groups: List[str]) -> bool

检查开奖号码是否匹配29组2码。

参数:

  • lottery_number (str): 开奖号码,如 "281"
  • groups (List[str]): 29组2码列表

返回:

  • bool: 是否匹配

示例:

from core_algorithm import check_match

is_match = check_match("281", ["01", "18", "28", ...])
print(is_match)  # True or False

data_fetcher.py

DataFetcher.get_latest_number(lottery_type: str) -> Tuple[bool, str, Optional[str]]

获取最新一期开奖号码。

参数:

  • lottery_type (str): 彩种类型,'3D' 或 'P3'

返回:

  • Tuple[bool, str, Optional[str]]: (成功标志, 消息, 开奖号码)

示例:

from data_fetcher import DataFetcher

fetcher = DataFetcher()
success, message, number = fetcher.get_latest_number("3D")
if success:
    print(f"最新开奖号码: {number}")

DataFetcher.get_history_data(lottery_type: str, periods: int) -> Tuple[bool, str, List[Tuple[str, str]]]

获取历史开奖数据。

参数:

  • lottery_type (str): 彩种类型,'3D' 或 'P3'
  • periods (int): 期数

返回:

  • Tuple[bool, str, List[Tuple[str, str]]]: (成功标志, 消息, 数据列表)
  • 数据格式:[(期号, 开奖号码), ...]

示例:

from data_fetcher import DataFetcher

fetcher = DataFetcher()
success, message, history = fetcher.get_history_data("3D", 100)
if success:
    for period, number in history:
        print(f"{period}: {number}")

utils/validators.py

validate_lottery_number(number: str) -> Tuple[bool, str]

验证开奖号码格式。

参数:

  • number (str): 开奖号码字符串

返回:

  • Tuple[bool, str]: (是否有效, 错误消息)

示例:

from utils.validators import validate_lottery_number

is_valid, error_msg = validate_lottery_number("218")
if not is_valid:
    print(error_msg)

validate_periods(periods_str: str) -> Tuple[bool, str, int]

验证回测期数。

参数:

  • periods_str (str): 期数字符串

返回:

  • Tuple[bool, str, int]: (是否有效, 错误消息, 期数)

示例:

from utils.validators import validate_periods

is_valid, error_msg, periods = validate_periods("100")
if not is_valid:
    print(error_msg)

💻 开发环境

环境要求

  • Python 3.6+
  • pip 包管理器
  • Git(可选)

环境搭建

  1. 克隆项目(如果有Git仓库)
   git clone <repository-url>
   cd 2码稳定底王
  1. 创建虚拟环境(推荐)
   python -m venv venv
   # Windows
   venv\Scripts\activate
   # Linux/Mac
   source venv/bin/activate
  1. 安装依赖
   pip install -r requirements.txt
  1. 运行程序
   python main.py

开发工具推荐

  • IDE: PyCharm, VS Code
  • 代码格式化: black
  • 代码检查: flake8, pylint
  • 类型检查: mypy
  • 测试框架: pytest

📝 代码规范

命名规范

  • 类名: 使用大驼峰命名(PascalCase),如 LotteryApp
  • 函数名: 使用小写下划线命名(snake_case),如 get_29_groups
  • 常量: 使用全大写下划线命名,如 GROUPS_COUNT
  • 变量: 使用小写下划线命名,如 lottery_number

代码风格

  • 遵循 PEP 8 代码规范
  • 使用4个空格缩进
  • 行长度不超过79字符(可适当放宽到100)
  • 函数和类之间空2行
  • 使用类型提示(Type Hints)

注释规范

  • 模块级文档字符串
  • 类和函数文档字符串
  • 复杂逻辑添加行内注释

示例:

def get_29_groups(original_number: str) -> List[str]:
    """
    根据开奖号码获取29组稳定大底
    
    Args:
        original_number: 开奖号码字符串,如 "218"
    
    Returns:
        29组两码的列表
    """
    # 实现代码...

🔨 扩展开发

添加新功能

  1. 在main.py中添加功能方法
   def new_feature(self):
       """新功能说明"""
       # 实现代码
  1. 在create_widgets()中添加UI组件
   btn_new = tk.Button(..., command=self.new_feature)
  1. 更新config.py添加配置(如需要)

添加新的数据源

  1. 修改data_fetcher.py
   URLS = {
       '3D': '[数据源地址已隐藏]
       'P3': '[数据源地址已隐藏]
       'NEW': 'http://new-source.com/data.txt'  # 新数据源
   }
  1. 实现数据解析逻辑

添加新的导出格式

  1. 在export_matching_numbers()中添加格式选项
  2. 在_do_export_matching_numbers_multiple()中实现导出逻辑

自定义算法

  1. 修改core_algorithm.py
  2. 保持函数接口不变(如需要)
  3. 更新测试用例

🧪 测试

运行测试

# 运行所有测试
python -m pytest tests/

# 运行特定测试
python -m pytest tests/test_algorithm.py

# 运行测试并显示覆盖率
python -m pytest tests/ --cov=.

编写测试

import unittest
from core_algorithm import get_29_groups

class TestAlgorithm(unittest.TestCase):
    def test_get_29_groups(self):
        groups = get_29_groups("218")
        self.assertEqual(len(groups), 29)
        self.assertIn("01", groups)

📦 打包发布

使用PyInstaller打包

  1. 安装PyInstaller
   pip install pyinstaller
  1. 打包命令
   pyinstaller --onefile --windowed --name="2码稳定底王" main.py
  1. 打包选项说明
  • --onefile: 打包成单个exe文件
  • --windowed: 不显示控制台窗口
  • --name: 指定exe文件名

打包注意事项

  • 确保所有依赖都已安装
  • 测试打包后的exe是否正常运行
  • 检查文件大小是否合理
  • 测试在不同Windows版本上的兼容性

🔍 调试技巧

使用日志系统

from utils.logger import get_logger

logger = get_logger("模块名")
logger.debug("调试信息")
logger.info("一般信息")
logger.warning("警告信息")
logger.error("错误信息", exc_info=True)

使用断点调试

在IDE中设置断点,逐步调试代码。

查看日志文件

日志文件保存在 logs/ 目录下,文件名格式:app_YYYYMMDD.log

📚 参考资料


文档版本: v1.5
最后更新: 2026-01-03

← 返回数字三工具乐园文章列表

同栏目其它文章