文章目录
1. 初始Python
1.1 Python安装
官网下载:https://www.python.org/downloads
注意:这里是在windown操作系统下载python,请根据自己设备平台自行选择
检查是否安装成功:在终端输入 python
或python -V
查看版本
1.2 Python解释器
- 安装Python环境,本质上,就是在电脑中,安装:Python解释器程序
- Python解释器,是一个计算机程序,用来将Python代码翻译为计算机认识的01机器码,并提交给计算机执行。
可以将Python代码,写入一个以 .py
结尾的文件中,使用python命令去运行它;注意:运行py文件,不要在python命令行中执行(也就是不要出现>>>
),否则报错
1.3 安装和配置PyCharm工具
- PyCharm集成开发工具(IDE),是当下全球Python开发者,使用最频繁的工具软件
- 官网下载:https://www.jetbrains.com/pycharm/download/
安装步骤比较简单,选完安装路径,再点如下配置,即可。
接下来创建一个工程
2. 基础语法
2.1 注释
- 注释:在程序代码中对程序代码进行解释说明的文字。
- 作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,能够大大增强程序的可读性。
单行注释:以 #
开头,#
右边 的所有文字当作说明
注意:#
号和注释内容一般建议以一个空格隔开
# 这是单行注释
print("hello")
多行注释: 以 一对三个 双引号 引起来 """注释内容"""
来解释说明一段代码的作用使用方法
"""
这是
多行
注释
"""
print("hello")
2.2 字面量
- 字面量:在代码中,被写下来的的固定的值,称之为字面量
- 常见的字面量类型:整数、浮点数、字符串等等
10
10.3
"凉宫"
2.3 变量
变量:在程序运行时,能储存计算结果或能表示值的抽象概念。变量存储的数据,是可以发生改变的。
格式:变量名称 = 变量的值
money = 50
money = money - 10
print("钱包还有", money)
- 存储变量的目的是为了:重复使用
- 变量没有类型:变量引用数据才有类型
- 变量必须先赋值再使用,否则报错
2.4 标识符
标识符:是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名
Python中,标识符命名的规则主要有3类:
-
内容限定
- 标识符命名中,只允许出现:
- 英文
- 中文(不推荐)
- 数字(但不可以开头)
- 下划线(_)
-
区分大小写
-
不可使用关键字:Python中有一系列单词都有特定用途,称之为关键字
False | True | None | and | as | assert |
---|---|---|---|---|---|
break | class | continue | def | del | elif |
else | except | finally | for | from | global |
if | import | in | is | lambda | nonlocal |
not | or | pass | raise | return | try |
while | with | yield | … |
标识符规范:
- 见名知意
- 多个单词组合变量名,要使用下划线做分隔
- 命名变量中的英文字母,应全部小写
2.5 运算符
1、算术(数学)运算符
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
// | 取整除,向下取整 -10 // 4 为 -3 |
% | 取余 |
** | 指数 |
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 |
4、关系运算符
运算符 | 描述 | 示例 |
---|---|---|
== | 判断内容是否相等;满足为True,不满足为False | 如a=3,b=3,则(a == b) 为 True |
!= | 判断内容是否不相等;满足为True,不满足为False | 如a=1,b=3,则(a != b) 为 True |
> | 判断运算符左侧内容是否大于右侧;满足为True,不满足为False | 如a=7,b=3,则(a > b) 为 True |
< | 判断运算符左侧内容是否小于右侧;满足为True,不满足为False | 如a=3,b=7,则(a < b) 为 True |
>= | 判断运算符左侧内容是否大于等于右侧满足为True,不满足为False | 如a=3,b=3,则(a >= b) 为 True |
<= | 判断运算符左侧内容是否小于等于右侧满足为True,不满足为False | 如a=3,b=3,则(a <= b) 为 True |
比较运算符返回的是布尔值
5、成员运算符
运算符 | 描述 | 示例 |
---|---|---|
in | 判断 in 右侧的内容是否包含了左侧的内容,包含返回True,不包含返回False | 'a' in 'abc' ; 为True |
not in | 判断 not in 右侧的内容是否不包含左侧内容,不包含返回True,包含返回False | 'a' not in ['a','b','c'] ; 为False |
2.6 数据输入输出
- 数据输出:使用
input()
可以从键盘获取输入 - 数据输入:使用
print()
可以完成将内容(字面量、变量等)输出到屏幕上
print('请输入名字')
name = input()
print(name)
name2 = input('请再次输入名字:')
print(name2)
- 可以使用一个变量接收(存储)input语句获取的键盘输入数据
input()
函数可以在要求使用者输入内容前,输出提示内容的input()
函数的返回值永远是字符串类型- print函数调用,在第二个参数传入
end =''
可不换行打印如:print('凉宫', end='')
2.7 数据类型
Python中常用的有6种值(数据)类型
类型 | 描述 | 说明 |
---|---|---|
数字(Number) | 整数(int) | 如:10、-10 |
浮点数(float) | 如:13.14、-13.14 | |
复数(complex) | 如:4+3j,以j结尾表示复数 | |
布尔(bool) | 即真和假,True表示真,False表示假。True本质上是一个数字记作1,False记作0 | |
字符串(String) | 描述文本的一种数据类型 | 字符串(string)由任意数量的字符组成 |
列表(List) | 有序的可变序列 | Python中使用最频繁的数据类型,可有序记录一堆数据 |
元组(Tuple) | 有序的不可变序列 | 可有序记录一堆不可变的Python数据集合 |
集合(Set) | 无序不重复集合 | 可无序记录一堆不重复的Python数据集合 |
字典(Dictionary) | 无序Key-Value集合 | 可无序记录一堆Key-Value型的Python数据集合 |
2.7.1 type()函数
可以通过type()
语句来得到数据的类型
语法:type(被查看类型的数据)
print(type(10))
print(type(-10.2)) # 既可以查看的都是<字面量>的类型
s1 = "凉宫" # 也可查看变量中存储的数据类型
print(s1)
"""
输出结果如下:
<class 'int'>
<class 'float'>
<class 'str'>
"""
type()
查看的是变量存储的数据的类型。变量无类型,但是它存储的数据有类型
2.7.2 字符串
- 字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串
- Python中,字符串需要用双引号
""
包围起来
字符串类型的不同定义方式
# 双引号定义
text1 = "凉宫"
# 单引号定义
text2 = '凉宫'
# 三引号定义
text3 = """在三个引号
包围圈中都算是字符串
"""
2.7.3 数据类型转化
函数 | 说明 |
---|---|
int(x) |
将x转换为一个整数 |
float(x) |
将x转换为一个浮点数 |
str(x) |
将对象 x 转换为字符串 |
注意:
- 任何类型,都可以通过
str()
,转换成字符串 - 字符串内必须真的是数字,才可以将字符串转换为数字
- 整数可转浮点数,浮点数也可以转整数,但会丢失精度
2.8 字符串扩展
2.8.1 字符串的三种定义方式
name = '凉宫'
name = "凉宫"
name = """凉宫"""
三引号定义法,和多行注释的写法一样,同样支持换行操作。两者区别:
- 使用变量接收它,它就是字符串
- 不使用变量接收它,就可以作为多行注释使用。
需求:想要定义的字符串本身是包含:单引号、双引号自身
- 单引号定义法,可以内含双引号
- 双引号定义法,可以内含单引号
- 可以使用转移字符
\
来将引号解除效用,变成普通字符串
2.8.2 字符串拼接
两个字符串通过 +
号,可以将其拼接成一个新的字符串
# 字面量之间的拼接
name = '凉' + '宫'
# 变量与字面量
greet = 'hi, i am ' + name
# 变量与变量
c = name + greet
注意:字符串不可以通过 +
号与其它变量类型如数字类型进行拼接,否则报错
补充知识:
在字符串中,特殊符号:\t,效果等同于在键盘上按下:tab键。可以让多行字符串进行对齐
2.8.3 字符串格式化
如下 %s
是个占位符:其中 %
表示:这里要占位,s
表示:将变量变成字符串放入占位的地方
name = '凉宫'
hobby = '听音乐'
msg = '我是%s' % name
greet = 'hello, %s, 爱好是%s' % (msg, hobby)
注意:若有多个变量占位,变量要用括号括起来,并按照占位的顺序填入
Python中,支持非常多的数据类型占位,常用的如下
格式符号 | 说明 |
---|---|
%s |
将内容转换成字符串,放入占位位置 |
%d |
将内容转换成整数,放入占位位置 |
%f |
将内容转换成浮点型,放入占位位置 |
2.8.4 格式化的精度控制
可以使用辅助符号 m.n
来控制数据的宽度和精度
m
,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效.n
,控制小数点精度,要求是数字,会进行小数的四舍五入
三个示例:
%5d
:表示将整数的宽度控制在 5 位,如数字 11,被设置为5d
,就会变成:[空格][空格][空格]11
,用三个空格补足宽度。%5.2f
:表示将宽度控制为 5,将小数点精度设置为 2;小数点和小数部分也算入宽度计算。
如,对11.345
设置了%7.2f
后,结果是:[空格][空格]11.35
。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35%.2f
:表示不限制宽度,只设置小数点精度为 2,如 11.345 设置%.2f
后,结果是 11.35
num1 = 11
num2 = 11.345
print('%5d' % num1)
print('%7.2f' % num2)
print('%.2f' % num2)
2.8.5 字符串格式化方式2
通过语法 f"内容{变量}"
的格式来快速格式化
name = '凉宫'
hobby = '听音乐'
print(f"我是{
name},我喜欢{
bobby}")
注意:这种写法不做精度控制也不理会类型,适用于快速格式化字符串
2.8.6 对表达式进行格式化
- 表达式:一条具有明确执行结果的代码语句(能放在 赋值=号 右边的)
- 表达式格式化:在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码
print('1 * 2的结果为:%d' % (1 * 2))
print(f"1 * 3的结果为:{
1 * 3}")
2.8.7 format格式转化
【示例】
'圆的面积为{0:.1f}平方米, 周长为{1:.1f}米'.format(22.33,16.75)
{}
中的 0,表示对应的参数序号:
冒号是分隔符,冒号后面为输出格式.1f
表示保留一位小数的浮点数
设置项(冒号后面的部分) | 可选值 |
---|---|
<宽度> | 一个整数, 值格式化后整个字符串的字符个数 |
<填充字符> | * ,= ,- 等,但只能是一个字符,默认为空格 |
<对齐方式> | ^ (居中);< (左对齐);> (右对齐) |
'{:-^10}'.format('hello') # --hello---
'{:*<10}'.format('hello') # hello*****
'{:=>10}'.format('hello') # =====hello
2.8.8 转义字符
字符 | 描述 |
---|---|
\ (在行尾时) |
续行符 |
\\ |
反斜杠符号 |
\' |
单引号 |
\" |
双引号 |
\n |
换行 |
\t |
横向制表符 |
2.9 布尔类型
布尔类型的字面量:
True
表示真(是、肯定)False
表示假 (否、否定)
布尔类型不仅可以自行定义,也可以通过比较运算符进行比较运算得到
bool_1 = True
bool_2 = False
num1 = 10
num2 = 11
bool_3 = num1 <= num2
3. 判断语句
3.1 if语句的基本格式
if 要判断的条件
条件成立时,要做的事情
# 例如
age = 20
if age >= 18:
print("您已成年")
print("时间过得真快")
注意点:
- 判断语句的结果,必须是布尔类型True或False
- True会执行if内的代码语句,False则不会执行
- 归属于
if
判断的代码语句块,需在前方填充4个空格缩进 - 重要:Python通过缩进判断代码块的归属关系。
3.2 if else 语句
if 条件:
满足条件要做的事1
...省略
else:
不满足条件时要做的事1
...省略
# 示例
age = 20
if age >= 18:
print("您已成年,购票无优惠")
else:
print("您未成年,购票打半折。")
注意点:
- else后,不需要判断条件
- 和
if
的代码块一样,else的代码块同样需要4个空格作为缩进
3.3 if elif else语句
if 条件1:
满足条件1要做的事
elif 条件2:
满足条件2要做的事
...
elif 条件N:
满足条件N要做的事
else:
所有条件不满足时要做的事
# 示例
age = 20
if age < 12:
print("购票免费")
elif age < 18:
print("购票半折")
else:
print("购票无优惠")
注意:
elif
语句可以写多个- 判断是互斥且有顺序的,上一个满足后面的就不会判断了。例如:满足条件1将不会处理条件2和3;满足条件2,将不会理会3;1、2、3均不满足,进入else
else
也可以省略不写,效果等同3个独立的if
判断- 空格缩进不可省略
3.4 判断语句的嵌套
许多逻辑的判断,是嵌套的,多层次的。对于这种需求可以:自由组合 if elif else
,完成特定需求的要求
age = 11
year = 1
level = 1
if age >= 18:
print("你是成年人")
if age < 30:
print("你的年龄达标了")
if year > 2:
print("恭喜你,年龄和入职时间都达标,可以领取礼物")
elif level > 3:
print("恭喜你,年龄和级别达标,可以领取礼物")
else:
print("不好意思,尽管年龄达标,但是入职时间和级别都不达标。")
else:
print("不好意思,年龄太大了")
else:
print("不好意思,小朋友不可以领取。")
嵌套的关键点,在于:空格缩进;通过空格缩进,来决定语句之间的:层次关系
4. 循环语句
4.1 while循环
4.1.1 基础语法
只要条件满足会无限循环执行
while 条件
满足条件要做的事1
满足条件要做的事2
...省略
# 示例
i = 0
while i < 100:
print("凉宫,suki")
i += 1
注意点:
while
的条件需得到布尔类型结果,True表示继续循环,False表示结束循环- 需要设置循环终止的条件,如 i += 1 配合 i < 100 ,就能确保100次后停止,否则将无限循环
- 空格缩进和if判断一样,都需要设置
4.1.2 嵌套应用
嵌套应用:循环内套循环
while 条件1:
满足条件1要做的事1
满足条件1要做的事2
while 条件2:
满足条件2要做的事1
满足条件2要做的事2
满足条件1要做的事3
# 示例
i = 1
while i <= 20:
print(f"今天是第{
i}天,准备表白.....")
# 内层循环的控制变量
j = 1
while j <= 5:
print(f"送给凉宫第{
j}只玫瑰花")
j += 1
print("凉宫,suki")
i += 1
print(f"坚持到第{
i - 1}天,表白成功")
注意点:
- 多层循环语句的嵌套,基于空格缩进来决定层次关系
- 注意条件的设置,避免出现无限循环(除非真的需要无限循环)
4.2 for循环
while
循环的循环条件是自定义的,自行控制循环条件
for
循环(也称遍历循环)是一种”轮询”机制,是对一批内容进行”逐个处理”
4.2.1 基础语法
解释:从待处理数据集中:逐个取出数据赋值给临时变量
for 临时变量 in 待处理数据集(可迭代对象):
循环满足条件时执行的代码
# 示例
name = "凉宫haruhi"
for x in name:
# 将name的内容,挨个取出赋予x临时变量
# 就可以在循环体内对x进行处理
print(x)
- 同 while 循环不同,for 循环是无法定义循环条件的。只能从被处理的数据集中,依次取出内容进行处理。
- 理论上讲,Python的
for
循环无法构建无限循环(被处理的数据集不可能无限大) - 待处理数据集,严格来说,称之为:可迭代类型
- 可迭代类型指,其内容可以一个个依次取出的一种类型,包括字符串、列表、元组等
- for 循环语句,本质上是遍历:可迭代对象。
4.2.2 嵌套应用
同 while
一样,for
循环也支持嵌套使用
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
# 示例:for循环打印九九乘法表
for i in range(1, 10):
# 通过内层循环控制每一行的数据
for j in range(1, i + 1):
# 在内层循环中输出每一行的内容
print(f"{
j} * {
i} = {
j * i}\t", end='')
# 外层循环可以通过print输出一个回车符
print()
for
循环和 while
循环可以相互嵌套使用
4.2.3 range语句
range(num)
:获取一个从0开始,到num结束的数字序列(不含num本身)range(num1,num2)
:获得一个从num1开始,到num2结束的数字序列(不含num2本身)range(num1, num2, step)
:获得一个从num1开始,到num2结束的数字序列(不含num2本身),数字之间的步长,以step为准(step默认为1)
range(5) # 取得的数据是:[0, 1, 2, 3, 4]
range(5, 10) # 取得的数据是:[5, 6, 7, 8, 9]
range(5, 10, 2) # 取得的数据是:[5, 7, 9]
for i in range(5):
print(i)
4.2.4 变量作用域
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
for i in range(5):
print(i)
print(i) # 这里的i可以正常输出
- 临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部
- 如果在for循环外部访问临时变量,实际上是可以访问到的,在编程规范上,是不允许、不建议这么做
- 如果实在需要在循环外访问循环内的临时变量,可以在循环外预先定义
4.3 循环中断
循环中断用以对循环进行临时跳过和直接结束
4.3.1 break
- break 关键字用于直接结束所在循环
- break 可以用于 for 循环和 while 循环,效果一致
- break 关键字同样只可以控制它所在的循环永久中断,不会影响到外层的循环(若有)
# 只输出了 0 1 2
for i in range(5):
if i == 3:
break
print(i)
4.3.2 continue
- continue 关键字用于:中断本次循环,直接进入下一次循环
- continue 可以用于 for 循环和 while 循环,其效果一致
- continue 关键字只可以控制它所在的循环临时中断,不会影响到外层的循环(若有)
# 会跳过输出3
for i