Я использую python и некоторые дуговые модули (которые, как мне кажется, не важны для моего вопроса), запускают код, содержащий три итерации (цикл с двумя меньшими петлями внутри). Мой код выглядит так:Python второй цикл не обнаружен
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')
Код работает, но не дает мне результатов, которые я хочу. Я заметил, что проблема в том, что она практически игнорирует второй внутренний цикл и каждую итерацию первого внутреннего цикла после первого. В чем проблема?
Проблема заключается в том, что после того, как вы полностью выполнили свой «курсор», как и в своем внутреннем цикле, ничего не осталось, чтобы перебрать, поэтому внешний цикл немедленно прекращается в следующий раз, когда он пытается получить следующую строку. Он уже сдал все строки и находится в конце. – kindall
Сделайте переменную разной в двух циклах. Например, первый цикл 'for row0 в курсоре', второй цикл' for row1 в курсоре'. – tom10
Хорошо, спасибо, я сделал это так, и теперь он повторяется и внутри. Проблема в том, что теперь я получаю сообщение об ошибке во время вычисления результата, в частности, в result = result + ... (я изменил вопрос, чтобы показать эту деталь более точно) с объектом «TypeError:» «float» не является вызываемым «Что может быть? – Patapunfate