回顾
时间过的很快,眨眼间一周的学习生活已经结束,我们上次讲的内容主要是基本的数据类型、用户交互以及格式化输出。今天,我们主要学习的是基本运算符和流程控制,这部分的内容也算是比较重要的,万丈高楼平地起,这类的话是不想多说了,希望大家还是珍惜时光吧,同样的警醒我自己。
第二章 Python语法入门
基本运算符
算数运算符
作用:专门用来做数据运算,使用它可以想人脑一样进行加减乘除运算
字符串相加就是拼接操作
//:只保留整数部分,向下取整
%:取模,取余数
**:幂运算
比较运算符
作用:专门用来判断,使用它可以像人脑一样进行判断
比较大小:
<,>,==,<=,>=,!=
返回的值是布尔值
赋值运算符
= : 变量的赋值
-
增量赋值
age = age + 1
age += 1
-
链式赋值
-
交叉赋值
将m,n赋值给对方
方式一 借助第三个参数
方式二 交叉赋值
方式三 加减数字法
-
解压赋值
对应的变量名多一个、少一个都不行
补充:可以将首或者尾的元素分配给对应变量
逻辑运算符
not 、and 、or
区分优先级:not > and > or
混用的情况下尽量使用括号
如果单独就只是一串and链接,或者说单独就只是一串or链接,按照从左到右的顺序依次运算即可(偷懒原则)
短路运算:偷懒原则,偷懒到哪个位置
10 > 3(Ture) and Ture (Ture)
10 > 3 and 10 (10)
10 > 3 and 0 (0)10 > 3 and 10 and Flase (Flase)
10 > 3 and 10 and True (True)
10 > 3 and 10 and None and 10 (None)
(10 > 3 and 10 and 0 and 10) or (10 > 3 and 1 == 1) (True)
成员运算符
in : 用字符串的情况下,判断字符串是否存在一个大字符串中
列表 也适用
字典 判断的是 key
身份运算符
is 判断的是id是否相等
== 判断的是值是否相等值相等的,内存地址不一定相等
内存地址相等的,值一定相等
流程控制
控制事物的执行流程总共有三种:
1.顺序流程我们之前写的代码就是一种顺序结构,按照顺序一一执行
2.分支结构
就是按照条件的成功与否,决定执行哪个分支
3.循环结构
重复执行某一个流程
-
if语法判断
为什么要有if判断?
让计算机具有人的某种功能语法:
if 条件1:
代码
elif 条件2:
代码
elif 条件3:
代码
else:
代码
补充
什么是条件?什么可以当做条件?为什么要用条件?
第一大类 显式布尔值:True、Flase
第二大类 隐式布尔值:所有数据类型,其中0、None、空(空字符串、空列表、空字典)为假
第三大类:比较运算
深浅copy
浅拷贝
是把原列表第一层的内存地址不加区分完全copy一份给新列表(不可变类型,一旦有可变类型,那么两个容器容器就黏到一起了)
list2 = list1.copy()
容器的内存地址不同,但是里面元素的内存地址相同
深拷贝
把列表里的值加以区分(区分开可变类型和不可变类型)copy一份新的列表
import copy
list3 = copy.deepcopy(list1)
新列表里面的东西是针对不可变类型的内存地址是相同的,但是可变类型的内存地址是不同的
产生新的容器,真正的值还是原来的
原列表都是不可变类型的值,那么copy一下,在新列表之中更改数据,影响不到旧列表,因为都是产生新的值,一旦有可变类型就绑定到一起
可变不可变类型
可变类型:值改变,id不变,证明改的是原值,证明原址值是可以被改变的
不可变类型:值改变了,id也变了,证明是产生了新的值,压根没有改变原值,证明原值是不可以被修改的