Python ( 学习基础篇 第二部 )
目录
运算符
算数运算符
比较运算符
赋值运算符
位运算符
逻辑运算符
成员运算符
身份运算符
Python 中运算符的优先级
运算符总结
基础语法
判断类型 isinstence
代码块
流程控制
while循环
双向循环的金典例题
for循环
运算符
算数运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 – 两个对象相加 | a + b 输出结果 31 |
– | 减 – 得到负数或是一个数减去另一个数 | a – b 输出结果 -11 |
* | 乘 – 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 210 |
/ | 除 – x 除以 y | b / a 输出结果 2.1 |
% | 取模 – 返回除法的余数 | b % a 输出结果 1 |
** | 幂 – 返回x的y次幂 | a**b 为10的21次方 |
// | 取整除 – 向下取接近商的整数 | 9//2>>>4 -9//2>>>-5 |
“
比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 – 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于比较两个对象是否不相等 | (a != b) 返回 True。 |
> | 大于 – 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 – 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价 | (a < b) 返回 True |
>= | 大于等于 – 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 – 返回x是否小于等于y。 | (a <= b) 返回 True。 |
赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | 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 |
:= | 海象运算符,可在表达式内部为变量赋值。Python3.8 版本新增运算符 | 在这个示例中,赋值表达式可以避免调用 len() 两次 |
if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)")
位运算符
#a 为 60,b 为 13 按位与 & var1 = 19 var2 = 15 print(var1 & var2) 19的二进制 0000 ... 10011 15的二进制 0000 ... 01111 0000 ... 10011 0000 ... 01111 0000 ... 00011 => 3 按位或 | var1 = 19 var2 = 15 print(var1 | var2) 19的二进制 0000 ... 10011 15的二进制 0000 ... 01111 0000 ... 10011 0000 ... 01111 0000 ... 11111 => 31 按位异或 ^ 两个值不一样,返回真,否则返回假 1 0 => 1 1 1 => 0 0 0 => 0 0 1 => 1 var1 = 19 var2 = 15 print(var1 ^ var2) 19的二进制 0000 ... 10011 15的二进制 0000 ... 01111 0000 ... 10011 0000 ... 01111 0000 ... 11100 => 28 << 左移 """ 左移相当于做乘法 : 5 * 2的n次幂 """ res = 5 << 1 # 10 res = 5 << 2 # 20 res = 5 << 3 # 40 print(res) 0000 ... 101 0000 ... 1010 移动一位 10 0000 10100 移动二位 20 >> 右移 """ 右移相当于做除法 : 5 // 2的n次幂 """ res = 5 >> 1 # 2 res = 5 >> 2 # 1 res = 5 >> 3 # 0 print(res) 0000 ... 101 0000 ... 010 移动一位 2 0000 ... 001 移动二位 1 0000 ... 000 移动三位 0 ~ 按位非 (针对于补码进行操作,按位取反,包括符号位) """公式: -(n+1)""" var1 = ~19 print(var1) ~ 按位非每一位都取反,包括符号位,求反码每一位除了符号位,都取反. 原码:0000 ... 10011 反码:0000 ... 10011 补码:0000 ... 10011 补码: 0000 ... 10011 按位非: 1111 ... 01100 给你补码求原码: 补码: 1111 ... 01100 反码: 1000 ... 10011 原码: 1000 ... 10100 => -20 var1 = ~(-22) print(var1) 原码: 1000 ... 10011 反码: 1111 ... 01100 补码: 1111 ... 01101 补码: 1111 ... 01101 按位非: 0000 ... 10010 给你补码求原码: 正数 : 补码 = 反码 = 原码 原码: 0000 ... 10010 => 18
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| |
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由”<<“右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把”>>“左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
逻辑运算符
a 为 10, b为 20: 优先级 () > not > and > or 逻辑短路: (1) True or 表达式 (2) False and 表达式
运算符 | 表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔”与” – 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔”或” – 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔”非” – 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
成员运算符
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
身份运算符
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
Python 中运算符的优先级
算位比身成逻
运算符 | 描述 |
---|---|
* | 指数(优先级最高 |
~ + – | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,求余数和取整除 |
+ – | 加法减法 |
>> << | 左移 右移运算符 |
& | 位 ‘AND’ |
^ | 位运算符 |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
运算符总结
(1) 个别运算符:
优先级最高 ** 幂运算
优先级最低 = 赋值运算符
() 括号可以提升运算优先级
(2) 整体 一元运算符 > 二元运算符
一元运算符: 同一时间,只操作一个值 – ~
二元运算符: 同一时间,操作两个值 + – * / …
(3) 同一层级
逻辑: () > not > and > or
算数: 乘除 > 加减
位运算符: ( << >> ) > & > ^ > |
(4) 其他运算符
算数运算符 > 位运算符 > 比较运算符 > 身份运算符> 成员运算符 > 逻辑运算符
赋值运算符是最后算完进行赋值,做收尾工作的.
基础语法
判断类型 isinstence
- 语法:
用法一 :
isinstance(要判断的值,要判断的类型) 返回True 或者 False
用法二:
isinstance(要判断的值,(可能的类型1,可能的类型2,可能的类型3 … ) ) 如果有一个类型满足,返回的是True 否则 返回False - 数据类型:
int float bool complex str list tuple set dict
用法一
res = isinstance(5,int)
res = isinstance(“11223344”,str)
res = isinstance([1,2,3],tuple)
print(res)
用法二
res = isinstance(16, (str,list,tuple) )
print(res)
代码块
- 代码块 : 以冒号作为开始,用缩进来划分作用域
- 作用域:作用的区域,作用的范围
- 代码块的注意点:
“”“要么全都是一个tab缩进,要么全都是4个空格,不能混合使用”””
if 10 == 10:
print(100)
print(200) # IndentationError
流程控制
- 流程: 代码执行的过程
- 控制: 对代码执行过程的一种把控
- 流程控制的三大结构
1.顺序结构 : 默认代码依次从上到下执行
2.分支结构 : 4种
3.循环结构 : for while - if 条件表达式
1单项分支
if
2双向分支
if else
3多项分支
if elif else
4巢状分支
if
if
if
else
else
else
while循环
特点:
减少代码的冗余,提升代码的效率
语法:
while 条件表达式:
code1…
code2…
1.初始化一个变量
2.写上循环的判断条件
3.自增自减的变量值
栗子:
方法一 i = 1 total = 0 while i<=100: # 把所有的i值全部累加到total这个变量中 total += i # total = total + i i+=1 print(total) 方法二 total = 0 i = 1 sign = True while sign: total += i # total = total + i i+=1 # 手动加上终止循环的条件 if i == 101 : sign = False print(total)
双向循环的金典例题
打印十行十列小星星(隔列换色小星星,两个循环)
i= 0 while i< 10 : i= 0 while i<10: if j % 2 == 0: print("★",end="") else: print("☆",end="") j+1 print() i +=1
99乘法表
i = 1 while i <10; j =1 while j<i: print("%d*%d=%2d"%(i,j,i*j),end="") j +=1 print() i+=1
for循环
-
- 特点:遍历, 孙欢, 迭代
- for主要用于遍历数据而提出,while在遍历数据时,有局限性
for 变量 in 可迭代对象:
code1
code2
可迭代对象(容器类型数据,range对象,迭代器) - for循环遍历不等长的二级容器
container = [["刘聪","毛洪磊","余锐","张家豪"],("崔文君","张捷")] for i in container: for j in i: print(j)
4. 遍历等长的二级容器
container = [["刘聪","毛洪磊","余锐","张家豪"],("崔文君","张捷")] for i in container: for j in i: print(j)
- renge对象
range(开始值,结束值,步长)
结束值本身取不到,取到结束值之前的那个数 - while 与 for
while : 较为复杂的逻辑
for : 数据的遍历
while 和 for 部分代码可以互相转换 - 关键字的使用
1pass 过(占位)
2break 终止当前循环
3continue 跳过当前循环,从下一次循环开始
在while中注意在continue前加(i+=1).