Python百分比 - 完整的计算器

时间:2014-08-26 19:21:09

标签: python percentage fractions factors

菲尼克斯:我已经弄明白了。 :)我所要做的就是在.0的末尾添加100(并添加int()语句)。 :P Yay for float / decimals!

我正在制作一个因子计算器。它完美地运作。这是代码的示例输出:

获取{10}

的因子

[1,2,5,10]

获取{120}的因子

[1,2,3,4,5,6,8,10,12,15,20,24,30,40,60,120]

等等(您在花括号({})中输入文本)。它是用Python 2.7制作的。为了使它完美110%(比之前更好:P),我希望它显示计算的数量..而我的计算机非常快,可以瞬间计算120的因子,如果我输入5000这样的大数字需要大约30秒来计算。有点长(这是因为它计算了2500万个方程)。如果它在屏幕底部显示完成百分比,那么你就会知道剩下多长时间。

因此,当您输入5作为数字时,我的代码(我很快会向您显示)将输出此内容。

得到因子5    计算完成:20%    计算完成:40%    计算完成:60%    计算完成:80%    [1,5]

(我不知道为什么它没有显示100%,我可以很容易地添加它,但不要担心。)好的,所以它运作良好。大!现在我遇到了这个问题..

得到因子101

计算完成:0%

计算完成:0%

计算完成:0%

计算完成:0%

计算完成:0%

计算完成:0%


计算完成:0%

计算完成:0%

计算完成:0%

[1,101]

这显然是一个问题。它仅在您输入等于或小于100的数字时才有效,并且感觉100会立即计算,这有点无意义。 :P

此时可能是展示我的代码的好时机:

def getFactors(n):
    out = [1]
    for i in range(1, n):
        for j in range(1, n):
            if (i * j == n):
                out.append(i)
        print "Calculation completed: " + str(100 / n * i ) + "%"
    out.append(n)
    return out

while(0 < 1):
    number = int(raw_input("Get factors of "))
    print getFactors(number)
    print ""

主要关注:第一个print功能。 :P

为什么它不起作用的任何线索?如果你能提供帮助,非常感谢。 :)

2 个答案:

答案 0 :(得分:2)

当你执行100 / n时,它将它视为两个整数,因此结果也将是一个整数。

通过将该行更改为以下内容强制它成为浮点数:

str(100.0 / n * i)

在该计算中有一个浮点数也会导致结果为浮点数

答案 1 :(得分:2)

默认情况下,如果所有操作数都是整数,Python 2会对整数算术执行计算。

        print "Calculation completed: " + str(100. / n * i ) + "%"
        #                                        ^
        #                      the "dot" here force calculation
        #                      using floating point values

如Padraic Cunningham所建议的另一种方法是将此导入添加到源文件中:

from __future__ import division

它使Python 2中的除法与Python 3中的行为相同(详见PEP-238