zoukankan      html  css  js  c++  java
  • 大爽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]
    
    max_index = 0
    max_value = lst[max_index]
    for i in range(1, len(lst)):
        if lst[i] > max_value:
            max_index = i
            max_value = lst[i]
    
    print("Max Value: %s" % max_value)
    print("Max Value's index: %s" % max_index)
    

    输出如下

    Max Value: 21
    Max Value's index: 5
    

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

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

    3 求加权和

    加权和:
    比如现有列表[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)
    

    输出为1165

    上面的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 = lst[i]
        v = item * weight
        s += v
    
    print(s)
    
  • 相关阅读:
    如何在vim中同时编辑多个文件
    Windows操作系统架构
    驱动中PAGED_CODE的作用
    Process Hacker源码中的用户态hook的做法
    IO Processing
    Device Drivers
    Windows IO System
    how to catch error in make error message
    分析/proc/[pid]/maps中的各个内存区域的大小
    boost::shared_ptr
  • 原文地址:https://www.cnblogs.com/BigShuang/p/15310177.html
Copyright © 2011-2022 走看看