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

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

质数号码和选号器 API 参考

2026-11-05 16:27:36 · 数字三工具乐园

质数号码和选号器 - API参考文档

目录

  1. 数据获取模块
  2. 遗漏值计算模块
  3. 质数判断模块
  4. 号码筛选模块
  5. 历史模拟模块
  6. 注册系统模块

数据获取模块

DataFetcher类

数据获取器,负责从互联网获取3D/P3开奖数据。

初始化

from data_fetcher import DataFetcher

fetcher = DataFetcher()

方法

##### fetch_data(data_type: str) -> Optional[pd.DataFrame]

从互联网获取指定类型的开奖数据。

参数:

  • data_type (str): 数据类型,'3D' 或 'P3'

返回:

  • Optional[pd.DataFrame]: 包含开奖数据的DataFrame,失败返回None

DataFrame列结构:

3D数据(17列):

  • 开奖期号
  • 开奖日期
  • 开奖号百位
  • 开奖号十位
  • 开奖号个位
  • 试机号百位
  • 试机号十位
  • 试机号个位
  • ...(其他列)

P3数据(12列):

  • 开奖期号
  • 开奖日期
  • 开奖号百位
  • 开奖号十位
  • 开奖号个位
  • ...(其他列)

示例:

df = fetcher.fetch_data('3D')
if df is not None:
    print(f"获取到 {len(df)} 期数据")
    print(df.head())

##### get_latest_period(data_type: str) -> Optional[Dict]

获取最新一期开奖数据。

参数:

  • data_type (str): 数据类型

返回:

  • Optional[Dict]: 包含最新一期数据的字典,失败返回None

字典结构:

{
    '期号': int,
    '日期': str,
    '百位': int,
    '十位': int,
    '个位': int,
    '号码': str
}

示例:

latest = fetcher.get_latest_period('3D')
if latest:
    print(f"最新期号: {latest['期号']}")
    print(f"最新号码: {latest['号码']}")

##### clear_cache()

清除数据缓存。

示例:

fetcher.clear_cache()

遗漏值计算模块

OmissionCalculator类

遗漏值计算器,计算百位、十位、个位的遗漏值。

初始化

from omission_calculator import OmissionCalculator
import pandas as pd

# history_data 是包含历史开奖数据的DataFrame
calculator = OmissionCalculator(history_data)

参数:

  • history_data (pd.DataFrame): 历史开奖数据,必须包含以下列:
  • '开奖期号'
  • '开奖号百位'
  • '开奖号十位'
  • '开奖号个位'
  • 数据应按期号降序排列(最新在前)

方法

##### calculate_omission(digit: int, position: str) -> int

计算指定位置指定数字的遗漏值。

参数:

  • digit (int): 数字(0-9)
  • position (str): 位置,'百位'、'十位'或'个位'

返回:

  • int: 遗漏值(期数)

示例:

# 计算百位0的遗漏值
omission = calculator.calculate_omission(0, '百位')
print(f"百位0的遗漏值: {omission}")

##### calculate_omissions_for_number(number: str) -> Dict[str, int]

计算指定号码的百位、十位、个位遗漏值。

参数:

  • number (str): 三位号码字符串,如"000"、"123"等

返回:

  • Dict[str, int]: 包含百位、十位、个位遗漏值的字典

字典结构:

{
    '百位': int,
    '十位': int,
    '个位': int
}

示例:

omissions = calculator.calculate_omissions_for_number("000")
print(f"百位遗漏: {omissions['百位']}")
print(f"十位遗漏: {omissions['十位']}")
print(f"个位遗漏: {omissions['个位']}")

##### calculate_omission_sum(number: str) -> int

计算指定号码的百位、十位、个位遗漏值总和。

参数:

  • number (str): 三位号码字符串

返回:

  • int: 遗漏值总和

示例:

total = calculator.calculate_omission_sum("000")
print(f"遗漏值总和: {total}")

质数判断模块

PrimeChecker类

质数判断器,判断一个数是否为质数。

初始化

from prime_checker import PrimeChecker

checker = PrimeChecker()

方法

##### is_prime(n: int) -> bool

判断一个数是否为质数。

参数:

  • n (int): 要判断的整数

返回:

  • bool: True表示是质数,False表示不是质数

算法:

  • 使用试除法
  • 只需检查到sqrt(n)
  • 使用缓存优化性能

示例:

print(checker.is_prime(17))  # True
print(checker.is_prime(18))  # False
print(checker.is_prime(2))   # True
print(checker.is_prime(1))   # False

##### clear_cache()

清除质数缓存。

示例:

checker.clear_cache()

号码筛选模块

NumberFilter类

号码筛选器,筛选出遗漏值总和为质数的号码。

初始化

from number_filter import NumberFilter
import pandas as pd

# history_data 是包含历史开奖数据的DataFrame
filter_obj = NumberFilter(history_data)

方法

##### filter_numbers(progress_callback=None) -> List[Dict]

筛选出符合条件的号码(遗漏值总和为质数)。

参数:

  • progress_callback (Callable, optional): 可选的回调函数,用于报告进度
  • 函数签名:callback(current: int, total: int, number: str)
  • current: 当前处理的号码索引(1-based)
  • total: 总号码数(1000)
  • number: 当前处理的号码

返回:

  • List[Dict]: 符合条件的号码列表

列表元素结构:

{
    'number': str,              # 号码字符串,如"000"
    'hundreds_omission': int,   # 百位遗漏值
    'tens_omission': int,       # 十位遗漏值
    'ones_omission': int,       # 个位遗漏值
    'total_omission': int       # 遗漏值总和
}

示例:

def progress(current, total, number):
    print(f"处理中: {current}/{total} ({number})")

results = filter_obj.filter_numbers(progress_callback=progress)
print(f"筛选出 {len(results)} 个符合条件的号码")

for item in results:
    print(f"{item['number']}: 总和={item['total_omission']}")

历史模拟模块

HistorySimulator类

历史模拟器,模拟测试历史期数,验证筛选效果。

初始化

from history_simulator import HistorySimulator
import pandas as pd

# history_data 是包含历史开奖数据的DataFrame
simulator = HistorySimulator(history_data)

方法

##### simulate_periods(num_periods: int, progress_callback=None) -> List[Dict]

模拟测试过去若干期,找出遗漏值总和为质数的期数。

参数:

  • num_periods (int): 要测试的期数(从最新一期往前数)
  • progress_callback (Callable, optional): 可选的回调函数
  • 函数签名:callback(current: int, total: int, period: int)
  • current: 当前测试的期数索引(1-based)
  • total: 总测试期数
  • period: 当前测试的期号

返回:

  • List[Dict]: 符合条件的期数列表

列表元素结构:

{
    'period': int,              # 期号
    'date': str,                # 开奖日期
    'number': str,              # 开奖号码
    'hundreds_omission': int,   # 百位遗漏值
    'tens_omission': int,       # 十位遗漏值
    'ones_omission': int,       # 个位遗漏值
    'total_omission': int       # 遗漏值总和
}

示例:

def progress(current, total, period):
    print(f"测试中: {current}/{total} (期号: {period})")

results = simulator.simulate_periods(100, progress_callback=progress)
print(f"找到 {len(results)} 期符合条件的开奖")

for item in results:
    print(f"期号 {item['period']}: {item['number']}, 总和={item['total_omission']}")

注册系统模块

ClientLicenseValidator类

客户端授权验证器,验证授权文件的有效性。

初始化

from registration.client_license_validator import ClientLicenseValidator

validator = ClientLicenseValidator(
    public_key_path="registration/keys/public_key.pem",
    license_file="license.json"
)

方法

##### load_license() -> Optional[Dict]

加载授权文件。

返回:

  • Optional[Dict]: 授权文件内容,失败返回None

##### verify_license(license_data: Dict = None) -> Tuple[bool, str]

验证授权文件。

参数:

  • license_data (Dict, optional): 授权数据,如果为None则从文件加载

返回:

  • Tuple[bool, str]: (是否有效, 原因说明)

##### get_license_info() -> Optional[Dict]

获取授权信息。

返回:

  • Optional[Dict]: 授权信息字典

ActivationDialog类

激活对话框,用于用户激活软件。

初始化

from registration.client_license_validator import ActivationDialog

dialog = ActivationDialog(parent_window, validator)

使用示例

完整示例:筛选号码

from data_fetcher import DataFetcher
from number_filter import NumberFilter

# 1. 获取数据
fetcher = DataFetcher()
df = fetcher.fetch_data('3D')

if df is not None:
    # 2. 创建筛选器
    filter_obj = NumberFilter(df)
    
    # 3. 筛选号码
    results = filter_obj.filter_numbers()
    
    # 4. 显示结果
    print(f"筛选出 {len(results)} 个符合条件的号码")
    for item in results[:10]:  # 显示前10个
        print(f"{item['number']}: {item['total_omission']}")

完整示例:历史模拟测试

from data_fetcher import DataFetcher
from history_simulator import HistorySimulator

# 1. 获取数据
fetcher = DataFetcher()
df = fetcher.fetch_data('3D')

if df is not None:
    # 2. 创建模拟器
    simulator = HistorySimulator(df)
    
    # 3. 模拟测试100期
    results = simulator.simulate_periods(100)
    
    # 4. 显示结果
    print(f"测试100期,找到 {len(results)} 期符合条件的开奖")
    print(f"命中率: {len(results)/100*100:.2f}%")

版本:v1.1.0
更新日期:2025-12-18

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

同栏目其它文章