0

EDITZ:我已经想通了。:) 我所要做的就是.0在末尾100添加一个(并添加一个int()语句)。:P 是的浮点数/小数!

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

获得 {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

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

4

2 回答 2

2

当您这样做100 / n时,它会将其视为两个整数,因此结果也将是一个整数。

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

str(100.0 / n * i)

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

于 2014-08-26T19:30:36.527 回答
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

于 2014-08-26T19:32:44.563 回答