【问题标题】:Is there an easy way to calculate a formula in Python conditional on the Len of input有没有一种简单的方法可以根据输入的 Len 计算 Python 中的公式
【发布时间】:2020-06-24 16:58:02
【问题描述】:

我完全不知道如何做到这一点,所以任何建议/提示将不胜感激。

((6778 // (6*7*8*9)) * 1000) + 
(((6778 % (6*7*8*9)) // (7*8*9)) * 100) +
(((6778 % (6*7*8*9) % (7*8*9)) // (8*9)) *10)+
(6778 % (6*7*8*9) % (7*8*9) % (8*9) // 9)

输出 = 21311

必须适用于多个整数,而不仅仅是 6778

我尝试了一个 for 循环,但事实证明它很困难

【问题讨论】:

  • 你能解释一下你要做什么吗?
  • 练习和习惯编码
  • 对不起,我完全不明白。数字 6778 与表达式有什么关系?实际的公式是什么?也就是说,逐步解释您应该如何处理输入的规则是什么?当您说您“尝试了 for 循环”时,您编写的代码到底是什么?当您说要计算“以输入的长度为条件”时,这到底是什么意思?当输入长度改变时应该改变什么?另外,你知道整数没有长度,对吧?

标签: python for-loop formula modulo


【解决方案1】:

您好,您需要使用一个递归函数来调用自身,直到满足某个条件。我不得不说你的例子不是很清楚所以我只是试图解决你所有块的分子的重复部分。我将在此处发布代码供您参考,但我不确定它是否符合您的要求,如果您能给我们更多指导,我们将能够进一步帮助您

        x = 6778
    def split_val(x):
        return [float(i) for i in str(x)]

    def perc_calculation(x, i, val):
        if i > 0:
            list_num = split_val(x)
            prod_val = np.prod([list_num[0] + num for num in range(len(list_num))][(i-1):])
            val = val % prod_val
            return perc_calculation(x, i-1, val)
        else:
            return val
    out_val = 0
    for i in range(len(str(x))):
        list_num = split_val(x)
        prod_val = np.prod([list_num[0] + num for num in range(len(list_num))][(i):])
        numerator = perc_calculation(x,i,x)
        print(numerator)

这是结果: 6778 730.0 226.0 10.0

您可能注意到 perc_calculation 函数是一个递归函数,因为它会调用自己

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    相关资源
    最近更新 更多