You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python高效生成符合规则的化学复合材料组分表

生成符合规则的复合材料组分表的Python代码

规则回顾

  • 表中数值为各原料在复合材料中的质量百分比
  • 仅涉及原料A、B、C,最多使用两种原料制备复合材料
  • 每个数值必须是x的倍数,且每行数值总和≤y
  • 需列出所有符合上述规则的组合

Python实现代码

import itertools

def generate_composite_table(x, y):
    # 生成单个原料的所有合法取值:0, x, 2x,...不超过y
    max_single_val = y // x
    valid_values = [i * x for i in range(max_single_val + 1)]
    
    composite_list = []
    # 情况1:仅使用一种原料(包含全0组合)
    for val in valid_values:
        composite_list.append((val, 0, 0))
        composite_list.append((0, val, 0))
        composite_list.append((0, 0, val))
    # 情况2:使用两种不同原料,且总和不超过y
    for a, b in itertools.combinations(valid_values, 2):
        if a + b <= y:
            composite_list.append((a, b, 0))
            composite_list.append((a, 0, b))
            composite_list.append((0, a, b))
    # 去重(全0组合会被重复添加三次)
    composite_list = list(set(composite_list))
    # 排序让输出更规整
    composite_list.sort()
    
    # 打印表头
    print(f"{'':<15} {'Material A':<12} {'Material B':<12} {'Material C':<12}")
    # 打印所有组合
    for idx, comp in enumerate(composite_list, 1):
        print(f"Composite{idx:<6} {comp[0]:<12} {comp[1]:<12} {comp[2]:<12}")

# 测试示例:x=1,y=2
generate_composite_table(1, 2)

代码说明

  1. 先计算单个原料的合法取值范围,步长为x,最大值不超过y
  2. 分两类生成组合:单原料(含全0)、双原料且总和符合要求
  3. 对组合去重并排序,避免重复条目且让输出更整齐
  4. 格式化打印出规范的组分表

修改函数参数x和y的数值,即可快速生成任意大小限制下的合规组分表,完全满足批量生成需求。

内容的提问来源于stack exchange,提问作者hiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 23:55:14