EDITZ:我已经想通了。:)我所要做的就是在100
的末尾添加一个.0
(同时添加一个int()
语句)P是浮点/小数!
我正在做一个因子计算器。它工作得很好。以下是代码的示例输出:
获取{10}的因子
[1,2,5,10]
获取{120}的因子
[1,2,3,4,5,6,8,10,12,15,20,24,30,40,60120]
依此类推(您在大括号({})中输入文本)。它是用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%
[1101]
这显然是个问题。只有当你输入一个等于或小于100的数字,并且sense 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
有什么线索表明它为什么不起作用吗?如果你能帮忙的话,非常感谢。:)
默认情况下,如果所有操作数都是整数,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)
当执行100 / n
时,它将其视为两个整数,因此结果也是一个整数。
通过将该行更改为以下行来强制其为浮动:
str(100.0 / n * i)
在该计算中有一个浮点数将导致结果也是一个浮点号