优化python的代码,来自二维数组的值

时间:2013-10-23 05:16:55

标签: python arrays 2d

我刚刚编写了这段代码,并想知道是否有任何方法可以优化打印输出。我试图使用.format()来包含总数和'偶数'或'奇数'。如果我只是在调用之前将函数的返回值分配给变量,那么我能够限制为一个print语句吗?

这个代码基本上你输入了一个二维数组,它将返回总值。

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

谢谢!

1 个答案:

答案 0 :(得分: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()是一个计算成本高昂的操作 - 你肯定不想再运行它两次。