Python 程序设计语言 笔记(四)

原文地址:https://blog.csdn.net/longteng007/article/details/50991807

  • 【实例】三者最大值
  • 【IPO】
    输入:三个数值
    处理:三者最大算法
    输出:打印最大值
  • 【算法比较】
    ① 通盘比较 — 将每一个值与其他所有值比较以确定最大值
    通盘比较
    三个值的情况比较简单,如果是五值比较复杂,而且效率低
    (因为表达式没有被充分利用)
    ② 决策树 — 避免冗余比较
    决策树
    结构更加复杂!
    ③ 顺序处理 — 逐个扫描每个值,保留最大者
    【程序】程序9:
  • # program: maxn.py
    # 寻找一组数中的最大值
    def main():
        n = eval(input("How many numbers are there?"))
        # 将第一个值赋值给max
        max = eval(input("Enter a number >>"))
        # 连续与后面n-1值进行比较
        for i in range(n-1):
            x = eval(input("Enter a number >>"))
            if x > max:
                max = x
        print("The largest value is", max)
    main()
      
      
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    【运行结果】
    How many numbers are there? 5
    Enter a number >> 9
    Enter a number >> 6
    Enter a number >> 3
    Enter a number >> 10
    Enter a number >> 20
    The largest value is 20

    ④ 使用Python内置函数max() 内置函数

    3.5 基本循环结构

    (1)for循环

    Python可以使用for语句循环遍历整个序列的值,格式如下:

    for <var> in <sequence>:
        <body>
      
      
    • 1
    • 2

    在for循环中,循环变量var遍历了队列中的每一个值,循环变量var遍历了队列中的每一个值,循环语句体为每个值执行一次

    例:for循环求平均数

    • IPO:
      输入:待输入数字个数,数字
      处理:平均数算法
      输出:平均数
      通用设计方案:
      • ① 输入数字的个数n
      • ② 将sum初始化为0
      • ③ 循环n次:
        • 输入数字x
        • 将x加入sum中
      • ④ 将sum/n作为平均数输出出来
    • 程序10:
    #average1.py
    n = eval(input("How many numbers?"))
    sum = 0.0
    for i in range(n):
        x = eval(input("Enter a number >>"))
        sum = sum + x
    print("\nThe average is", sum/n)
      
      
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    【运行结果】
    How many numbers? 3
    Enter a number >> 5
    Enter a number >> 7
    Enter a number >> 6

    The average is 6.0

    for循环的缺点:

    程序开始时必须提供输入数字总数,以提供固定循环次数
    大规模数字则需要用户数清楚个数
    为此,Python提供了另一种循环模式即无限循环,不需要提前知道循环次数

    (2)while循环

    语句格式:

    while <condition>
        <body>
      
      
    • 1
    • 2

    条件总是在循环体执行之前被判断,这种结构又被称为前测循环(当型循环)
    如果循环体没有对i初始化或循环体没有累加,条件判断一直为真,循环体将一直执行,即为死循环程序,这时通常使用Ctrl+C来终止一个程序

    (3)break语句 —— 退出循环

    例:程序11:

    #TestBreak.py
    sum = 0
    number = 0
    while number  < 20:
        number += 1
        sum += number
        if sum > 100:
            break
    print("The number is", number)
    print("The sum is", sum)
      
      
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    【运行结果】
    The number is 14
    The sum is 105

    (4)continue — 结束本次循环

    即跳出循环体中下面尚未执行的语句,对于while循环,继续求解循环条件;对于for循环,继续遍历循环列表

    continue语句和break语句的区别:

    continue语句只结束本次循环,而不终止整个循环的执行,而break语句则是直接结束整个循环流程,不再判断循环条件是否成立

    (5)循环语句中的else — 不满足循环条件时执行

    3.6 通用循环构造方法

    (1)交互式循环

    交互式循环是无限循环的一种,允许用户通过交互的方式重复程序特定部分
    交互式循环

    (2)哨兵循环

    执行循环直到遇到特定的值,循环语句才终止执行

    设计方法:

    ① 设定一个哨兵值作为循环终止的标志
    ② 任何值都可以做哨兵,但要与实际数据有所区别

    哨兵循环

    (3)文件循环

    面向文件的方法是数据处理的典型应用,可以事先将数据录入到文件,便于编辑修改,python中采用readline()方法中的end of file循环模式

    (4)循环嵌套

    决策和循环互相嵌套可以实现复杂算法,假设数字以逗号分隔出现在文件的同一行上

    (3)(4)整合程序如图:
    文件循环嵌套

    3.7 死循环和循环嵌套

    (1)死循环 — 无法靠自身的控制中止的循环

    死循环

    死循环的使用:通过死循环可以一直检测捕捉特定异常

    (2)后测循环(直到型循环)

    先接受输入,再判断循环条件是否满足。在Python中没有后测循环语句,但可以通过while和break语句间接实现,如:
    while

    break

    (3)半路循环 — 循环判断条件在循环体的中部

    例:
    半路循环

    3.8 布尔表达式

    条件语句和循环语句都使用布尔表达式作为条件
    布尔值为真(True)或假(Flase)

    (1)布尔操作符:and,or,not

    and和or用于组合两个布尔表达式,并产生一个布尔结果

    <expr> and <expr>
    <expr> or <expr>
      
      
    • 1
    • 2

    not运算符计算一个布尔表达式的反值

    not <expr>
      
      
    • 1

    (2)布尔操作符的优先级:not > and > or

    真值表

    例:壁球比赛计分:

    • 假设scoreA和scoreB代表两个壁球选手的分数
      • 规则1:只要一个选手达到了15分,本场比赛就结束
        • 即: scoreA == 15 or scoreB == 15
      • 在程序中构造一种循环条件,对游戏结束条件取反,只要比赛还没有结束游戏就一直进行下去
        • 即: while not( scoreA == 15 or scoreB == 15 ) # 比赛继续
      • 规则2:如果一方打了七分而另一方一分未得时,比赛也结束
        • 即:scoreA == 15 or scoreB == 15 or (a == 7 and b == 0) or (b == 7 and a == 0)
      • 需要一个团队赢得至少两分才算赢,即其中一个队已经达到了15分,且分数差异至少为2时比赛结束(排球)
        • 即:(a >= 15 or b >= 15) and abs(a-b)>=2

    (3)布尔代数: 布尔表达式遵循特定的代数定律,这些规律被称为布尔逻辑或布尔代数

    代数 布尔代数
    a*0 = 0 a and false == false
    a*1 = a a and true == a
    a+0 = 0 a or false == a

    ① 任何数据和true进行or操作都是真

    ② and和or操作符都符合分配率

    ③ not操作符可负负抵消

    ④ 德摩根定律:not放进表达式后,and和or发生变化

    如:not(a or b) == (not a) and (not b)
    not(a and b) == (not a) or (not b)

    ⑤ 布尔代数的应用 — 用德摩根定律分析和简化表达式

    (4)布尔表达式作为决策 — 判断退出循环条件

    ① 对于数字(整数和浮点数)的零值被认为是false,任何非零值都是true

    ② bool类型是特殊的整数

    ③ 布尔表达式具有短路求值的特性

    猜你喜欢

    转载自blog.csdn.net/qq_36369267/article/details/82831615