持续更新中
1. Python 是怎么来的。1989 年圣诞节,荷兰程序员 Guido van Rossum(吉多)为了打发假期,动手写了一个新语言;1991 年发布第一个公开版本 Python 0.9.0。名字来自他喜欢的喜剧团体 Monty Python,和蟒蛇没有关系。2000 年 Python 2 发布,2008 年 Python 3 发布;2020 年起吉多已经从「终身仁慈独裁者」的位置上退休。
2. Python 能做什么。网站后端(豆瓣、Instagram 的一部分都在用)、数据分析与图表、人工智能(机器学习、图像识别、大模型)、自动化办公(批量改文件名、自动填表格、自动发邮件)、爬虫(把网页上的信息自动收集下来)。课上老师现场演示了一个「按歌名下载音乐」的爬虫:输入歌名后先去找无损音质,找不到再找有损音质,文件直接保存到桌面。
3. Python 是解释型语言。我们写的代码需要一个解释器,把它解读成机器能识别的编码才能运行,这一点要和 C++(编译型语言)区分开。考试常考「Python 是一种什么语言」,答案就是解释型语言。
4. IDLE 的交互式 Shell。窗口标题里带 Shell,提示符是 >>>,可以在这里输入任何运算直接得到结果(输入 1 + 1 回车得到 2,输入 print(1) 输出 1)。缺点:窗口一关,写过的代码就没了。
5. IDLE 的编辑器窗口(写程序用)。点菜单 File → New File 新建一个文档,可以写很多行代码;写完按 F5(或 Run → Run Module)运行,第一次运行会提示先保存文件(比如文件名就叫「第一个Python程序」),保存好之后结果显示在 Shell 窗口里。写多行代码时一般要换行,这样更好阅读。
6. print() 输出。print 的作用是把括号里的内容输出到 Shell 里。括号必须是一对英文括号,写成中文括号会直接报错;要输出的内容(中文、数字、英文都一样)要用引号包起来,单引号双引号都可以,但必须成对——不能一个英文单引号配一个英文双引号。
7. 引号里的内容不做运算。print('1+1') 会原封不动输出 1+1;把引号去掉写成 print(1+1),才会算出 2。也就是说引号里的内容写什么就输出什么。
8. input() 输入。要让用户从键盘输入一个值,就要用 input。它和 print 一样必须用一对英文括号包起来,括号里可以写提示文字,例如 input('请输入你的年龄:')。只写 input 而不写输出,运行时它只会问你,什么都看不到。
9. 变量与赋值。把输入的年龄存下来:age = input('请输入你的年龄:'),再用 print(age) 就能把它打印出来。打印变量不能加引号,加了引号就会把字母 age 原样输出。变量名不需要加引号;= 不表示「判断相等」,而是赋值——把右边的值放进左边这个盒子里,变量就像一个盒子。
10. 类型转换 int()。input 从键盘拿到的一律是字符串型:a 里存的是带引号的 '13',所以直接写 a + 1 会立刻报错(字符串和整数不能相加)。改成 age = int(input('请输入你的年龄:')),int() 把字符串转成整数型,之后才能参与运算(13 + 1 = 14)。想确认类型可以用 type()。
11. 加减乘除。加法就是 +、减法就是 -;乘法不一样,要写成 *(按住 Shift 再按 8);除法写成 /,结果一定是小数。另外还有 // 整除(只保留整数部分)、% 取余(10 % 4 得 2)、** 乘方(2 ** 10 得 1024)。
12. 运算优先级。和数学课一样:先乘除、后加减,有括号先算括号。2 + 3 * 4 得 14,(2 + 3) * 4 得 20;** 的优先级最高。拿不准的时候加括号永远是最聪明的做法——括号不会让程序变慢,只会让代码更清楚。
13. print 输出多个内容。用逗号分隔多项时,Python 会自动在中间补一个空格:print(name, '今年', age, '岁') 输出「小明 今年 10 岁」。如果改用 + 拼接字符串,就要先用 str() 把数字转成字符串(和 int() 反过来),而且加号拼接的地方没有空格。另外还有三个小技巧:逗号分隔会自动加空格、sep 改分隔符、end 改结尾(默认是换行)。
14. 综合小实战:加法计算器。a = int(input('请输入第一个数:'))、b = int(input('请输入第二个数:'))、print(a, '+', b, '=', a + b)。这个程序包含了最基本的一套骨架:输出 → 输入 → 处理 → 输出。最后别忘了 #:井号后面的内容是注释,不会进入程序参与运算。
1. Python 的诞生。1989 年圣诞节,荷兰程序员 Guido van Rossum(吉多)为了打发假期写出了这个新语言;1991 年发布第一个公开版本 Python 0.9.0;名字取自他喜欢的喜剧团体 Monty Python,和蟒蛇没关系;2000 年 Python 2、2008 年 Python 3 先后发布。
2. Python 能干什么。网站后端、数据分析与图表、人工智能、自动化办公(批量改文件名、自动填表格)、爬虫、游戏与硬件。语法接近英语、代码短、现成的库特别多,这是它流行的三个原因。
3. 解释型语言。代码要靠解释器解读成机器能识别的编码才能运行,这一点和 C++(编译型语言)区分开。考试会问「Python 是一种什么语言」,答案是解释型语言。
4. IDLE 的两个窗口。提示符 >>> 的交互式 Shell 适合试一试、算个数,输入一行按回车立刻出结果,关掉窗口代码就没了;编辑器窗口(File → New File)适合写完整的程序,保存成 .py 文件后按 F5 运行,结果显示在 Shell 里。
5. print() 输出。功能是把括号里的内容输出到屏幕。括号必须成对、必须是英文括号;要输出的内容要加引号,引号也必须成对,不能一个单引号配一个双引号。引号里的内容不做任何运算:print('1+1') 输出 1+1,去掉引号 print(1+1) 才输出 2。引号内的字符可以是中文、字符或任意符号。
6. input() 输入。从键盘获取一个信息存储到内存中,括号里可以写提示文字,例如 input('请输入你的年龄:')。光有 input 而没有输出设置,运行时只会问你,不会有任何输出。
7. 变量与赋值。age = input('请输入你的年龄:') 的作用就是把输入的值赋给 age,age 就像一个盒子,把输入存进去再打印出来。变量不需要加引号,打印变量时也千万不能加引号,加了引号就会把字母原样输出。= 的意思不是判断是否相等,而是把一个值赋给另外一个。等号两边的空格是书写规范,加不加不影响运算。
8. 类型转换 int()。input 里输入的值是字符串型(内存里存的是带引号的 '13'),所以直接让它加 1 会立刻报错。用 a = int(input('请输入一个数字:')) 把字符串型转成数字型,a 里存的才是数字,之后才能参与运算。
9. 加减乘除。加号、减号和数学一样;乘号写作 *(不是 ×),除号写作 /(结果一定是小数);// 是整除、% 是取余、** 是乘方。优先级和数学一致:先乘除后加减、有括号先算括号,** 最高。拿不准就加括号。
10. 拼接与输出细节。print(name, '今年', age, '岁') 用逗号分隔多项时,Python 会自动在中间加一个空格;用 + 拼接要先 str() 转型,而且加号拼接没有空格。还有三个小技巧:逗号自动加空格、sep 改分隔符、end 改结尾。
11. 加法计算器(程序骨架)。a = int(input('请输入第一个数:')) → b = int(input('请输入第二个数:')) → print(a, '+', b, '=', a + b)。一个完整的程序基本就是:输出 → 输入 → 处理 → 输出。
12. 注释。一个 # 号后面可以写一堆说明,注释不会进入程序参与运算,是写给人看的。
1. 先花两分钟复习:print(值) 把东西显示出来;input(提示) 接收键盘输入,而它拿到的是字符串,要算数得先用 int() 或 float() 转换;= 是赋值;// 整除、% 取余、** 乘方。
2. 布尔值:只有两个答案。它以 19 世纪数学家 George Boole 的名字命名,表示「真」和「假」。Python 里写作 True 和 False,首字母必须大写,写成 true 或 TRUE 会报 NameError。
3. 用 type() 看类型:例如 a = '小明' 之后执行 type(a),它会告诉你这是字符串型(<class 'str'>)。判断一个东西是不是布尔值,也可以用 type() 看。
4. 布尔值是程序的十字路口:程序靠它决定「往左走还是往右走」——条件成立(True)就执行某段代码。
5. 比较运算:结果是布尔值。print(3 > 2) 输出 True;print(3 == 2) 输出 False。注意:一个 = 是赋值,两个 == 才是判断是否相等,这是初学者最容易犯的错误,写的时候多看一眼。
6. 字符串也能比大小:只要两边类型相同(都是字符串型)就可以比较,按字母表顺序来,例如 'a' < 'b' 返回 True(因为 a 在 b 前面)。
7. 逻辑运算:把条件组合起来。and 两边都真才为真(True and False → False);or 一个真就为真(True or False → True);not 取反(not True → False)。not a == b 的意思是「a 等于 b 这句话是不对的」,如果 a 确实不等于 b,这句话成立,就返回 True。
8. if / else 判断:if 是「如果」,后面跟条件,if 和条件之间要有空格,不空会直接报错;条件后面必须加冒号;条件成立才执行下面缩进的代码(if a < b: print('你好'))。else 是「否则」,后面不能跟条件,直接跟冒号,它管的是「条件不成立时」的情况。
9. 循环:为什么要用它。任务要输出 1 到 1000 的所有整数,不用循环得写 1000 行 print,打字打到崩溃;用循环只要两行。写法是 for i in range(...):i 是循环变量(名字可以换成 j、k 等任意一个),in range 不能缺,它决定循环多少次。
10. range 从 0 开始:所以循环第一次 i 是 0、第二次是 1,第一行打印出来的就是 0,运行起来非常快。本课小结:布尔值只有 True 和 False 且首字母大写;== 是比较、= 是赋值;and / or / not 用来组合条件;for 循环配 range(起点、终点、步长)。while 循环、break 和 continue 留到下一课。
1. 复习上一课。print(值) 把东西显示出来;input(提示) 接收键盘输入,拿到的是字符串,要算数得先用 int() 或 float() 转换;= 是赋值、// 是整除、% 是取余、** 是乘方。
2. 布尔值。以 19 世纪数学家 George Boole 的名字命名,表示真和假。Python 里写作 True 和 False,首字母必须大写,写成 true 或 TRUE 会报 NameError。判断一个东西是不是布尔值,可以用 type()。布尔值是程序的十字路口,程序靠它决定往左走还是往右走:条件成立(True)就执行某段代码。
3. 比较运算。比较的结果是布尔值。print(3 > 2) 输出 True;print(3 == 2) 不能写一个等号,要写两个等号,输出 False(因为 3 不等于 2,条件不成立)。一个等号是赋值,两个等号才是判断是否相等,这是初学者容易犯的错误,学习时多看一眼。字符串之间也能比较:A 和 B 都是字符串型,类型相等就可以比较,按字母表顺序 A 比 B 小,所以返回 True。
4. 逻辑运算。and 要保证两边都成立才为真,True and False 结果是 False;or 只要一边成立就判定为正确,True or False 结果是 True;not 是取反,not a == b 的意思就是「a 等于 b 这句话是不对的」,如果 a 确实不等于 b,这句话成立,所以返回 True。
5. if / else 判断。if 就是「如果」,例如先给 a 赋值、b 赋值,再写 if a == b:。if 和条件之间要有空格,不空会直接报错;条件后面必须加冒号,冒号不能忘。条件成立才执行下面缩进的语句(if a < b: print('你好'))。有 if 就有 else:else 后面不需要、也不能跟条件,直接跟一个冒号,它管的是「条件不成立」的情况——a 不等于 b 时,就打印 else 下面的内容。
6. 循环与 for。任务:输出 1 到 1000 的所有整数。不用循环要写 1000 行 print,用循环只写两行。公式记一下:for i in range(...)。i 就是一个变量(和前面赋值的变量一样),你可以把它改成 j、k 等任何一个名字;for ... in range 不能缺,range 里的数字就是循环多少次。要打印所有整数,就把 i 打印出来。
7. range 从 0 开始。循环第一次 i 取 0、第二次取 1,所以打印出来的第一个数就是 0,运行起来非常快。
8. 本课小结。布尔值只有 True 和 False,首字母必须大写;== 是比较、= 是赋值;and / or / not 用来组合条件;for 循环配 range(起点、终点、步长)。while 循环、break 与 continue 下节课再讲。
1. 先复习 for 循环:for i in range(100) 里,i 第一次取 0、第二次取 1,一直取到 99——取不到 100,但循环一共跑了 100 次。
2. continue:跳过本次循环。写成 for i in range(...): if i == 10: continue,程序会先判断:i 等于 0 时打印 0,i 等于 1 时打印 1……当 i 等于 10 时,continue 让它跳过本轮剩下的代码,直接进入下一轮。运行结果里 0 到 9 都在,唯独没有 10,就说明 10 被跳过了。
3. while 循环:条件成立就一直做。while 的写法和 if 很像,区别是它会反复执行。如果直接写 while 2: print(1),它就会一直打印 1、永远停不下来——这就是死循环。
4. 给 while 一个停止条件。为了避免程序卡死,一般要先设一个变量:a = 0,循环里让 a = a + 1(也可以简写成 a += 1,意思完全一样),当 a 等于 10 的时候就用 break 跳出循环。
5. break:立刻跳出整个循环。程序执行到 break 就从循环里跳出去,跳出之后会继续执行循环外面的语句——比如先打印了 9 个 1,跳出后再打印一句「程序执行完了」。
6. 缩进决定代码属于谁。while 和 for 只会执行它下面缩进的语句;break 写在 if 里面,属于「把 if 嵌套进 while」:第一行是 while,缩进进去的是它的代码,其中 break 又是 if 的子语句,同样也在 while 里面。
7. 缩进是 Python 的规矩。Python 用缩进来表示哪些代码属于同一块,其他语言常用大括号;标准做法是4 个空格,不要用 Tab(IDLE 里按 Tab 会自动变成 4 个空格,可以放心用)。同一块代码的缩进必须完全一致,多一个空格都会报错(IndentationError)。
8. 冒号和括号一个都不能漏。for i in range(...) 后面必须有冒号,range 的括号也不能省——for 有括号也有冒号;while 没有括号但也要冒号;if 后面要冒号;else 也是冒号,但后面不跟条件。
9. 常见报错怎么修:NameError 是用了没定义过的名字,比如直接写 print(abc)(第一节课就踩过这个坑);TypeError 是类型对不上,报错信息会告诉你 not int to str 之类的提示,给它加一个 int() 转换就行。
10. 把它们组装成程序。像加法计算器这样的完整程序其实都不难,把输入、处理、输出三块拼起来就行——先想清楚再写代码,能省掉一半的调试时间。
1. for 循环复习。for i in range(100):i 第一次是 0、第二次是 1,一直取到 99(取不到 100),循环一共 100 次。
2. continue(跳过本次)。for i in range(...): 里面写 if i == 10: continue,则 0~9 都会打印,轮到 10 时跳过本轮剩下的代码、直接进入下一轮,所以输出里没有 10。
3. while 循环(条件成立就一直做)。写法和 if 很像,但它会反复执行;while 2: print(1) 会一直打印 1,停不下来,这就是死循环。
4. 给循环一个结束的条件。先设 a = 0,循环里写 a = a + 1(简写 a += 1,意思一样),当 a == 10 时用 break 跳出。
5. break(跳出整个循环)。从循环里跳出去以后,会继续执行循环外面的语句(比如打印完 9 个 1 之后再输出一句「程序执行完了」)。
6. 缩进就是「代码的归属」。while / for 只会执行它下面缩进的语句;break 是 if 的子语句、同时也在 while 里面,这种写法叫嵌套。
7. 缩进的规矩。Python 用缩进表示哪些代码属于同一块(其他语言用大括号);标准是 4 个空格,不要用 Tab,IDLE 里按 Tab 会自动变成 4 个空格;同一块代码的缩进必须完全一致,多一个空格都会报 IndentationError。
8. 标点别漏。for i in range(...) 后面的冒号不能漏,range 的括号也不能省(for 有括号、有冒号;while 没括号、有冒号;if 有冒号;else 也有冒号但后面不跟条件)。
9. 常见报错。NameError——用了没定义过的名字,例如直接写 print(abc);TypeError——类型对不上,加个 int() 转换就能修。
10. 小结。for 适合次数已知的重复,while 靠条件结束(别忘了在循环里改变量),continue 跳过本轮、break 跳出整个循环;写程序先想清楚「输入 → 处理 → 输出」再动手。
更多功能持续更新中