0

我已经发布了这个,但是,我在这里的目的是不同的。我相信应该有与此非常相似的代码。我希望有人可能知道在哪里可以找到这样的示例(作用于字符串的函数的接口)。更好的是,是否有人拥有他们已经可用的代码块?我只是在寻找一个模板来作为我的基础。提前致谢。

为了让您了解我的意思,这是我想到的功能:

 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, 2, 3] 在这个例子中)。

它分两步完成:首先,它将某个数 m 分解为 j 的倍数和余数。然后它通过 rtn.append 行上的函数运行此分解。

请注意,这有 cj - 1 个术语,其中 c 是输入字符串中的术语数,j 是参数。通常,我们希望它能够计算 cj 项。这是我很乐意暂时搁置的功能问题。

我的主要兴趣是能够使这个程序对没有编程知识的人可用。特别是,我需要某种用户界面来提示用户输入一个字符串(例如,理想情况下只需以 011123334 的形式输入数字)和一个参数。

编辑:

错误在第三行,python 以橙色突出显示 (self, master) 右侧的空格一直到行尾。

4

1 回答 1

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稍后使用;它是一个结果列表。

于 2013-07-25T19:29:43.867 回答