このようなリストにインデックスを付けています
if first.Barcode == rcv_record[rcv_record_len-1][0]:
do stuff
first.Barcode
文字列ですrcv_record
[[],[],[]]
このように見えるリストです- そして
rcv_record_len
、len(rcv_record)
それは正常に機能していましたが、今ではunsupported opperand - on int and list
but 1 とrcv_record_len
表示され、両方とも int です。誰にも手がかりはありますか?
このリストに追加する方法は、tmp リストを拡張してから rcv_record に追加することです。
tmp.extend([first.Cost*first.Qty])
tmp.extend([first.Qty])
tmp.extend([first.Name])
tmp.extend([first.Units_case])
#tmp.extend([(first.Units_case)/(first.Cost)]) << if this is not commented werid stuff happens
import pdb; pdb.set_trace()
rcv_record.append(tmp)
rcv_record_len = len(rcv_record)
while first != []:
import pdb; pdb.set_trace()
if first.Barcode == rcv_record[rcv_record_len-1][0]:
バグか何かがあると思い始めています。コメントを外してコメントした後、このコードを持つ別の行に同じエラーが表示されます
if hasattr(first,'Cga_type'):
ただし、ints同じエラーとは何の関係もありません
また、pdbを使用してコードをステップ実行し、問題のある部分をコピーして貼り付けていますが、デバッガーなしで実行するとすぐに壊れます。
私は編集しました
tmp.extend([first.Units_case])
tmp.extend([(first.Units_case)/(first.Cost)])
これが使用または参照されているコードをコメントアウトし、すべてが正常に機能します。これは、問題が私が現在持っているものではなく、何らかの理由ですべてを壊すこの新しいスニペットにあることを証明するためです. これらが追加された後、奇妙なオペランド int リスト エラーが発生します。
これは私が知っている難破船ですが、このプロジェクトは私の膝の上に落ちました。
if Type == 'burn rate':
RcvRecords = []
RmvRecords = []
while broken_item_len > 0:
if broken_item[broken_item_len-1][0] == 'Chemicals':
RcvRecords.extend(ChemicalRecord.objects.filter(Date__range=[From,To]).filter(Barcode=Chemicals.objects.get(id=broken_item[broken_item_len-1][1]).Barcode).filter(Action='Receiving').filter(Valid=True))
RmvRecords.extend(ChemicalRecord.objects.filter(Date__range=[From,To]).filter(Barcode=Chemicals.objects.get(id=broken_item[broken_item_len-1][1]).Barcode).filter(Action='Removing').filter(Valid=True))
if broken_item[broken_item_len-1][0] == 'Supplies':
RcvRecords.extend(SupplyRecord.objects.filter(Date__range=[From,To]).filter(Barcode=Supplies.objects.get(id=broken_item[broken_item_len-1][1]).Barcode).filter(Action='Receiving').filter(Valid=True))
RmvRecords.extend(SupplyRecord.objects.filter(Date__range=[From,To]).filter(Barcode=Supplies.objects.get(id=broken_item[broken_item_len-1][1]).Barcode).filter(Action='Removing').filter(Valid=True))
if broken_item[broken_item_len-1][0] == 'Gasses':
RcvRecords.extend(GasRecord.objects.filter(Date__range=[From,To]).filter(Barcode=Gasses.objects.get(id=broken_item[broken_item_len-1][1]).Barcode).filter(Action='Receiving').filter(Cga_type=Gasses.objects.get(id=broken_item[broken_item_len-1][1]).Cga_type).filter(Size=Gasses.objects.get(id=broken_item[broken_item_len-1][1]).Size).filter(Valid=True))
RmvRecords.extend(GasRecord.objects.filter(Date__range=[From,To]).filter(Barcode=Gasses.objects.get(id=broken_item[broken_item_len-1][1]).Barcode).filter(Action='Removing').filter(Cga_type=Gasses.objects.get(id=broken_item[broken_item_len-1][1]).Cga_type).filter(Size=Gasses.objects.get(id=broken_item[broken_item_len-1][1]).Size).filter(Valid=True))
broken_item_len = broken_item_len - 1
RcvRecords_len = len(RcvRecords)
RmvRecords_len = len(RmvRecords)
tmp_RcvRecords = RcvRecords
tmp_RcvRecords_len = len(tmp_RcvRecords)
tmp_RmvRecords = RmvRecords
rcv_record = []
tmp = []
debugg = ''
#import pdb; pdb.set_trace()
while tmp_RcvRecords_len > 0:
if tmp_RcvRecords:
first = tmp_RcvRecords.pop()
tmp_RcvRecords_len = len(tmp_RcvRecords)
debugg = 'pop'
#import pdb; pdb.set_trace()
if rcv_record == []:
tmp.append(first.Barcode)
debugg = 'check barcode'
#import pdb; pdb.set_trace()
if hasattr(first,'Cga_type'):
tmp.extend(first.Cga_type)
tmp.extend(first.Size)
debugg = 'cga exists'
#import pdb; pdb.set_trace()
else:
tmp.extend(['',''])
tmp.extend([first.Cost*first.Qty])
tmp.extend([first.Qty])
tmp.extend([first.Name])
#tmp.extend([first.Units_case]) << THIS PIECE
#tmp.extend([(first.Units_case)/(first.Cost)]) << THIS PIECE
import pdb; pdb.set_trace()
rcv_record.append(tmp)
tmp = []
debugg = 'herp'
else:
rcv_record_len = len(rcv_record)
while first != []:
import pdb; pdb.set_trace()
if first.Barcode == rcv_record[rcv_record_len-1][0]:
import pdb; pdb.set_trace()
if hasattr(first,'Cga_type'):
if first.Cga_type == rcv_record[rcv_record_len-1][1]:
if first.Size == rcv_record[rcv_record_len-1][2]:
rcv_record[rcv_record_len-1][3] = rcv_record[rcv_record_len-1][3]+(first.Cost*first.Qty)
rcv_record[rcv_record_len-1][4] = rcv_record[rcv_record_len-1][4]+first.Qty##edited this
#if rcv_record[rcv_record_len-1][6] <> first.Units_case or rcv_record[rcv_record-1][3] <> first.Cost: << THIS PIECE
#rcv_record[rcv_record_len-1][7] = (rcv_record[rcv_record_len-1][7]+(first.Units_case/first.Cost))/2.0##edited this<< THIS PIECE
#rcv_record_len = len(rcv_record)
debugg = 'first'
import pdb; pdb.set_trace()
first =[]
else:
tmp = [first.Barcode,first.Cga_type,first.Size,first.Qty*first.Cost,first.Qty,first.Name]#,first.Units_case,(first.Units_case/first.Cost)]<< THIS PIECE AFTER COMMENTS
rcv_record.append(tmp)
#rcv_record_len = len(rcv_record)
debugg = 'second'
import pdb; pdb.set_trace()
first = []
else:
import pdb; pdb.set_trace()
tmp = [first.Barcode,first.Cga_type,first.Size,first.Qty*first.Cost,first.Qty,first.Name]#,first.Units_case,(first.Units_case/first.Cost)] << THIS PIECE AFTER COMMENTS
rcv_record.append(tmp)
#rcv_record_len = len(rcv_record)
first = []
debugg = 'third'
import pdb; pdb.set_trace()
else:
rcv_record[rcv_record_len-1][3] = rcv_record[rcv_record_len-1][3] + (first.Qty*first.Cost)
rcv_record[rcv_record_len-1][4] = rcv_record[rcv_record_len-1][4] + first.Qty ## edited this here
#if rcv_record[rcv_record_len-1][6] <> first.Units_case or rcv_record[rcv_record-1][3] <> first.Cost: << THIS PIECE
#rcv_record[rcv_record_len-1][7] = (rcv_record[rcv_record_len-1][7]+(first.Units_case/first.Cost))/2.0##edited this << THIS PIECE
debugg = '4th'
import pdb; pdb.set_trace()
first = []
else:
if hasattr(first,'Cga_type'):
tmp = [first.Barcode,first.Cga_type,first.Size,first.Cost*first.Qty,first.Qty,first.Name]#,first.Units_case,(first.Units_case/first.Cost)] << THIS PIECE
rcv_record.append(tmp)
#rcv_record_len = len(rcv_record)
debugg = '5th'
import pdb; pdb.set_trace()
first = []
else:
tmp =[first.Barcode,'','',first.Cost*first.Qty,first.Qty,first.Name]#,first.Units_case,(first.Units_case/first.Cost)] << THIS PIECE
rcv_record.append(tmp)
#rcv_record_len=len(rcv_record)
debugg = '6th'
import pdb; pdb.set_trace()
first = []
rcv_record_len = rcv_record_len - 1
これに対してctrl - fを実行すると、問題を引き起こすすべてのスニペットが見つかります