2013-08-16 76 views
0

我有一個程序爲一個函數創建一個小的GUI。特別是,我有這樣的事情:更改列表條目語法

def create_widgets(self): 
    self.entryLabel = Label(self, text="Please enter a list of numbers:") 
    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.Function) 
    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) 

然後函數的定義,我有以後的一部分:

self.answer = Label(self, text=rtn) 
    self.answer.grid(row=2, column=2, sticky=W)  

,告訴它什麼給作爲輸出。

現在,問題是輸入作爲字符串輸入(如12345),因此它會將數字10,11,12等識別爲它們的個別數字。是否有一種簡單的方法可以修改此選項以要求列表輸入以逗號分隔(例如1,2,3,4,5)?

在此先感謝。

+1

取決於你所說的 「需要」 的東西。例如,您是否希望應用程序拒絕無效輸入並顯示一條消息:「請用逗號分隔數字」?一般來說,這是不可能的,因爲輸入「12345」與「1,2,3,4,5」一樣有效。你不能確定用戶是否忘記了逗號,或者真的意味着一萬三千四百五十五,除非有額外的約束,你沒有告訴我們,像「用戶必須提供五個數字」 – Kevin

+0

@Kevin我的道歉遲到的反應。我不確定你現在是否還在。我想它並不一定是逗號,但是這個想法是需要有一種方式讓它知道10111213意味着10,11,12,13。 – 114

+1

但你怎麼知道10111213意味着10,11,12,13?也許這意味着101,112,1,3。 – Kevin

回答

1

如果您只是要求如何將"1,2,3,4,5"轉換爲整數列表,您可以使用splitint來完成。

user_input = "4,8,15,16,23,42" 
numbers = [int(d) for d in user_input.split(",")] 

print "numbers:", numbers 
print "sum of numbers:", sum(numbers) 

結果:

numbers: [4, 8, 15, 16, 23, 42] 
sum of numbers: 108 
+0

分割輸入是否允許它識別出1011只是10,11?其實我應該舉一個更復雜的例子:112233445511應該是1,1,2,2,3,3,4,4,5,5,11。對不起,如果我還沒有完全清楚。 – 114

+2

如果'user_input'是字符串'「1011」',那麼數字列表將是'[1011]'。如果'user_input'是字符串'「10,11」',數字列表將是'[10,11]'。 – Kevin

+0

我想我明白你的意思。如何與上述非常好的觀點相一致:我們無法知道一個長串是被認爲是「正確的方式」,而不是101,112,1,3。我也會把它放在自我的某個地方.listEntry?再次感謝你的幫助。 – 114