大爽Python入门教程 3-4 实践例题

大爽Python入门公开课教案 点击查看教程总目录

1. 求和

使用循环,计算列表所有项的和,并输出这个和。
列表示例

lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11]

实现代码如下

lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11]

s = 0
for item in lst:
    s += item

print(s)

输出为

98

上面是用for循环实现的,
下面用while来实现下,

lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11]

s = 0
i = 0
while i < len(lst):
    item = lst[i]
    s += item
    i += 1

print(s)

输出也是98

拓展说明:很多for循环实现的功能,都可以使用while循环来实现
for循环的特点是遍历可迭代对象。
while循环中,可以添加一个随循环次数增长的index,来实现同样的遍历。

while循环的特点是按条件循环。
for循环去实现按条件来循环,比较难。

2. 寻找最大值

使用循环和判断,寻找出列表的最大值,并输出该最大值。
列表示例

lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11]

思路分析
寻找列表中的最大值,
一般会选择先将列表开头的项(即第一项)作为最大值初始值。
然后(使用循环)依次用后面的项与该最大值作比较,
如果后面的项比该最大值更大,则更新这个最大值。

当循环执行完后,列表中的所有项都经过了一轮比较。
此时得到的最大值,必然是列表所有项的最大值。

实现代码如下

lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11]

mv = lst[0]
for item in lst:
    if item > mv:
        mv = item

print("Max Value: %s" % mv)

输出如下

Max Value: 21

3. 寻找最大值及其索引

这个算是上一题的进阶

使用循环和判断,寻找出列表的最大值,并输出该该最大值的索引和最大值。

实现代码如下

lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11]

mi = 0
for i in range(1, len(lst)):
    if lst[i] > lst[mi]:
        mi = i

print("Max Value's index: %s" % mi)
print("Max Value: %s" % lst[mi])

输出如下

Max Value's index: 5
Max Value: 21

补充分析:
上一题遍历时,直接遍历的列表中的所有的项。
这一题遍历时,遍历的是列表中第二项开始所有项的索引。

什么时候遍历项,什么时候遍历索引,取决与实际情景的需要。
比如本题是因为要求最后输出时也输出最大项的索引。

4 求加权和

加权和:
比如现有列表[a1, a2, a3], 其权重列表为[w1, w2, w3]
那么其加权和为a1*w1 + a2*w2 + a3*w3

现有数据列表lst和其对应权重列表weights如下

lst = [8, 5, 7, -12, 19, 21, 10, -3, 2, 11]
weights = [1, 2, 5, 3, 4, 6, 8, 7, 2, 4]

lst中数据的加权和。
补充要求:忽略lst中小于0的数据(即不对这些数据算加权,也不计入和)。

代码实现

lst = [8, 5, 7, -12, 19, 21, 10, -3, 2, 11]
weights = [1, 2, 5, 3, 4, 6, 8, 7, 2, 4]

s = 0
for i in range(len(lst)):
    item = lst[i]
    if item >= 0:
        weight = lst[i]
        v = item * weight
        s += v

print(s)

输出为383

上面的if判断是判断的数据大于等于0时才执行。
下面我们用continue实现,数据小于0时跳过。
代码如下

lst = [8, 5, 7, -12, 19, 21, 10, -3, 2, 11]
weights = [1, 2, 5, 3, 4, 6, 8, 7, 2, 4]

s = 0
for i in range(len(lst)):
    item = lst[i]
    if item < 0:
        continue

    weight = weights[i]
    v = item * weight
    s += v

print(s)
posted @ 2021-09-18 21:02  大爽歌python编程辅导  阅读(91)  评论(0编辑  收藏  举报