2016-05-09 7 views
-2

3つの繰り返し(内部に2つの小さなループがあるループ)を含むコードを実行するPythonといくつかのarcpyモジュール(私の質問では重要ではないと思う)を使用しています。私のコードは次のようになります:Pythonの2番目のループが検出されない

file = r"C:Directory\File" 
cursor = arcpy.SearchCursor(file,fields) 
A = range(1,270) 
os.chdir ('C:\Directory') 
book = xlwt.Workbook() 
sheet1 = book.add_sheet('Sheet1',cell_overwrite_ok = True) 
for a in A: 
tot = 0 
result = 0 
for row in cursor: 
    if row.getValue('Firstfield') == a: 
     tot = tot + row.getValue('secondfield') 
     print (tot) 
    for row in cursor: 
     print row.getValue('GTYS_Branc') 
     if row.getValue('GTYS_Branc') == a: 
      result= result + row.getValue(Field1) * ((row.getValue(Field2))/tot) 
    sheet1.write((branch-1),0,finalIIIprob) 
    sheet1.write((a-1),1,result) 
    book.save('Excel.xls') 

コードは動作しますが、私には結果が得られません。私は問題は実際には2番目の内部ループと最初の内部ループの後の最初の内部ループのすべての反復を無視することに気づいた。何が問題なの?

+1

問題は、あなたがあなたのインテリアループで行うように、あなたの 'カーソル '全体を反復した後、何度も反復することが残っているので、次に次の行を取得しようとするとすぐに終了します。それはすでにすべての行を放棄しており、最後にあります。 – kindall

+0

2つのループで変数を異なるようにします。例えば、第1のループ「for row0 in cursor」、第2ループ「for row1 in cursor」。 – tom10

+0

ありがとう、私はこのやり方でやったし、今もそれを繰り返します。問題は結果の計算中に結果がresult_ result + ...という結果の計算中にエラーメッセージが表示されることです。(この部分をより正確に表示するように質問を修正しました) "TypeError:" floatオブジェクトは呼び出し可能ではありません – Patapunfate

答えて

0

"配列"の値を反復処理しているかもしれませんが、そこには何もありませんが、Aから1つの数値だけではなく、0からAまでのすべての数値ではなく、関数: 私は範囲(A)で私を試してください:

関連する問題