我正在尝试获取以下代码来执行更多操作:
class App(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.grid()
self.create_widgets()
def create_widgets(self):
self.answerLabel = Label(self, text="Output List:")
self.answerLabel.grid(row=2, column=1, sticky=W)
def psiFunction(self):
j = int(self.indexEntry.get())
valueList = list(self.listEntry.get())
x = map(int, valueList)
if x[0] != 0:
x.insert(0, 0)
rtn = []
for n2 in range(0, len(x) * j - 2):
n = n2 / j
r = n2 - n * j
rtn.append(j * x[n] + r * (x[n + 1] - x[n]))
self.answer = Label(self, text=rtn)
self.answer.grid(row=2, column=2, sticky=W)
if __name__ == "__main__":
root = Tk()
特别是,我试图让它计算 len(x) * j - 1 项,并适用于各种参数值。如果您尝试运行它,您应该会发现较大的参数值会出现错误。例如,对于列表 0,1,2,3,4 和参数 j=3,我们应该运行程序并获得 0123456789101112。但是,如果我尝试执行最后一个值“超出范围”,则会收到错误消息计算它。
我相信这是我定义的功能的问题。似乎参数的问题与将参数与 n 值联系起来的方式有关。考虑 0123。如果我使用 2 作为我的参数(在函数中称为索引),它会很好用,但如果我使用 3,它会失败。
编辑:
def psi_j(x, j):
rtn = []
for n2 in range(0, len(x) * j - 2):
n = n2 / j
r = n2 - n * j
if r == 0:
rtn.append(j * x[n])
else:
rtn.append(j * x[n] + r * (x[n + 1] - x[n]))
print 'n2 =', n2, ': n =', n, ' r =' , r, ' rtn =', rtn
return rtn
例如,如果我们有 x = [0,1,2,3,4] 的 psi_j(x,2),我们将能够得到 [0,1,2,3,4,5,6,7,8, 9,10,11],在 12 上出现错误。
不过,我们的想法是我们应该能够计算最后一项。这是我们输出序列的第 12 项,并且 12 = 3*4+0 => 3*x[4] + 0*(x[n+1]-x[n])。现在,没有要计算的第 5 项,所以这绝对是一个问题,但我们不需要该项,因为等式的第二部分为零。有没有办法把它写进方程?