Python程序设计

徐舒,严张凌,何山,王佩瑶,肖业清

目录

  • 1 课程概况
    • 1.1 教学大纲
    • 1.2 教案
    • 1.3 教材与参考书
  • 2 1-1 Python概述
    • 2.1 Python的发展与特点
    • 2.2 Python程序的运行方式
  • 3 2-1 搭建Python开发环境
    • 3.1 Conda虚拟环境
    • 3.2 VSCode的安装与配置
  • 4 2-2 Python开发快速入门
    • 4.1 实例精讲1:温度转换
    • 4.2 Python程序实例解析
  • 5 3-1 Python程序开发与调试入门
    • 5.1 Python调试方法
    • 5.2 VSCode断点与调试工具栏
    • 5.3 高阶拓展:Python中的if __name__ ==‘__main__’该如何理解
  • 6 4-1 turtle绘图库及计算思维的训练
    • 6.1 翻转任务单
    • 6.2 翻转视频:turtle库基本概念
    • 6.3 翻转视频:turtle库常用函数
    • 6.4 翻转讨论:你知道哪些函数的简写与完整形式?
    • 6.5 翻转测验(课前自测)
    • 6.6 挑战编程1: 五角星绘制
    • 6.7 实例精讲2:Python蟒蛇绘制
    • 6.8 turtle的各种小技巧
      • 6.8.1 小海龟到底在哪里?
      • 6.8.2 实例3:彩虹框
      • 6.8.3 实例4:教小学生认识多边形
    • 6.9 编程训练4:彩色艺术图
  • 7 4-2 基本数据类型之数字类型
    • 7.1 基本数据类型
    • 7.2 编程训练
  • 8 5-1 Python字符串基础
    • 8.1 翻转任务单
    • 8.2 翻转视频
    • 8.3 翻转讨论
    • 8.4 翻转测验(开课测验)
    • 8.5 挑战编程2:字符串的第1个不重复字符
      • 8.5.1 挑战编程2的两种解题思路
    • 8.6 挑战编程3:最长公共前缀
      • 8.6.1 标准算法思路
      • 8.6.2 Python简化解题思路
  • 9 6-1 字符串方法与格式化
    • 9.1 字符串的方法
    • 9.2 字符串的格式化
    • 9.3 实例5:文本进度条的实现
    • 9.4 拓展:进度条tdqm库
  • 10 6-2 程序的控制结构
    • 10.1 翻转任务单
    • 10.2 翻转视频
    • 10.3 实例精讲6:BMI身体指数的计算
      • 10.3.1 挑战练习
  • 11 7-1 Python循环结构
    • 11.1 翻转任务单
    • 11.2 翻转视频
    • 11.3 编程练习
  • 12 8-1 Python异常机制
    • 12.1 异常处理分支结构
    • 12.2 拓展: Random随机库用法
  • 13 8-2 Python函数
    • 13.1 翻转任务单
    • 13.2 翻转视频
    • 13.3 翻转讨论
  • 14 9-1 函数编程训练
    • 14.1 实例8:七段数码管绘制
      • 14.1.1 实例讲解
      • 14.1.2 改进实例
    • 14.2 挑战编程4:旋转图像
      • 14.2.1 解题思路
    • 14.3 拓展: PyInstaller库的使用
  • 15 10-1 列表和元组
    • 15.1 翻转任务单
    • 15.2 翻转视频
    • 15.3 翻转讨论
    • 15.4 序列类型
      • 15.4.1 有序:列表
      • 15.4.2 有序:元组
      • 15.4.3 序列典型应用场景
    • 15.5 无序:集合
      • 15.5.1 集合典型应用场景
  • 16 10-2 列表与元组编程训练
    • 16.1 案例 基本统计值运算
      • 16.1.1 问题分析
      • 16.1.2 解决方案
      • 16.1.3 拓展
    • 16.2 挑战编程5:重复元素判定
  • 17 11-1 算法与计算思维训练
    • 17.1 jieba库
    • 17.2 实例:词频统计
  • 18 12-1 Python字典
    • 18.1 无序:字典
      • 18.1.1 字典基本特性分析
    • 18.2 序列高级特性
  • 19 12-2 算法与计算思维训练
  • 20 13-1 Python的文件处理
    • 20.1 翻转任务单
    • 20.2 课件 输入与输出
      • 20.2.1 视频 文件操作详解
  • 21 14-1 (高阶)文件编程-自动轨迹绘制
    • 21.1 课程翻转课堂教学任务单
    • 21.2 视频 文件数据的处理
    • 21.3 视频 自动轨迹绘制
  • 22 14-2 Python中的图像处理PIL库
    • 22.1 PIL库的使用
  • 23 15-1 图像增强编程训练
    • 23.1 翻转任务单
    • 23.2 高阶项目:猫狗识别
    • 23.3 编程挑战:图像增强
  • 24 16-1 二维文件处理方法
    • 24.1 二维数据与CSV基础
  • 25 16-2 词云库wordcloud
    • 25.1 拓展 词云库wordcloud
    • 25.2 实例9: 报告词云
      • 25.2.1 拓展 你不知道的词云
  • 26 16-2 Python生态展望(拓展内容,自主选学)
    • 26.1 Python生态概述
    • 26.2 从数据处理到人工智能
    • 26.3 实例16 霍兰德人格分析图
    • 26.4 从Web解析到网络空间
    • 26.5 从人机交互到艺术设计
    • 26.6 实例17 玫瑰花绘制
Python调试方法

VS Code是一款非常好用的编辑器,它的代码调试工具其实也非常强大,但是许多人都不知道该怎么用,今天就来学习怎么用它调试Python代码吧。

1.准备

既然是用VS Code调试Python代码,那当然你得先安装好Python啦。打开VS Code,如下图所示安装Python扩展:

2.配置调试环境

打开VS Code的DEBUG设置,先点击左边的虫子,再点击上面的齿轮:



点击后提示选择一种语言,选择Python。然后要指定相应的文件类型,可以看到,它支持许多种Python的调试方法,有Django, Flask, 甚至是 Pyramid. 由于下面我们要讲的只是单文件的代码调试,因此选择Python File.

然后会自动在当前文件夹的根目录/.vscode中生成一个launch.json的配置文件,打开后你会发现长这个样子:

下面是这些字段的说明:

1.name: 当前DEBUG配置的名称。

2.Type: 指什么语言。

3.request是最重要的参数,它能选择两种类型,一个是launch模式,一个是attach模式:

  • launch模式:由VS Code来启动一个独立的具有debug功能的程序。

  • attach模式:监听一个已启动的程序(其必须已经开启debug模式)。

大多数情况下,调试Python都是用launch模式。少数情况下,你无法通过新建独立程序来调试(如要与浏览器相结合的程序,launch模式会导致你大部分浏览器插件失效),这时候就需要attach模式。

4.program: 文件的绝对路径,可以使用变量来灵活指定。

5.console: 终端的类型, integratedTerminal 指使用VSCode终端。


如果想指定一个目标文件为执行文件,修改program值:

{
    "program": "${workspaceFolder}/run.py"
}



${workspaceFolder}为项目根目录

添加执行参数

configurations里添加args键:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: 当前文件",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": ["9000"]
        }
    ]
}


args是一个数组,参数按顺序传入。


3.编写一段调试用的代码

我们先随便编写一串代码,来演示怎么查看变量的值:

import random
a = random.randint(0,100)
b = random.randint(0,100)
print(a*b)

打开debug面板,点击绿色的播放按钮,就会在代码块上方出现一个控制条,点击单步调试,就能够一行行地执行代码:


第二行执行完毕后,左边便会出现a变量相应的值:


这样,通过调试,你能清楚知道a*b的结果中,a和b分别对应的值。

但是,在工作生活中,我们自己写的模块、代码很少有需要调试的时候。只有当我们使用别的人框架或者别人的开源模块时,才时常会遇到问题,这时候调试工具才能发挥出最大的功效,比如下面这个例子:

import sys
f = open('20191206/myfile.txt')
s = f.readline()
print(s)


像这种编码问题,用调试工具是非常容易解决的:

先打一个断点:


进行调试,运行到报错的这一句话时,左边有f对象的详细信息,点击后可以看到encoding参数是cp936,而我们文件里的字符串本身是utf-8的,因此,我们在打开文件的时候要设置打开编码。

修改代码如下即可正常运行:

import sys
f = open('20191206/myfile.txt', encoding='utf-8')
s = f.readline()
print(s)


转载自:https://zhuanlan.zhihu.com/p/142642410