2013-10-23 46 views
1

我剛寫了這麼一小段代碼,想知道是否有任何方法來優化打印輸出。我試圖使用.format()來包含總數和'偶數'或'奇數'。如果我在調用之前將函數的返回值指定給變量,那麼我能夠將其限制爲一個打印語句嗎?爲python優化代碼,2d數組的值

基本上這個代碼你輸入一個2d數組,它會返回總值。輸出

def evenrow(TwoDArray): 
    counter = 0 
    counterTwo = 0 
    lengthArray = len(TwoDArray) 
    lengthList = len(TwoDArray[0]) 
    while counter < lengthArray: 
     while counterTwo < lengthList: 
      value = TwoDArray[counter][counterTwo] 
      value += value 
      counterTwo += 1 
     counter += 1 
    return value 

TwoDArray = eval(input("Enter a 2D array: ")) 
print('Total Value: ', evenrow(TwoDArray)) 
if evenrow(TwoDArray) % 2 == 0: 
    print('Even or Odd: Even') 
else: 
    print('Even or Odd: Odd') 

例子:

Enter a 2D array: [[0,2],[1,1]] 
Total Value: 4 
Even or Odd: Even 

謝謝!

+0

您還可以通過如下構造來優化evenrow:sum(對於TwoDArray中的行,爲sum(row)) –

+0

是否等價於嵌套while循環? – user2909869

+0

是的,這相當於嵌套的while循環。 –

回答

0

歡迎來到StackOverflow!我希望你在這裏過得愉快。

至於你的問題 - 易如反掌:

ret = evenrow(TwoDArray) 
if ret % 2 == 0: 
    print('Total Value: %d\nEven or Odd: Even' % ret) 
else: 
    print('Total Value: %d\nEven or Odd: Odd' % ret) 

我甚至可以做你一個更好,使用Python的等價三元運算符的獲得它歸結爲一條線:

ret = evenrow(TwoDArray) 
print('Total Value: %d\nEven or Odd: %s' % (ret, 'Odd' if ret % 2 else 'Even')) 

你無論如何,我想要保存返回值。想象一下,如果evenrow()是一個計算成本很高的操作 - 你當然不希望運行兩次。

+0

感謝您的回覆,我使用了您的代碼,並且它出來美麗而高效。我會記住未來的方法。非常感謝! (它說我有6分鐘的複選標記,我會確保在那時再檢查) – user2909869

+0

@ user2909869絕對受歡迎。祝你好運,快樂的編碼。 –

+0

@ChristianTernus請繼續推薦'format'方法。 – thefourtheye