2013-04-04 39 views
-1

我提出了以下問題:Python - def findLine(prog,target)

定義函數findLine(prog,target)來執行以下操作。假設prog是一個包含BASIC程序的字符串列表,如getBASIC()生成的類型;假設target是一個包含行號的字符串,該行號是GOTO語句的目標。該函數應該返回索引i(0和len(prog)-1之間的數字),這樣prog [i]是其標籤等於目標的行。

樣品輸入/輸出:如果調用
findLine([ '10 GOTO 20', '20 END'], '10')
則輸出應該是0,因爲該列表的項目0是與標籤10

這行是我的代碼:

def findLine(prog, target): 
    for l in range(0, len(prog)-1): 
     progX = prog[l].split() 
     for i in range(0, len(progX)): 
     if progX[i] == target: 
      ans = progX[i] 
    return prog.index(ans) 

正如你可以從代碼告訴,我即將完成(至少我認爲我),但我已經變得相當卡住有了這個。但是,我不知道如何識別prog中哪個索引包含progX中的字符串。提前感謝任何幫助。

+0

另外,我知道這個代碼並不像它那樣高效或整潔,但現在我只需要它的工作。 – Dan 2013-04-04 18:52:39

+1

究竟是什麼問題? – 2013-04-04 18:54:45

+1

我建議你改變標題,因爲我猜測它會給出錯誤的「氛圍」,因此可能會吸引downvotes。 – bernie 2013-04-04 18:54:47

回答

1

我想你只需要這個來取代內部的for循環:

if progX[0] == target: 
    return l 

你正在檢查線路是否開始你要找的行號的方式。

+0

findLine(['10 GOTO 20','20 END'],'20')有錯誤的類型「無」類型,預期整數是我得到的。 – Dan 2013-04-04 19:02:42

+0

您的'索引'調用正在程序中尋找與'target'(行號)相同的行。沒有這樣的線路,所以你得到了'沒有'。 – 2013-04-04 19:07:05

0

只是嘗試下面的代碼,它適用於我。

def findLine(prog, target): 
    for l in range(0, len(prog)): 
    progX = prog[l].split() 
    for i in range(0, len(progX)): 
      if progX[0] == target: 
      return l