质数号码和选号器 - 开发者文档
目录
项目结构
质数号码和选号器/
├── main.py # 主程序入口
├── data_fetcher.py # 数据获取模块
├── omission_calculator.py # 遗漏值计算模块
├── prime_checker.py # 质数判断模块
├── number_filter.py # 号码筛选模块
├── history_simulator.py # 历史模拟测试模块
├── registration/ # 注册系统目录
│ ├── client_license_validator.py # 客户端验证模块
│ ├── production_registration_core.py # 注册系统核心
│ ├── 注册管理工具.py # 注册管理工具
│ ├── keys/ # 密钥目录
│ └── license/ # 授权文件目录
├── requirements.txt # 依赖包列表
├── README.md # 项目说明
└── docs/ # 文档目录
技术架构
技术栈
- 编程语言:Python 3.7+
- GUI框架:Tkinter
- 数据处理:Pandas
- 网络请求:Requests
- 加密库:Cryptography
- 打包工具:PyInstaller
架构设计
┌─────────────────────────────────────┐
│ GUI界面层 (main.py) │
├─────────────────────────────────────┤
│ 业务逻辑层 │
│ ├── NumberFilter (号码筛选) │
│ ├── HistorySimulator (历史模拟) │
│ └── OmissionCalculator (遗漏值计算) │
├─────────────────────────────────────┤
│ 数据层 │
│ ├── DataFetcher (数据获取) │
│ └── PrimeChecker (质数判断) │
├─────────────────────────────────────┤
│ 注册系统层 │
│ ├── ClientLicenseValidator │
│ └── ProductionRegistrationCore │
└─────────────────────────────────────┘
模块说明
1. main.py - 主程序
功能:程序入口,GUI界面,功能整合
主要类:
PrimeNumberSelector:主程序类
主要方法:
create_widgets():创建界面fetch_data():获取数据start_filter():开始筛选start_simulation():开始模拟测试init_registration_system():初始化注册系统check_activation_status():检查激活状态
2. data_fetcher.py - 数据获取模块
功能:从互联网获取3D/P3开奖数据
主要类:
DataFetcher:数据获取器
主要方法:
fetch_data(data_type):获取指定类型的数据get_latest_period(data_type):获取最新一期数据
数据源:
- 3D:`[数据源地址已隐藏]
- P3:`[数据源地址已隐藏]
3. omission_calculator.py - 遗漏值计算模块
功能:计算百位、十位、个位的遗漏值
主要类:
OmissionCalculator:遗漏值计算器
主要方法:
calculate_omission(digit, position):计算指定位置指定数字的遗漏值calculate_omissions_for_number(number):计算指定号码的遗漏值calculate_omission_sum(number):计算遗漏值总和
算法说明:
- 遗漏值 = 最新期号 - 上一次出现的期号
- 如果最新一期就是该数字,遗漏值为1(下一期)
4. prime_checker.py - 质数判断模块
功能:判断一个数是否为质数
主要类:
PrimeChecker:质数判断器
主要方法:
is_prime(n):判断n是否为质数
算法:
- 使用试除法
- 只需检查到sqrt(n)
- 使用缓存优化性能
5. number_filter.py - 号码筛选模块
功能:筛选出遗漏值总和为质数的号码
主要类:
NumberFilter:号码筛选器
主要方法:
filter_numbers(progress_callback):筛选号码
筛选逻辑:
- 遍历000-999所有号码
- 计算每个号码的遗漏值
- 判断遗漏值总和是否为质数
- 返回符合条件的号码列表
6. history_simulator.py - 历史模拟测试模块
功能:模拟测试历史期数,验证筛选效果
主要类:
HistorySimulator:历史模拟器
主要方法:
simulate_periods(num_periods, progress_callback):模拟测试指定期数
测试逻辑:
- 从最新一期开始,往前测试指定期数
- 对于每一期,使用该期之前的历史数据计算遗漏值
- 判断该期号码的遗漏值总和是否为质数
- 记录符合条件的期数
API文档
DataFetcher类
fetch_data(data_type: str) -> Optional[pd.DataFrame]
获取指定类型的数据。
参数:
data_type:数据类型,'3D' 或 'P3'
返回:
pd.DataFrame:包含开奖数据的DataFrame,失败返回None
示例:
fetcher = DataFetcher()
df = fetcher.fetch_data('3D')
get_latest_period(data_type: str) -> Optional[Dict]
获取最新一期开奖数据。
参数:
data_type:数据类型
返回:
Dict:包含最新一期数据的字典,失败返回None
OmissionCalculator类
calculate_omission(digit: int, position: str) -> int
计算指定位置指定数字的遗漏值。
参数:
digit:数字(0-9)position:位置('百位'、'十位'或'个位')
返回:
int:遗漏值(期数)
示例:
calculator = OmissionCalculator(history_data)
omission = calculator.calculate_omission(0, '百位')
calculate_omissions_for_number(number: str) -> Dict[str, int]
计算指定号码的百位、十位、个位遗漏值。
参数:
number:三位号码字符串,如"000"
返回:
Dict:包含百位、十位、个位遗漏值的字典
示例:
omissions = calculator.calculate_omissions_for_number("000")
# 返回: {'百位': 1, '十位': 15, '个位': 1}
PrimeChecker类
is_prime(n: int) -> bool
判断一个数是否为质数。
参数:
n:要判断的整数
返回:
bool:True表示是质数,False表示不是质数
示例:
checker = PrimeChecker()
is_prime = checker.is_prime(17) # True
NumberFilter类
filter_numbers(progress_callback=None) -> List[Dict]
筛选出符合条件的号码。
参数:
progress_callback:可选的回调函数,用于报告进度- 函数签名:
callback(current, total, number)
返回:
List[Dict]:符合条件的号码列表
示例:
filter_obj = NumberFilter(history_data)
def progress(current, total, number):
print(f"处理中: {current}/{total} ({number})")
results = filter_obj.filter_numbers(progress_callback=progress)
HistorySimulator类
simulate_periods(num_periods: int, progress_callback=None) -> List[Dict]
模拟测试过去若干期。
参数:
num_periods:要测试的期数progress_callback:可选的回调函数- 函数签名:
callback(current, total, period)
返回:
List[Dict]:符合条件的期数列表
示例:
simulator = HistorySimulator(history_data)
results = simulator.simulate_periods(100)
开发环境
环境要求
- Python 3.7+
- Windows 操作系统
安装依赖
pip install -r requirements.txt
依赖包
requests>=2.25.1:网络请求pandas>=1.3.0:数据处理cryptography>=3.4.8:RSA加密psutil>=5.8.0:硬件信息
开发工具
- IDE:推荐使用PyCharm或VSCode
- 调试:使用Python内置调试器
- 测试:使用unittest或pytest
扩展开发
添加新的筛选条件
- 在
number_filter.py中添加新的筛选逻辑 - 修改
filter_numbers方法 - 更新GUI界面(如需要)
添加新的数据类型
- 在
data_fetcher.py中添加新的数据源 - 更新
DATA_SOURCES字典 - 修改数据解析逻辑
自定义界面
- 修改
main.py中的create_widgets方法 - 添加新的界面组件
- 绑定事件处理函数
代码规范
命名规范
- 类名:大驼峰命名(PascalCase)
- 函数名:小写下划线(snake_case)
- 常量:全大写下划线(UPPER_SNAKE_CASE)
注释规范
- 使用中文注释
- 函数和类必须有文档字符串
- 复杂逻辑需要行内注释
文件编码
- 所有Python文件使用UTF-8编码
- 文件开头添加编码声明:
# -- coding: utf-8 --
版本:v1.1.0
更新日期:2025-12-18