我已经发布了这个,但是,我的目的是不同的。我相信应该有代码来做与此类似的事情。我希望有人可能知道在哪里寻找这样的例子(作用于字符串的函数的接口)。更好的是,是否有人拥有他们已经拥有的代码块?我只是在寻找一个基于模板的模板。提前致谢。
为了让您了解我的意思,这是我想到的功能:
def psi_j(x, j):
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]))
print 'n2 =', n2, ': n =', n, ' r =' , r, ' rtn =', rtn
return rtn
此代码采用字符串x = [0,1,1,1,2]为例(它必须始终以0开头)和参数j,比如2,并输出一个字符串(x = [0,1, ,在这个例子中,2,2,2,2,3]。
它分两步完成:首先它将一些数字m分解为j的倍数和余数。然后它通过rtn.append行上的函数运行此分解。
请注意,这有cj - 1个术语,其中c是输入字符串中的术语数,j是参数。通常,我们希望它能够计算cj项。这是一个功能问题,我现在非常乐意暂时搁置。
我的主要兴趣是能够使这个程序可用于不懂编程知识的人。特别是,我需要某种用户界面来提示用户输入一个字符串(理想情况下只需输入011123334中的数字)和一个参数。
编辑:
错误发生在第三行,python突出显示橙色(self,master)右侧的空格,一直是橙色,一直到行尾。
答案 0 :(得分:1)
如果您对使用Tkinter创建此用户界面感兴趣,可以使用以下代码:
from Tkinter import *
class App(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.grid()
self.create_widgets()
def create_widgets(self):
self.entryLabel = Label(self, text="Please enter a list of numbers (no commas):")
self.entryLabel.grid(row=0, column=0, columnspan=2)
self.listEntry = Entry(self)
self.listEntry.grid(row=0, column=2, sticky=E)
self.entryLabel = Label(self, text="Please enter an index value:")
self.entryLabel.grid(row=1, column=0, columnspan=2, sticky=E)
self.indexEntry = Entry(self)
self.indexEntry.grid(row=1, column=2)
self.runBttn = Button(self, text="Run Function", command=self.psiFunction)
self.runBttn.grid(row=2, column=0, sticky=W)
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()
app = App(root)
root.mainloop()
如果您有任何疑问,请告诉我;这适用于python 2.7。
如果用户忘记输入,该程序会自动添加零,输入格式为例如01112。
您也可以稍后使用rtn
;这是一个结果列表。