Python 缩进错误?

Python Indentation bug?

我有这个代码:

import numpy
import random
import pylab
from ps3b import *

def AvgWithDrug(numViruses, maxPop, maxBirthProb, clearProb, resistances, mutProb, numTrials, delay):

  viruses = []
  timeSteps = delay + 300
  print 'timeSteps = ', timeSteps

  for i in range(numViruses):
      viruses += [ResistantVirus(maxBirthProb, clearProb, resistances, mutProb)]

  avg = [0] * timeSteps
  print 'len avg[] =', len(avg)
  hola = []
  last = 0

  for j in range(numTrials):
      patient = TreatedPatient(viruses, maxPop)
      for i in range(timeSteps):
          if i == 150:
              patient.addPrescription('guttagonol')
          if i == 150 + delay:
              patient.addPrescription('grimpex')
          avg[i] += patient.update()

      new = avg[timeSteps - 1]
      print new - last
      hola += [new - last]
      last = new

  for i in range(timeSteps):
      avg[i] = avg[i]/ float(numTrials)
      print avg[i]


  print 'len avg[] =', len(avg)

当然你不能运行不知道如何附上我的class定义。

但是当我 运行 时的问题是最后一条语句就像在上面的 for 循环中一样。 print avg[i] 应执行 timeSteps 次,最后 print 'len avg[] =', len(avg) 应执行一次。

这不会发生;输出通过 timeSteps.

一遍又一遍地显示 print avg[i]print 'len avg[] =', len(avg)

您混用了制表符和 space。您的大部分代码都缩进了 space,但有几行有制表符,包括似乎缩进太多的那一行。 Python 像记事本一样对待制表符,足够 spaces 达到下一个 8-space 缩进级别。 运行 带有 -tt 选项的代码可以让 Python 通知你这样的事情,在你的编辑器中打开 "show whitespace" 如果它有这个选项,然后更改这些选项卡至 spaces.