[TOC] #### 1. 认识 Python --- 什么是 Python ? + 1989年,Guido van Rossum(龟叔)为了打发圣诞节假期,开发了一个新的解释程序(Python 雏形) + Python 是一种广泛使用的高级编程语言,由 Guido van Rossum(龟叔)于 1991年首次发布(Python 解释器诞生) + 核心理念:强调代码的可读性和简洁的语法(比如:使用空格缩进来划分代码块,而不是大括号或关键字) + 特点:解释型、面向对象、动态类型语言(它的哲学是:优雅、明确、简单) Python 的应用领域: + Web 开发 + 人工智能与机器学习 + 数据分析与可视化 + 自动化运维与网络爬虫 Python 的版本选择建议: + 强烈建议选择 Python3.x(推荐 Python3.8 及以上版本) + Python2 已于 2020 年正式停止维护,目前所有的现代爬虫库均已全面拥抱 Python3 #### 2. Python 的下载安装 --- Python 环境安装:<https://www.itqaq.com/index/659.html> #### 3. Python 的第一个程序 --- 向世界说你好,应该是全世界,所有程序员入门编程语言时,都会选择的第一个程序 让我们也延续这一份来自程序员之间的浪漫,学习如何使用 Python 像世界说你好 打开终端,输入 `python` 命令,回车后会进入 python 命令终端 ```python print("Hello World") print("你好,世界") ``` #### 4. 理解字面量 --- 字符串(string):又称文本,是由任意数量的字符,如中文、英文、各类符号、数字等组成,所以叫字符的串 + Python 中,字符串需要用双引号包围起来,凡是被引号包围起来的,都是字符串 代码中,被写在代码中固定的值,称之为字面量。常见的字面量类型:整数、浮点数、字符串(目前了解这三类即可) ```python 88 3.14 "hello" ``` 如何基于 `print` 语句完成各类字面量的输出 ? 直接`print(字面量)`,如: ```python print(3.14) print("hello") print("你好,世界") ``` #### 5. 注释的使用 --- 注释:在程序代码中对程序代码进行解释说明的文字。 注释不是程序,不会被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增强程序的可读性 单行注释:以 `#` 开头,右边的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用 多行注释:以 `一对三个双引号` 引起来,来解释说明一段代码的作用使用方法,引号内部均是注释,可以换行 ```python # 这是注释,# 和说明之间最好有一个空格,这是 Python 规范要求 """ 这里是多行注释 一般用于对 python 文件、类或方法的解释 """ ``` #### 6. 理解变量的概念 --- 变量:在程序运行时,能储存计算结果或能表示值的抽象概念。简单来说,变量就是在程序运行时,记录数据用的。 变量的定义格式: ```plaintext 变量名称 = 变量的值 ``` 使用示例 ```python # 定义一个变量,记录钱包的余额 money = 50 # 通过 print 语句,输出变量记录的内容 print("钱包还有:", money) # 可以输出多份数据,使用逗号隔开即可 # 买了一个冰淇淋,花费10元 money = money - 10 print("买了一个冰淇淋,花费10元,还有:", money, "元") ``` #### 7. 数据类型 --- 在学习字面量的时候,我们了解到:数据是有类型的。目前在入门阶段,我们主要接触如下三类数据类型: | 类型 | 描述 | 说明 | | ------------ | ------------ | ------------ | | string | 字符串类型 | 用引号引起来的数据都是字符串 | | int | 整型(有符号) | 数字类型,存放整数。如 -1,10,0 | | float | 浮点型(有符号) | 数字类型,存放小数。如 -3.14,2.5 | `type()` 用于查看变量的数据类型。(变量是没有类型的,它存储的数据是有类型的) ```python # 查看字面量的数据类型 print(type(10)) # <class 'int'> print(type(3.14)) # <class 'float'> print(type('hello world')) # <class 'str'> # 查看变量的数据类型 name = 'liang' name_type = type(name) print(name_type) # <class 'str'> ``` #### 8. 数据类型转换 --- 学习目标:掌握如何在字符串、整数、浮点数之间进行转换,了解转换的注意事项 数据类型转换,将会是我们以后经常使用的功能,如: + 从文件中读取的数字,默认是字符串,我们需要转换成数字类型 + 后续学习的 input() 语句,默认结果是字符串,若需要数字也需要转换 + 将数字转换成字符串,用以写出到外部系统 常见的转换语句: | 语句(函数) | 说明 | | ------------ | ------------ | | int(x) | 将 x 转换为一个整数 | | float(x) | 将 x 转换为一个浮点数 | | str(x) | 将 x 转换为一个字符串 | ```python # 1.将数字类型转换成字符串 num = 100 print(type(num)) num_str = str(num) print(type(num_str)) float_str = str(3.14) print(type(float_str)) # 2.将字符串类型转换成数字 print(int('2')) print(float('3.14')) # 错误示范 # print(int('3.14')) # 这种写法会报错,浮点数的字符串无法使用 int 转换 # print(float('你好')) # 这种写法也会报错,想要转为数字,需要确保字符串内容就是数字才行 # 3.整数和浮点数之间的转换 print(int(3.14)) # 3(浮点数转整数精度会丢失) print(float(12)) # 12.0 ``` #### 9. 标识符(理解) --- 标识符:变量名称、方法名称、类的名称等等。这些名字,我们把它统一称之为标识符,用来做内容的标识。 在 Python 中,标识符命名规则主要有3类:内容限定、大小写敏感、不可使用关键字 标识符命名中,只允许出现这四类元素,其余任何内容都不被允许(内容限定): + 英文 + 中文(不推荐使用) + 数字(数字不可以作为开头) + 下划线 标识符的命名规则 - 大小写敏感: ```python # 字母 a 的大小写,是完全能够区分的 andy = "安迪1" Andy = "安迪2" print(andy) print(Andy) ``` 标识符的命名规则 - 不可使用关键字: + Python 中有一系列单词,称之为关键字。关键字在 Python 中都有特定用途,我们不可以使用它们作为标识符 + 关键字也是有大小写的,和关键字的大小写完全一致才不能使用。比如:可以使用 `false` 作为标识符 列举部分关键字: ```plaintext False True None and as is try while with for yield ``` 标识符(变量、类、方法)命名规范:变量名、类名、方法名。不同的标识符,有不同的规范。 我们目前只接触到了变量,所以目前我们先看变量的命名规范: + 见名知意 + 下划线命名法 + 英文字母全小写 ```python # 多个单词组合变量名,要使用下划线做分隔 firstnumber = 1 # 不推荐 first_number = 2 # 推荐写法 # 变量名中的英文字母,应全部小写 Name = 'liang' # 不推荐 name = 'zhang' # 推荐写法 ``` #### 10. 运算符的使用 --- 算术运算符 | 运算符 | 描述 | 实例 | | ------------ | ------------ | ------------ | | + | 加 | 2 + 3 = 5 | | - | 减 | 6 - 2 = 4 | | * | 乘 | 2 * 4 = 8 | | / | 除 | 12 / 3 = 4.0 | | // | 取整除 | 11 // 2 结果为 5 | | % | 取余 | 11 % 2 结果为 1 | | \*\* | 指数 | 2\*\*3 为 2 的 3 次方 | ```python # 算术运算符(加减乘除) print(2 + 3) print(6 - 2) print(2 * 4) print(12 / 3) # 取整除 print(11 // 2) # 5 # 取余数 print(11 % 2) # 1 # 指数运算 print(2 ** 3) # 8 ``` 赋值运算符 | 运算符 | 描述 | 实例 | | ------------ | ------------ | ------------ | | = | 赋值运算符 | 把 = 号右边的结果赋给左边的变量 | ```python # 赋值运算符 name = 'liang' count = 1 + 2 * 3 ``` 复合赋值运算符 | 运算符 | 描述 | 实例 | | ------------ | ------------ | ------------ | | += | 加法赋值运算符 | c += a 等效于 c = c + a | | -= | 减法赋值运算符 | c -= a 等效于 c = c - a | | \*= | 乘法赋值运算符 | c \*= a 等效于 c = c * a | | /= | 除法赋值运算符 | c /= a 等效于 c = c / a | | %= | 取模赋值运算符 | c %= a 等效于 c = c % a | | \*\*= | 幂赋值运算符 | c \*\*= a 等效于 c = c \*\* a | | //= | 取整除赋值运算符 | c //= a 等效于 c = c // a | ```python # 复合赋值运算符 num = 10 num += 5 num -= 2 num %= 2 ``` #### 11. 字符串的定义与拼接 --- 字符串的三种定义方式:单引号定义法、双引号定义法、三引号定义法 三引号定义法,和多行注释的写法一样,同样支持换行操作 + 使用变量接收它,它就是字符串 + 不使用变量接收它,就可以作为多行注释使用 ```python name = 'liang' name = "liang" name = """liang""" ``` 字符串的引号嵌套 如果想要定义字符串本身,是包含:单引号、双引号自身呢 ?如何写 ? + 单引号定义法:可以内含双引号 + 双引号定义法:可以内含单引号 + 可以使用转义字符(\)来讲引号解除效用,变成普通字符串 ```python str1 = 'how "are" you ?' str2 = "how 'are' you ?" str3 = 'how \'are\' you ?' str4 = "how \"are\" you ?" print(str1) print(str2) print(str3) print(str4) ``` 字符串拼接:如果有两个字符串字面量,可以将其拼接成一个字符串,通过 `+` 号即可完成 ```python # 字符串之间的拼接 name = "liang" print('my name is ' + name) # 注意事项:无法和非字符串类型进行拼接 age = 18 print('my age is ' + age) # 报错:只能将字符串(而非整型)与字符串连接 ``` #### 12. 字符串格式化 --- 字符串拼接存在的问题: ```python # 1.需要拼接的字符串过多时,拼接起来比较麻烦 # 2.并且字符串还无法和数字或其它类型完成拼接 # 所以,有没有其它方式,既方便又支持拼接其它类型呢 ? # 这个方式,就是字符串的格式化 name = "liang" sex = "男" address = "深圳" hobby = "篮球" print("我是:" + name + ", 性别是:" + sex + ", 我住在:" + address + ", 我的爱好:" + hobby) ``` 我们可以通过以下语法,完成字符串和变量的快速拼接(字符串格式化): ```python # % 表示:我要占位 # s 表示:将变量变为字符串放入占位的地方 # 所以,综合起来的意思就是:先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置 name = 'liang' intro = "我是 %s" % name print(intro) ``` 那么,数字类型能不能占位 ?那必须可以,我们来尝试以下代码 + 多个变量占位时,变量要用括号括起来,并按照占位的顺序填入 ```python # 有一个占位时写法: % 变量1 # 有多个占位时写法: %(变量1, 变量2) class_num = 66 avg_salary = 10000 message = "Python 数据分析,第 %s 期,毕业平均薪资:%s" %(class_num, avg_salary) print(message) ``` Python 中,其实支持非常多的数据类型占位,最常用的是如下三类 | 格式符号 | 转化 | | ------------ | ------------ | | %s | 将内容转为字符串,放入占位位置 | | %d | 将内容转为整数,放入占位位置 | | %f | 将内容转为浮点型,放入占位位置 | 字符串格式化 - 数字精度控制:我们可以使用辅助符号 `m.n` 来控制数据的宽度和精度 + m:控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效 + n: 控制小数点精度,要求是数字,会进行小数的四舍五入 ```python # 设置小数点精度。%.2f 表示不限制宽度,只设置小数点精度 2,也就是四舍五入保留2位小数 num = 11.345 print("num2:%.2f" % num) # 11.35 print("num2:%.3f" % num) # 11.345 ``` 字符串格式化 - 快速写法 + 目前通过 % 符号占位已经很方便了,还能进行精度控制 + 可是追求效率和优雅的 Python,是否有更加优雅的方式解决问题呢 ? 那当然:有。通过语法:`f"内容{变量}"` 的格式来快速格式化。 + 这种方式不理会类型,不做精度控制,适合对精度没有要求的时候快速使用 ```python name = "liang" gender = "男" address = "深圳" print(f"我是:{name}, 性别是:{gender}, 我住在:{address}") ``` 字符串格式化 - 表达式的格式化 + 在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码 ```python print("2 * 3 的结果是: %d" % (2 * 3)) print(f"2 * 3 的结果是: {2 * 3}") print(f"字符串在python中的类型是: %s" % type('字符串')) ``` #### 13. 数据输入 --- 学习目标:掌握 `input()` 语句的使用 前面使用的 `print()` 语句,可以将内容输出到屏幕上,与之对应的还有一个 `input()` 语句,用来获取键盘输入 + 数据输出:print + 数据输入:input 使用上也非常简单 + 使用 input() 语句可以从键盘获取输入 + 使用一个变量接收 input() 语句获取的键盘输入数据即可 ```python # 基本使用 print('请告诉我你是谁?') name = input() print("你好,我是:%s" % name) # 输入数字类型 num = input('请告诉我您的银行卡密码') # print("收到银行卡密码:%s" % type(num)) # 证明 input() 获取到的数据都是字符串 num = int(num) # 数据类型转换 print("收到银行卡密码:%d" % num) ```