2015-12-19 37 views
0

我在Advent of Code: Day 2上工作,Im在列表工作時遇到問題。我的代碼需要一個字符串,例如2x3x4,並將其分割成一個列表。然後它檢查列表中的'x',並將其刪除並將該值提供給計算所需區域的方法。問題是,在刪除'x'之前,我需要找出'x'前面是否有兩個數字併合並它們,以計算兩位數字。我研究過正則表達式,但我認爲我沒有正確使用它。有任何想法嗎?在Python中比較和組合列表項目

def CalcAreaBox(l, w, h): 
    totalArea = (2*(l*w)) + (2*(w*h))+ (2*(h*l)) 
    extra = l * w 
    toOrder = totalArea + extra 
    print(toOrder) 

def ProcessString(dimStr): 

    #seperate chars into a list 
    dimStrList = list(dimStr) 
    #How to deal with double digit nums? 

    #remove any x 
    for i in dimStrList: 
     if i == 'x': 
      dimStrList.remove(i) 
    #Feed the list to CalcAreaBox 
    CalcAreaBox(int(dimStrList[0]), int(dimStrList[1]), int(dimStrList[2])) 

dimStr = "2x3x4" 
ProcessString(dimStr) 
+0

看看這個:http://www.tutorialspoint.com/python/string_split.htm –

回答

1

你可以在你的字符串中使用拆分

#remove any x and put in list of ints 
dims = [int(dim) for dim in dimStrList.split('x')] 
#Feed the list to CalcAreaBox 
CalcAreaBox(dims[0], dims[1], dims[2]) 

當然,你將要考慮處理那裏有不完全兩個X的字符串中

+0

這樣做,它出現在所有我的測試用例(它是dimStr.split雖然爲後代)是正確的。所有的字符串都有相同數量的X,所以它應該是好的。謝謝您的幫助! – JonnyDoeInWisco

+0

啊是的,你當然是關於dimStr而不是dimStrSplit。很高興工作! :)請將此標記爲答案,如果它解決了您的問題。 –

0

你的問題是更可能的情況下,以適應Code Review而不是Stack Overflow。

由於你的任務是一個小挑戰,我不會告訴你一個確切的解決方案,但給你一個關於Python字符串的split方法的提示(請參閱documentation)。

此外,您應該根據PEP8中的建議(例如, Python通常具有全部小寫字母的函數/變量名稱,用下劃線分隔的單詞(如calc_area_box)。