2012-03-22 90 views
1

我正在製作基於文本的RPG,但我在輸入時遇到了問題。我很難製作一個函數,它應該用一個關鍵字和一個項目來分隔兩個參數(例如:使用item,take item ...),但是由於某種原因,它會一直重複同樣的結果並結束。如何使這段代碼合併函數,while和while循環運行良好?

我的代碼:

def console(input): 
     x = 0 
     y = 0 
     z = 0 
     argument1 = "" 
     argument2 = "" 
     for x in input: 
       if input != " " and y != 1: 
         argument1 += input 
       elif y != 1: 
         y = 1 
       else: 
         argument2 += input 
     print argument1 
     print argument2 

console("use item") 

當我運行代碼,我得到的輸出是這樣的:使用itemuse itemuse itemuse itemuse itemuse itemuse itemuse項目

我不知道爲什麼 '使用' 和「項目'是在同一條線上,以及爲什麼它總共重複八次。

+5

不是鏈接到代碼,請將其粘貼到此處,並通過點擊「{}」按鈕進行正確格式化。 – 2012-03-22 15:23:29

+0

@ g.d.d.c投票批准編輯。 – agf 2012-03-22 15:34:33

+0

我注意到你正在初始化變量'x'。這樣做絕對沒有理由。我假設你沒有意識到x被分配了(命名不清的)'input'中的連續字符串值。在python中,for循環的工作方式與c/C++/java中循環的工作方式不同。如果_want_ x被分配數值,我會爲'範圍內的x(len(輸入)):' – 2012-03-22 16:24:22

回答

-1

由於您傳遞8個字符,所以重複8次。我建議在進入for循環之前將字符串分解爲它的參數。

3

split()字符串的方法已經做了什麼你正在嘗試做的:

>>> arg1, arg2 = 'use some item'.split(' ', 1) 
>>> arg1 
'use' 
>>> arg2 
'some item' 
1

你做

for x in input: 

所以,如果輸入的是 '利用項目',你會循環8次(U,S ,E,I,T,E,M [嘗試打印X]) 然後添加輸入參數與

argument1 += input 

所以你添加輸入8次參數。 爲什麼把它們加在一起是因爲你最後沒有'\ n'。

+1

,OP,使用關鍵字作爲變量不是一個好主意。在這種情況下'輸入'。 – 2012-03-22 16:17:24