我是一名编程初学者,我想知道如何生成满足条件的三个整数.

例子:

我们得到n = 30,我们被要求生成三个整数a,b和c,所以7*a + 5*b + 3*c = n.

我正在使用Python 3.

我的try :

x = int(input())
c = []
k = []
w = []
for i in range(x):
    for j in range(x):
        for h in range(x):
           if 7*i + 5*j + 3*h = x:
              c.append(i)
              k.append(j)
              w.append(h)
if len(c) == len(k) == len(w) 
    print(-1)
else: 
    print(str(k[0]) + ' ' + str(c[0]) + ' ' + str(w[0]))

推荐答案

import numpy as np


def generate_answer(n: int, low_limit:int, high_limit: int):
    while True:
        a = np.random.randint(low_limit, high_limit + 1, 1)[0]
        b = np.random.randint(low_limit, high_limit + 1, 1)[0]
        c = (n - 7 * a - 5 * b) / 3.0
        if int(c) == c and low_limit <= c <= high_limit:
            break

    return a, b, int(c)


if __name__ == "__main__":
    n = 30
    ans = generate_answer(low_limit=-5, high_limit=50, n=n)
    assert ans[0] * 7 + ans[1] * 5 + ans[2] * 3 == n
    print(ans)

如果你 Select a,b,c中的两个,你就知道第三个了.在这种情况下,我将a和b的整数随机化,然后发现c乘以c = (n - 7 * a - 5 * b) / 3.0.

确保c是一个整数,并且在允许的范围内,我们就完成了.

如果不是,请再次随机化.


如果你想创造所有的可能性,

def generate_all_answers(n: int, low_limit:int, high_limit: int):
    results = []
    for a in range(low_limit, high_limit + 1):
        for b in range(low_limit, high_limit + 1):
            c = (n - 7 * a - 5 * b) / 3.0
            if int(c) == c and low_limit <= c <= high_limit:
                results.append((a, b, int(c)))

    return results

Python-3.x相关问答推荐

Pandas—在特定列上比较两行双框,并根据特定条件保留其中一行?

将字符串转换为python日期时间时出错

从.csv导入将文件夹路径加入到文件名

一起使用数据类和枚举

无法理解此递归函数的分配和环境用法

删除给定数组中所有元素为True的所有子数组

Pandas 按值和索引对 DF 进行排序

SqlAlchemy - 从 oracle db 中检索长文本

在 Django 中执行 JSONRenderer.render(serialized_student_data.data) 时遇到问题

魔术8球txt文件列表

对齐文本文件中的列

PyQt:退出时没有错误消息(回溯)

如何从 Python 3.5 降级到 Python 3.4

Python 3 与 Python 2 映射行为

使用 Tensorflow 2.0 在 MNIST 上实现自定义神经网络?

如何遍历某些扩展名的文件?

matplotlib - 模块sip没有属性setapi

调用 Python doctest 时如何启用省略号?

TypeError:无法实例化类型元组;使用 tuple() 代替

如何将python日志(log)级别名称转换为整数代码