2015-11-16 49 views
1

這是我第一次問這裏。我試圖尋找答案,但不確定如何說出我需要的東西,所以我決定問。Python,得到一個值的循環,然後再次測試該值

我正在製作桌面角色扮演遊戲的角色創作者。我想獲得角色之前職業的結果,這些結果在列表中,然後再次測試該值以獲得之前的職業。

我已經得到了第一份職業,然後將其與文本數據庫進行比較的方式,以條目,如:

船長,資源管理器,騎士,軍士,

其中隊長是第一職業和逗號標誌着可能的以前職業的開始和結束。我已經設法隨機獲得其中一個,但是我沒有能夠做出循環,然後選擇職業並再次運行。例如:

資源管理器中,製圖,

這裏是我的代碼的簡化版本。它的第一部分是正確的,但我不確定如何觸發下一個循環。

import random 
def carOld(carrera,nivPoder): 
carActual=carrera 
u=0 
indPoder=int(nivPoder) 
carAnterior=[]  
commas=[] 
entTemp=[] 
d=open("listaCarreras.txt","r") 
f=(d.readlines()) 
while indPoder!=0: 
    indPoder=indPoder-1   
    for line in f: 
     if carActual in line: 
      entTemp=line.split(",")   
d.close 
del entTemp[0] 
del entTemp[-1] 
print (entTemp) 
carAnterior=random.choice(entTemp) 
+4

而不使用任何你正在做的(與IFS和所有的嵌套的循環)來分割的話,你可能分裂與'行的每一行。拆分(',')'這將使用逗號作爲分隔符的單詞列表。那樣會更好。 –

+0

這非常有幫助,我將來肯定會繼續使用,謝謝! –

回答

0

我想這個。我相信根據你的描述,目前的職業在列表的前面,而以前的職業則在列表的後面。

str_occs = 'Occ1,Occ2,Occ3' 
list_occs = str_occs.split(',') 

def prev_occ(occupation, list_occs): 
    prev_occ_index = list_occs.index(occupation) + 1 
    try: 
     ret_val = list_occs[prev_occ_index] 
    except: 
     ret_val = "No prior occupations." 

    return ret_val 

,您可以嘗試在這裏:https://repl.it/B08A

相關問題