0

その特定の時間に対応する特定の配列増分を持つテーブルを作成したいと思います。例えば:

n     sec
100    0.2
200    0.4
etc.. 

Yは特定の配列の試行回数、nは配列サイズ、増分は特定の増分です

if sortfunction==1:
            i=0
            while i<y:
                dt=0
                for i in range(n):
                    i=i+increment
                    dt+=sort_timehelp(x,quick_sort)
                    output="%d %f\n" %(i,dt)
                    print output

たとえば、Nを1000として増分100とすると、上記の表のようになります。

今私は得る:

n    sec
100  0.001
101  0.0012
102  0.0014

など、増分サイズではなく1ずつ進みます

編集:私は別の質問を受けました:なぜこれはwhileループがそれ以上行かないのですか?

   i=0
   while i<y:
        i=i+1
        dt=0
        for i in xrange(increment, n+increment, increment):
                dt+=sort_timehelp(x, quick_sort)
                output="%d %f\n" %(i,dt)
                print output

iは配列テストの数です。たとえば2回行かない理由

編集:代わりにforループを使用してもかまいません。最後の質問があります。これらの種類のifステートメントがたくさんある場合、違いはソート関数だけです。試してみると、最後に印刷されたステートメントしか保存されないため、すべてのものをファイルに保存するにはどうすればよいですか。

#
 saving=input("You want to save data ? type 0 to continue or 1 to save " )
 if saving == 0:
        continue
 if saving == 1:
        ask=raw_input("Type the name file: ")
        fileout=open(ask+".csv","a")
        fileout.write(output)
        fileout.close()

「保存」のインデントは、sortfunctionの場合と同じです。

4

2 に答える 2

2

range(n) 関数はリスト [0,1,2,...] を返し、それを for ループが反復します。したがって、 i が 0 で doi=i+incrementの場合、 i (100) の値は破棄され、リストの次の要素、つまり 1 に置き換えられます。

代わりに を試しfor i in range(increment,n+increment,increment)てから、 for ブロック内の最初の行を削除できます。範囲関数自体はincrement、ループのすべての反復を追加します。つまり、i は 100,200,300,...,1000 になります。

于 2012-05-01T23:56:54.313 に答える
0
for i in xrange(increment, (n+1)*increment, increment):
    dt+=sort_timehelp(x,quick_sort)
    output="%d %f\n" %(i,dt)
    print output
于 2012-05-01T23:49:30.100 に答える