大学的Python课程有一道期中考试例题,要求用Python实现如下功能:
给定一列表,内含变量皆为浮点数。
无论其具有奇数项或偶数项,返回奇数项之和与偶数项之和的差。
起初思路如下:
- 使用
n = len(x)
判断列表的项数 - 用
pair = n // 2
判断奇偶对的数量 - ……
- 然而,出问题了——如果列表包含奇数项,则奇数项的个数和偶数项不等。
于是,不得不改变了思路——先(通过求模)判断列表项数,若是奇数项,在末尾补一个0将其变为偶数项,且不影响计算结果。
由此可得如下代码:
x = [2, -3.1, 4.2, 6.7, 5.5, 3.4] def q4_func(x): if (len(x) % 2 == 1): x.append(0) n = len(x) // 2 a = 0 b = 0 for i in range(0, n, 1): a += x[(i * 2)] b += x[(i * 2) + 1] result = a - b return result
后记:
其实在考试的45分钟里,我用了近30分钟来应付这道题(前三题没有太高难度)。如果没有一个更简便的思路来解决这个问题,恐怕再有30分钟也不够……