2016-03-06 48 views
1

我想知道如何我不能分裂這個字符串爲我分配的遊戲。玩家應該爲60x15網格輸入x和y值。分割一串數字

answer = input('enter an x and y coordinate with a space between') 

生病讓我到30×平等的,我ÿ等於7

playerAnswer = [] 
answer = '30 7' 
answer.split(' ') 
playerAnswer.append((player[0], player[1])) 

,當我這樣做,我得到playerAnswer['3', '0'] 有沒有什麼辦法讓playerAnswer成爲['30', '0']

+1

你的'player'列表是什麼樣的? – idjaw

+1

你真的希望迴應是30而不是30嗎?另外,'player'沒有在上面定義。 – Alexander

回答

1

問題是您沒有使用split的返回值。 str.split不會修改字符串到位(字符串實際上是不可變的),但返回列表。

演示:

>>> answer = '30 7' 
>>> answer_split = answer.split(' ') 
>>> answer 
'30 7' 
>>> answer_split 
['30', '7'] 
>>> answer_split[0] 
'30' 
>>> answer_split[1] 
'7' 

在你想實際整數的情況下,你可以這樣做:

>>> answer_split = [int(x) for x in answer.split(' ')] 
>>> answer_split 
[30, 7] 

我並不完全確定附加時爲什麼要進行索引player代替split結果到playerAnswer,這可能是另一個bug。

注意:如果您只是想分割任何空格,可以省略參數' 'split

0
a, b = [int(i) for i in answer.split()] 
>>> a 
30 
>>> b 
7 

或者,如果你真的想要的文字:

playerAnswer = [] 
playerAnswer.append(tuple(i for i in answer.split())) 

>>> playerAnswer 
[('30', '9')] 
0

最Python的方式來實現這一目標是:

>>> x, y = map(int, input('enter an x and y coordinate with a space between').split()) 
>>> x 
30 
>>> y 
7 

現在來這個問題與您的代碼:

playerAnswer.append((player[0], player[1])) 

替換爲playeranswer因爲你正在存儲answer變量的分割值(我也沒有在你提到的代碼中看到任何player變量,所以我不確定它存儲了什麼。但我相信你不需要)。下面的行應該工作正常。

playerAnswer.append((answer[0], answer[1])) 

另外,我不認爲你需要307str。爲了將它轉換成int,我使用了map()函數。