Bootstrap

Python复习总结——期末复习知识点总结大全

第1章 程序设计基本方法

1.1 计算机的概念

  • 定义:计算机是根据指令操作数据的设备,具备功能性和可编程性两个基本特性。
  • 功能性:对数据的操作,表现为数据计算、输入输出处理和结果存储等。
  • 可编程性:可以根据一系列指令自动地、可预测地、准确地完成操作者的意图。
  • 计算机技术的发展阶段
    1. 计算机系统结构阶段(1946-1981年):以全球首台数字计算机ENIAC诞生为标志。
    2. 计算机网络和视窗阶段(1982-2007年):以面向全球子网间组网的TCP/IP网络协议的标准化为标志。
    3. 复杂信息系统阶段(2008年至今):以安卓(Andriod)开源移动操作系统的发布为起点。
    4. 人工智能阶段(约20年后某个时期开始):随着深度学习、开源硬件、智能机器人等技术的发展。

1.2 程序设计语言

  • 分类:机器语言、汇编语言和高级语言。
  • 高级语言:接近自然语言的一种计算机程序设计语言,可以更容易地描述计算问题并利用计算机解决计算问题。
  • 编译和解释
    • 编译:将源代码转换成目标代码的过程。
    • 解释:将源代码逐条转换成目标代码同时逐条运行目标代码的过程。

1.3 Python语言概述

  • 诞生:1990年,由Guido van Rossum设计并领导开发。
  • 特点
    • 语法简洁
    • 与平台无关
    • 粘性扩展
    • 开源理念
    • 通用灵活
    • 强制可读
    • 支持中文
    • 模式多样
    • 类库丰富

1.4 Python语言开发环境

  • IDLE:Python软件包自带的集成开发环境,支持交互式和批量式两种编程方式。
  • 安装Python解释器:从Python官方网站下载并安装。

1.5 程序的基本编写方法

  • IPO方法:输入(Input)、处理(Process)、输出(Output)。
  • 程序的调试和测试:通过单元测试和集成测试评估程序运行结果的正确性。

1.6 Python语言的版本更迭

  • Python 2.x:已经是遗产,不再推荐学习。
  • Python 3.x:当前和未来的主要版本,推荐学习。

第2章 Python程序实例解析

2.1 实例1:温度转换

  • 程序功能:实现摄氏温度和华氏温度之间的转换。
  • 代码示例
    TempStr = input("请输入带有符号的温度值:")
    if TempStr[-1] in ['F', 'f']:
        C = (eval(TempStr[0:-1]) - 32) / 1.8
        print("转换后的温度是:{:.2f}C".format(C))
    elif TempStr[-1] in ['C', 'c']:
        F = 1.8 * eval(TempStr[0:-1]) + 32
        print("转换后的温度是:{:.2f}F".format(F))
    else:
        print("输入格式错误")
    

2.2 Python程序语法元素分析

  • 程序的格式框架:采用严格的“缩进”来表明程序的格式框架。
  • 注释:用于提高代码的可读性。
  • 命名与保留字:变量名必须是合法的标识符,不能与Python的保留字相同。
  • 字符串:用两个双引号""或者单引号’'括起来的一个或多个字符。
  • 分支语句:if、elif、else。
  • 循环语句:while、for。
  • 函数:def保留字用于定义函数。

2.3 实例2:Python蟒蛇绘制

  • 程序功能:使用turtle库绘制一条蟒蛇。
  • 代码示例
import turtle  # 导入turtle图形库

# 设置绘图窗口的大小为650x350像素,窗口左上角距离屏幕左上角的水平和垂直距离分别为200像素
turtle.setup(650, 350, 200, 200)

# 提起画笔,这样移动时不会在画布上留下痕迹
turtle.penup()

# 向后移动250像素,为绘制图形设定起始位置
turtle.fd(-250)

# 放下画笔,开始绘制
turtle.pendown()

# 设置画笔的粗细为25像素
turtle.pensize(25)

# 设置画笔颜色为紫色
turtle.pencolor("purple")

# 设置海龟的方向为-40度,即向左上方倾斜
turtle.seth(-40)

# 绘制图形的主体部分,循环4次以创建对称图案
for i in range(4):
    turtle.circle(40, 80)   # 绘制一个半径为40像素,圆周角为80度的圆弧
    turtle.circle(-40, 80)  # 绘制一个半径为-40像素(方向相反),圆周角为80度的圆弧
    turtle.circle(40, 80 / 2)  # 绘制一个半径为40像素,圆周角为40度的圆弧

# 向前移动40像素,为绘制尾部做准备
turtle.fd(40)

# 绘制一个半径为16像素,圆周角为180度的圆弧,形成尾部的一部分
turtle.circle(16, 180)

# 向前移动40 * 2 / 3像素,完成尾部的绘制
turtle.fd(40 * 2 / 3)

# 完成绘图
turtle.done()

解释:

  • turtle.setup():用于设置绘图窗口的大小和位置。
  • turtle.penup()turtle.pendown():控制画笔的提起和放下,提起时移动不绘图,放下时移动绘图。
  • turtle.pensize():设置画笔的粗细。
  • turtle.pencolor():设置画笔的颜色。
  • turtle.seth():设置海龟的方向,以角度表示。
  • turtle.circle():绘制圆弧,参数为半径和圆周角。
  • turtle.fd():向前移动指定距离。
  • turtle.done():完成绘图,保持窗口打开。

这段代码绘制了一个类似蟒蛇的图案,通过组合圆弧和直线移动来实现。

2.4 turtle语法元素分析

  • 绘图坐标体系:turtle库在画布上绘制图形,有前进、后退、旋转等行为。
  • 画笔控制函数:penup()、pendown()、pensize()、pencolor()。
  • 形状绘制函数:fd()、circle()。

以下是第3章“基本数据类型”的内容,以Markdown格式呈现,包括您提供的所有小节和细节:

第3章 基本数据类型

3.1 数字类型

  • 整数类型:int

    • 没有取值范围限制,可以表示任意大小的整数。
  • 浮点数类型:float

    • 采用科学计数法表示,用于表示带有小数部分的数值。
  • 复数类型:complex

    • 由实部和虚部组成,实部和虚部都是浮点数,用于表示复数。

3.2 数字类型的操作

  • 内置的数字类型转换函数

    • int():将其他类型转换为整数。
    • float():将其他类型转换为浮点数。
    • complex():将其他类型转换为复数。
  • 内置的数值运算函数

    • abs():返回数值的绝对值。
    • divmod():返回两个数相除的商和余数。
    • pow():返回数值的幂。
    • round():对数值进行四舍五入。
    • max():返回多个数值中的最大值。
    • min():返回多个数值中的最小值。

3.3 字符串类型及其操作

  • 字符串的定义

    • 用两个双引号""或者单引号''括起来的一个或多个字符。
  • 字符串的索引和切片

    • 通过索引和切片访问字符串中的字符,索引从0开始。
  • 字符串的操作符

    • +:连接两个字符串。
    • *:重复字符串多次。
    • in:检查一个字符串是否是另一个字符串的子串。
  • 内置的字符串处理函数

    • len():返回字符串的长度。
    • str():将其他类型转换为字符串。
    • chr():根据Unicode编码返回对应的字符。
    • ord():返回字符的Unicode编码。
    • hex():将整数转换为十六进制字符串。
    • oct():将整数转换为八进制字符串。
  • 内置的字符串处理方法

    • upper():将字符串转换为大写。
    • lower():将字符串转换为小写。
    • find():查找子串在字符串中的位置。
    • replace():替换字符串中的子串。
    • split():将字符串分割为列表。
    • join():将列表连接为字符串。

3.4 字符串类型的格式化

  • format()方法

    • 用于字符串的格式化输出,可以插入变量和表达式。
  • 格式控制标记

    • <填充>:指定填充字符。
    • <对齐>:指定对齐方式(左对齐、右对齐、居中)。
    • <宽度>:指定字段的宽度。
    • <>:(此处应为占位符说明,实际使用中不直接出现,用于表示格式说明符的开始和结束)
    • <精度>:指定浮点数的小数位数或字符串的最大长度。
    • <类型>:指定转换类型(如整数、浮点数、字符串等)。

3.5 实例4:文本进度条

  • 程序功能:在控制台输出动态刷新的文本进度条。
  • 代码示例
 import time  # 导入time模块,用于实现延迟
 
scale = 50  # 设置进度条的总长度(即最大迭代次数)
 
print("执行开始")  # 输出开始执行的提示
 
# 使用for循环遍历从0到scale(包括scale)
for i in range(scale + 1):
    a, b = '*' * i, '' * (scale - i)  # 生成当前进度的字符串a和剩余空白的字符串b
    c = (i / scale) * 100  # 计算当前进度的百分比
    
    # 使用\r(回车符)在同一行刷新显示进度条
    # {:^3.0f}格式化百分比为整数,居中显示,宽度为3
    # [{}{}]格式化进度条,其中a是已完成的星号部分,b是剩余的空白部分
    print("\r{:^3.0f}[{}{}]".format(c, a, b), end='')
    
    time.sleep(0.1)  # 暂停0.1秒,以便观察进度条的变化
 
print("\n执行结束")  # 输出执行结束的提示,并换行

第4章 程序的控制结构

4.1 程序的基本结构

程序的基本结构决定了代码如何被执行,主要分为以下三种:

  • 顺序结构

    • 代码按照从上到下的顺序逐行执行,这是最基本的程序执行方式。
    • 示例:
      print("程序开始")
      x = 10
      y = 20
      print("x + y =", x + y)
      print("程序结束")
      
  • 分支结构

    • 根据条件判断,选择执行不同的代码块。这使得程序能够根据输入或状态做出决策。
    • 通过ifif-elseif-elif-else语句实现。
  • 循环结构

    • 重复执行一段代码,直到满足某个条件。这对于需要重复操作的任务非常有用。
    • 通过while循环和for循环实现。

4.2 程序的分支结构

分支结构允许程序根据条件执行不同的代码路径。

  • 单分支结构

    • 使用if语句,当条件为真时执行特定代码块。
    • 示例:
      x = 15
      if x > 10:
          print("x大于10")
      
  • 二分支结构

    • 使用if-else语句,提供一个条件为真时执行的代码块和一个条件为假时执行的代码块。
    • 示例:
      x = 5
      if x > 10:
          print("x大于10")
      else:
          print("x不大于10")
      
  • 多分支结构

    • 使用if-elif-else语句,处理多个条件,依次判断每个条件,执行第一个为真的条件对应的代码块。
    • 示例:
      x = 12
      if x > 20:
          print("x大于20")
      elif x > 10:
          print("x大于10但小于或等于20")
      else:
          print("x小于或等于10")
      

4.3 循环结构

循环结构用于重复执行代码块。

  • while循环

    • 在条件为真时重复执行代码块,适用于不确定循环次数的情况。
    • 示例:
      count = 0
      while count < 5:
          print("计数:", count)
          count += 1
      
  • for循环

    • 遍历序列(如列表、字符串)中的每个元素,适用于已知循环次数或需要遍历集合的情况。
    • 示例:
      fruits = ["苹果", "香蕉", "樱桃"]
      for fruit in fruits:
          print(fruit)
      

4.4 异常处理

异常处理用于捕获和处理运行时发生的错误,防止程序崩溃。

  • try-except语句

    • 尝试执行一段代码,并在发生异常时捕获并处理它。
    • 示例:
      try:
          x = 1 / 0
      except ZeroDivisionError:
          print("不能除以零")
      
  • 异常类型

    • Python中有多种内置异常类型,如NameError(未定义变量)、TypeError(类型不匹配)等。
    • 通过指定异常类型,可以更精确地捕获和处理特定错误。

第5章 函数和代码复用

5.1 函数的定义和调用

  • 定义函数

    • 使用def保留字来定义函数,后跟函数名和参数列表。
    • 示例:
      def my_function():
          print("这是一个函数")
      
  • 调用函数

    • 通过函数名加括号的方式来调用函数。
    • 示例:
      my_function()  # 输出:这是一个函数
      

5.2 函数的参数和返回值

  • 位置参数

    • 按照位置顺序传递参数,参数的位置和顺序必须一致。
    • 示例:
      def add(a, b):
          return a + b
      result = add(3, 5)  # result的值为8
      
  • 关键字参数

    • 通过参数名传递参数,参数的顺序可以不一致。
    • 示例:
      def greet(name, greeting):
          print(f"{greeting}, {name}!")
      greet(name="Alice", greeting="Hello")  # 输出:Hello, Alice!
      
  • 默认参数

    • 为参数提供默认值,如果调用时没有传递该参数,则使用默认值。
    • 示例:
      def multiply(a, b=2):
          return a * b
      result = multiply(3)  # result的值为6
      
  • 可变参数

    • *args用于接收任意数量的位置参数,以元组的形式存储。
    • **kwargs用于接收任意数量的关键字参数,以字典的形式存储。
    • 示例:
      def var_args(*args, **kwargs):
          print(args)
          print(kwargs)
      var_args(1, 2, 3, a=4, b=5)  # 输出:(1, 2, 3) 和 {'a': 4, 'b': 5}
      
  • 返回值

    • 使用return语句返回结果,可以返回多个值(以元组的形式)。
    • 示例:
      def subtract(a, b):
          return a - b
      result = subtract(10, 5)  # result的值为5
      

5.3 lambda函数

  • 定义

    • 用于创建匿名函数,即没有名字的函数。
  • 语法

    • lambda 参数: 表达式
    • 示例:
      add = lambda x, y: x + y
      result = add(3, 5)  # result的值为8
      

5.4 datetime库的使用

  • 获取当前日期和时间

    • from datetime import datetime
    • now = datetime.now()
    • 示例:
      from datetime import datetime
      now = datetime.now()
      print(now)  # 输出当前日期和时间
      
  • 格式化日期和时间

    • 使用strftime()方法将日期和时间格式化为字符串。
    • 示例:
      formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
      print(formatted_now)  # 输出格式化后的日期和时间
      

5.5 函数递归

  • 定义

    • 函数直接或间接调用自身。
  • 递归的基本条件

    • 基准情况:递归必须有一个明确的结束条件,否则会导致无限递归。
    • 递归情况:函数在调用自身时,必须向基准情况靠近。
    • 示例:
      def factorial(n):
          if n == 1:
              return 1  # 基准情况
          else:
              return n * factorial(n - 1)  # 递归情况
      result = factorial(5)  # result的值为120
      

第6章 组合数据类型

您提供的关于序列类型的定义和类型是非常准确的。以下是对这部分内容的详细阐述,以Markdown格式呈现:

6.1 序列类型

  • 定义

    • 序列类型是包含多个元素的数据类型,这些元素之间有顺序关系。在序列中,每个元素都有一个位置(或索引),可以通过这个位置来访问或修改元素。
  • 类型

    • 字符串(String)

      • 由字符组成的序列,是不可变的。这意味着一旦字符串被创建,它的内容就不能被改变。字符串是Python中最常用的数据类型之一,用于表示文本数据。
      • 示例:"Hello, World!"
    • 元组(Tuple)

      • 由多个元素组成的不可变序列。元组中的元素可以是不同类型的,且一旦元组被创建,它的元素就不能被修改、==添加或删除。==元组通常用于存储不需要改变的数据集,或者作为函数的返回值,当需要返回多个值时。
      • 示例:(1, 2, 3, "a", "b", "c")
    • 列表(List)

      • 由多个元素组成的可变序列。列表中的元素可以是不同类型的,且列表的大小是动态的,可以随时添加、删除或修改元素。列表是Python中最灵活的数据类型之一,广泛用于存储和操作数据集。
      • 示例:[1, 2, 3, "apple", "banana"]

6.2 列表类型

  • 定义

    • 一个可变序列,可以动态添加、删除元素。
  • 操作

    • append(element):在列表末尾添加一个新的元素。
    • extend(iterable):通过添加一个可迭代对象的所有元素来扩展列表。
    • insert(index, element):在指定位置插入一个元素。
    • remove(value):移除列表中第一个匹配的元素。
    • pop([index]):移除列表中指定位置的元素,如果不指定位置,则移除并返回最后一个元素。
    • clear():移除列表中的所有元素。
  • 示例

    my_list = [1, 2, 3]
    my_list.append(4)  # [1, 2, 3, 4]
    my_list.extend([5, 6])  # [1, 2, 3, 4, 5, 6]
    my_list.insert(2, 'a')  # [1, 2, 'a', 3, 4, 5, 6]
    my_list.remove('a')  # [1, 2, 3, 4, 5, 6]
    my_list.pop()  # 移除并返回6,列表变为[1, 2, 3, 4, 5]
    my_list.clear()  # 移除所有元素,列表变为[]
    

6.3 元组类型

  • 定义

    • 一个不可变序列,一旦创建就不能修改。
  • 用途

    • 用于存储不需要修改的数据,如函数的多个返回值、作为字典的键等。
  • 示例

    my_tuple = (1, 2, 3)
    # my_tuple[1] = 4  # 会报错,因为元组是不可变的
    

6.4 字典类型

  • 定义

    • 通过键(key)来访问值(value)的数据类型,键必须是唯一的。
  • 操作

    • keys():返回一个包含所有键的视图。
    • values():返回一个包含所有值的视图。
    • items():返回一个包含所有键值对的视图。
    • get(key, default=None):返回指定键的值,如果键不存在,则返回默认值。
    • update(other_dict):更新字典,添加或覆盖键值对。
  • 示例

    my_dict = {'a': 1, 'b': 2, 'c': 3}
    keys = my_dict.keys()  # dict_keys(['a', 'b', 'c'])
    values = my_dict.values()  # dict_values([1, 2, 3])
    items = my_dict.items()  # dict_items([('a', 1), ('b', 2), ('c', 3)])
    value = my_dict.get('b', 0)  # 2
    my_dict.update({'d': 4, 'b': 5})  # {'a': 1, 'b': 5, 'c': 3, 'd': 4}
    

6.5 实例11:Python之禅

  • 程序功能

    • 展示Python之禅,介绍编写优美代码的基本原则。
  • 代码示例

    import this
    

    运行上述代码后,Python解释器会输出“Python之禅”,这是一段由Tim Peters编写的关于编写Python代码的指导原则,强调了代码的可读性、简洁性和明确性。

通过这些内容,您可以了解Python中的组合数据类型,包括列表、元组和字典的基本用法和操作,以及一个有趣的实例“Python之禅”。这些知识是编程中的基础,对于掌握Python编程非常重要。
以下是您提供的第7章“文件和数据格式化”的内容,以完整的Markdown格式呈现,包括所有小节和细节:

第7章 文件和数据格式化

7.1 文件的操作

  • 打开文件

    • 使用open()函数来打开文件,返回一个文件对象。
  • 文件模式

    • 'r':只读模式(默认)。
    • 'w':写入模式,会覆盖文件内容。
    • 'a':追加模式,在文件末尾添加内容。
    • 'b':二进制模式,可以与其他模式结合使用(如'rb''wb')。
  • 读写文件

    • read():读取整个文件内容。
    • write():将字符串写入文件。
    • readline():读取文件的一行。
    • readlines():读取文件的所有行,返回一个列表。
    • writelines():将字符串列表写入文件。
  • 关闭文件

    • 使用close()方法来关闭文件,释放资源。

7.2 PIL库的使用

  • 定义

    • PIL(Python Imaging Library)是用于图像处理的库,现在通常使用其分支Pillow。
  • 安装

    • 使用pip install pillow来安装Pillow库。
  • 基本操作

    • open():打开图像文件。
    • show():显示图像。
    • save():保存图像。
    • convert():转换图像模式(如RGB、灰度等)。
    • thumbnail():创建图像的缩略图。

7.3 一二维数据的格式化和处理

  • 一维数据

    • 列表、元组等,表示一维数据结构。
  • 二维数据

    • 列表的列表、numpy数组等,表示二维数据结构。
  • CSV格式

    • 逗号分隔值文件,用于存储表格数据。

7.4 CSV格式的HTML展示

  • 程序功能

    • 将CSV文件转换为HTML表格并展示。
  • 代码示例

    import csv
    
    html = "<table border='1'>\n"
    with open('data.csv', mode='r', newline='') as file:
        reader = csv.reader(file)
        for row in reader:
            html += "<tr>"
            for cell in row:
                html += "<td>{}</td>".format(cell)
            html += "</tr>\n"
    html += "</table>"
    
    print(html)
    
    • 该代码读取data.csv文件,将其内容转换为HTML表格格式,并打印出来。

7.5 高维数据的格式化

  • 定义

    • 超过二维的数据,如三维数组、多维数据集等。
  • 存储格式

    • JSON:JavaScript对象表示法,用于存储和交换文本信息。
    • XML:可扩展标记语言,用于存储和传输数据。

7.6 json库的使用

  • 定义

    • json库用于处理JSON格式的数据。
  • 基本操作

    • loads():将JSON字符串解析为Python对象。
    • dumps():将Python对象转换为JSON字符串。
    • load():从文件读取JSON数据并解析为Python对象。
    • dump():将Python对象写入文件,以JSON格式存储。

第8章 程序设计方法论

8.1 计算思维

  • 定义

    • 计算思维是一种抽象和自动化的思维方式,通过计算机科学的原理和方法来解决问题。
  • 应用

    • 计算思维可以应用于各个领域,通过抽象问题、设计算法、编写程序等步骤来解决问题。

8.2 实例15:体育竞技分析

  • 程序功能

    • 模拟体育竞技比赛,并分析比赛结果。
  • 代码示例

    import random
    
    def simOneGame(probA, probB):
        scoreA, scoreB = 0, 0
        serving = "A"
        while not gameOver(scoreA, scoreB):
            if serving == "A":
                if random.random() < probA:
                    scoreA += 1
                else:
                    serving = "B"
            else:
                if random.random() < probB:
                    scoreB += 1
                else:
                    serving = "A"
        return scoreA, scoreB
    
    def gameOver(a, b):
        return a == 15 or b == 15
    
    def simNGames(n, probA, probB):
        winsA, winsB = 0, 0
        for i in range(n):
            scoreA, scoreB = simOneGame(probA, probB)
            if scoreA > scoreB:
                winsA += 1
            else:
                winsB += 1
        return winsA, winsB
    
    def main():
        probA, probB, n = eval(input("请输入选手A的能力值 (0-1): ")), eval(input("请输入选手B的能力值 (0-1): ")), eval(input("模拟比赛的场次: "))
        winsA, winsB = simNGames(n, probA, probB)
        print("选手A获胜{}场比赛,占比{:.2%}".format(winsA, winsA / n))
        print("选手B获胜{}场比赛,占比{:.2%}".format(winsB, winsB / n))
    
    main()
    
    • 该程序模拟了两名选手的体育竞技比赛,通过输入选手的能力值和模拟比赛的场次,输出每名选手的获胜场次和占比。

8.3 自顶向下和自底向上

  • 自顶向下设计

    • 从整体到局部的设计方法,先考虑问题的整体结构和功能,然后逐步细化每个部分。
  • 自底向上执行

    • 从局部到整体的执行方法,先实现和测试每个局部功能,然后逐步集成和测试整体功能。

8.4 pyinstaller库的使用

  • 定义

    • pyinstaller是一个将Python脚本打包成可执行文件的工具。
  • 安装

    • 使用pip install pyinstaller来安装pyinstaller库。
  • 使用

    • 使用pyinstaller -F script.py命令将script.py脚本打包成一个可执行文件。-F选项表示生成一个单独的可执行文件。

8.5 计算生态和模块编程

  • 定义

    • 计算生态是围绕Python程序设计的开放资源,包括标准库、第三方库、工具等。
  • 模块编程

    • 利用第三方库进行编程,可以提高开发效率,减少重复劳动,实现代码复用。

8.6 Python第三方库的安装

  • pip工具
    • pip是Python的包管理工具,用于安装和管理Python库和工具。
    • 使用pip install package_name命令来安装指定的Python库。

通过这些内容,您可以了解计算思维的概念和应用、体育竞技分析的程序设计实例、自顶向下和自底向上的设计方法、pyinstaller库的使用、计算生态和模块编程的概念以及Python第三方库的安装方法。这些知识对于掌握程序设计方法论和提高编程能力非常重要。

;