2016-04-14 25 views
0

Tamam. Saçımı bu tarafa çekiyorum. Bütün gün boyunca böyle bir kod yazarım ve bunun neden böyle bir şey yaptığını görmüyorum. Belki de uyumaya ihtiyacım var.Değişken kapsam belirleme sorunu (Bence)

Kodum:

gsamp  = 0  # good samples 
    zsamp  = 0  # zero samples 
    nsamp  = 0  # null samples 
    rtotal  = 0 
    rtotalltms = 0 
    pctltms  = 0.0 
    peakh  = 0 
    peakl  = 0 

    for sample in self.rawdata: 
     if "data" not in sample['data']: 
      nsamp += 1 
      continue 
     if not bool(sample['data']['data']): 
      nsamp += 1 
      continue 
     rtotal += sample['data']['value'] 
     gsamp += 1 
     # If I print gsamp here it shows it being correctly incremented 
     for entry in sample['data']['data']: 
      if int(entry['key']) <= thresh: 
       rtotalltms += entry['value'] 
      if gsamp == 1: 
       print "DEBUG gsamp=%d" % gsamp 
       peakh = int(entry['key']) 
       peakl = int(entry['key']) 
       continue 
      if int(entry['key'] > peakh): 
       peakh = int(entry['key']) 
       continue 
      if int(entry['key'] < peakl): 
       peakl = int(entry['key']) 
       continue 

sadece hiç o hata ayıklama satır görmelisiniz 1 defa basılmış. Ama nedense gsamp yerel olarak kapsamda ya da bir şey oluyor. Ben 30 numune bir veri seti ile bu kodu çalıştırdığınızda

, ben ayıklama hattı herhangi bir yardım için gsamp ile 30 kez = 1.

Teşekkür baskılı görüyoruz.

cevap

0

Sorun, sample.rawdata ile döngü halindeyken üst döngünüzde gsamp değerini artırıyor, ancak sonra sample['data']['data'] ikinci bir döngüye çarpıyorsunuz. Hata ayıklama ifadesinin yazdırıldığı yer burasıdır.

kod kalanını kaldırırsanız, ne olup bittiğini görebilirsiniz: neden döngü içinde bir sonraki daha yüksek seviyede aynı gsamp kullanmak ister,

[...] 

gsamp += 1 
    # If I print gsamp here it shows it being correctly incremented 
    for entry in sample['data']['data']: 
     if int(entry['key']) <= thresh: 
      rtotalltms += entry['value'] 
     if gsamp == 1: 
      print "DEBUG gsamp=%d" % gsamp 

      [...] 
+0

Ama gsamp hala kapsamında mı? – BenH

İlgili konular