0

EDITZ:私はそれを理解しました。:)私がしなければならなかった.0のは、の最後にaを追加することだけでした100(そしてint()ステートメントも追加しました)。:P 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)、計算された金額を表示するようにしたい. 5000 のように、計算に約 30 秒かかります。少し長いです (これは 2500 万の方程式を計算しているためです)。画面の一番下にパーセンテージが表示されて、あとどれくらい残っているかがわかるといいですね。

したがって、私のコード (後で説明します) は、数値として 5 を入力すると、これを出力します。

5 の因数を取得 計算完了: 20% 計算完了: 40% 計算完了: 60% 計算完了: 80% [1, 5]

(なぜ 100% と表示されないのかわかりませんが、簡単に追加できますので心配しないでください。) よし、うまくいきました。すごい!今、私はこの1つの問題を取得します..

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

デフォルトでは、すべてのオペランドが整数の場合、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 に答える