一.比较运算符
-
==
:等于 -
!=
:不等于 -
<
:小于 -
>
:大于 -
<=
:小于等于 -
>=
:大于等于
比较运算符的运算结果为布尔值,比较运算符通常返回布尔类型的数, True, False
1.单一变量
# 比较运算符 ==
a = 10
b = 10
print(a == b) #值相同
print(a is b) #地址相同
print(id(a), id(b))
print()
#运行结果
True
True
2117054982736 2117054982736
2.列表
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) #值的比较
print(id(a), id(b)) #地址不同
print(a is b) #地址判断
#运行结果
True
2117062758016 2117061551104
False
c = a #a的地址给c
print(id(a), id(c))
print(a == c)
print(a is c)
c[0]+=1 #c变a就变
print(id(a), id(c)) #地址不变
print(a is c)
print(a == c)
print(a,c)
#运行结果
2117062758016 2117062758016
True
True
2117062758016 2117062758016
True
True
[2, 2, 3] [2, 2, 3]
二.逻辑运算符
1.and(逻辑与)
全真则为真,有假则为假。
A and B表达式的结果: 如果A表达式的布尔判定为真则B表达式的结果作为整个表达式的结果,如果A表达式的布尔判定为假则A表达式的结果作为整个表达式的结果
注意: 如果A判定为假 B将不会执行 短路法则
eg
#and
a = 1
b = 0
c = 4
print(a and b)
print(a and c)
print(b and c)
#运行结果
0
4
0
2.or 或运算
两者(两个元素只要有一个为真,结果就为真)
#and
a = 1
b = 0
c = 4
d = 0
print(a or b)
print(a or c)
print(b or c)
print(b or d)
#运行结果
1
1
4
0
3.not 非运算
not 运算符是一元运算符
作用
将表达式的结果取 非 操作,黑白颠倒
a = 1
b = 0
print(not a)
print(not b)
#运行结果
False
True
三.位运算符
Python中的位运算符主要用于处理整数类型的二进制位操作。以下是Python中的6种主要位运算符:
-
&
:按位与 -
|
:按位或 -
^
:按位异或 -
~
:按位取反 -
<<
:左移位 -
>>
:右移位 -
1.按位与&
- 按照二进制位数进行与运算,全一才为一,有零则为零。
a = 0b1101 b = 0b1111 c = a&b print(bin(c)) #运行结果 0b1101
2.按位或
-
有一则一,全零才为零
-
a = 0b1101 b = 0b1111 c = a|b print(bin(c)) #运行结果 0b1111 进程已结束,退出代码为 0
3.按位异或
-
不同为1,相同则为零
-
a = 0b1101 b = 0b1111 c = a^b print(bin(c)) #运行结果 0b10 进程已结束,退出代码为 0
4.按位取反
- 零变一,一变零
-
a = 0b1101 c = ~a #c = 1111.....0010 print(bin(c)) #求源码,补码的补码是源码 #所以源码为c=100....1110 = -0b1110 #运行结果 -0b1110 进程已结束,退出代码为 0
5.左移运算符(<<):
-
表达式:
a << b
-
功能:将a的二进制表示向左移动b位,左边移出的部分会被丢弃,右边空出的位置补零。相当于乘以2^n次方
-
a = 0b1101 c = a<<2 print(bin(c)) #运行结果 0b110100 进程已结束,退出代码为 0
6.右移运算符(>>):
-
表达式:
a >> b
-
功能:用于将整数的二进制表示向右移动指定的位数。右移操作会丢弃右侧多余的位,并根据符号位(对于有符号数)或补零(对于无符号数)来填充左侧的空位。右移操作相当于除以 2^n并向下取整。
-
a = 0b1101 c = a>>2 print(bin(c)) #运行结果 0b11 进程已结束,退出代码为 0
四. 赋值运算符
-
=
:赋值 -
+=
:加法赋值,# 等价于 a = a + b -
-=
:减法赋值,# 等价于 a = a - b -
*=
:乘法赋值,# 等价于 a = a * b -
/=
:除法赋值,# 等价于 a = a / b -
%=
:取余赋值,# 等价于 a = a % b -
**=
:幂运算赋值,# 等价于 a = a ** b -
//=
:整除赋值,# 等价于 a = a // b注意:
没有 a++、 a-- 这种自增自减运算符;与c语言不同
-
五.运算符的优先级
-
运算符号 描述 (expressions...)
,[expressions...]
,{key: value...}
,{expressions...}
绑定或加圆括号的表达式,列表显示,字典显示,集合显示 x[index]
,x[index:index]
,x(arguments...)
,x.attribute
抽取,切片,调用,属性引用 **
乘方 +x
,-x
,~x
正,负,按位非 NOT *
,/
,//
,%
乘,除,整除,取余 +
,-
加和减 <<
,>>
移位 & 按位与 AND ^
按位异或 XOR | 按位或 OR in, not in, is, is not, <
,<=
,>
,>=
,!=
,==
比较运算,包括成员检测和标识号检测 not x
布尔逻辑非 NOT and 逻辑与AND or 逻辑或OR if -- else
条件表达式 lambda lambda 表达式 := 赋值
结合性规则:
-
大多数运算符(如加法、减法、乘法、除法、逻辑与、逻辑或等)是从左到右结合的。
-
少数运算符(如幂运算、赋值运算符、逻辑非等)是从右到左结合的。
a = 2**3**2 #从右至左计算
print(a)
#运行结果
512
六.数学函数
部分函数是python环境自带的,部分是math模块带的,部分是公共的
先引入math模块:
import math
eg
# 1. math.sqrt(x) #计算平方根
import math
a = math.sqrt(4)
print(a)
2.0
#2. math.pow(x, y) #计算x的y次方
import math
print(math.pow(2,3))
8.0
#3. math.log(value,base) #以base为底求value的对数
import math
print(math.log(100,10))
2.0
#4. max(x1, x2,...) #返回给定参数的最大值,参数可以为序列。
a = 'adda'
b = 'ad'
print(max(a,b))
c = 12
d = 56
print(max(c,d))
adda
56
数学常量
math.pi 圆周率3.1415926
math.e 数学常量e 2.718281828459045
七.条件语句
1.if -elif-else语句
year = int(input())
if year % 4 == 0 and year % 100 != 0:
print(f'{year}是普通闰年')
elif year % 400 == 0:
print(f'{year}是世纪闰年')
else:
print(f'{year}不是闰年')
说明
-
elif 子句可以有0个,1个或多个,
-
else 子句可以有0个或1个且只能放在最后
-
它通过对表达式逐个求值直至找到一个真值在子句体中选择唯一匹配的一个;然后执行该子句体(而且 if 语句的其他部分不会被执行或求值)。 如果所有表达式均为假值,则如果 else 子句体如果存在就会被执行。
-
2.条件表达式
- <表达式1> if <条件> else <表达式2>
-
<条件>
:要判断的条件表达式,通常是一个布尔表达式(例如a > b
)。 -
<表达式1>
:当条件为True
时返回的值或执行的表达式。 -
<表达式2>
:当条件为False
时返回的值或执行的表达式。xiao_hong_age = 18 cui_hua_age = 68 old = 'xiao_hong'if xiao_hong_age > cui_hua_age else'cui_hua' print(f'old: {old}') 进程已结束,退出代码为 0
八.循环语句
-
1.while 语句
- while 真值表达式:
语句块1 (*此部分可能会重复执行)
else:
语句块2
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2
1.字符串
写一个程序,输入一个任意长度的字符串,用for 语句找出这个字符串中有几个英文的等号(=)
注: 不允许使用 str.count 方法
-
说明
-
else 子句可以省略
-
else 子句 当且仅当 真值表达式为假Flase的时候 会执行 else 里的语句块2
-
如果 此 while 是因为 调用 break 语句而终止循环。则 else 子句里的语句不会执行
-
#10秒倒计时 n = 10 while n > 0: print(n) n = n - 1
#实时打印,输入0停止 i = 1 while i : i = int(input()) print(i) if i==0: break 2 2 6 6 0 0
输入一个整数n , 代表结束的整数, 计算
1 + 2 + 3 + 4 + ..... + n 的和
请输入: 100
5050 -
i = int(input()) Sum = 0 n = 0 while n<=i: Sum += n n += 1 print(Sum) 100 5050
无限循环
-
无限循环是指循环条件一直成立的循环
-
无限循环通常使用 break 语句来终止循环
-
无限循环的 else 子句中的语句永远不会执行
-
写程序, 任意输入一些正整数, 当输入负数时结束输入,当输入完成后,打印您输入的这些正整数的和
-
Sum = 0 while 1: i = int(input()) if i < 0: break Sum = Sum + i print(Sum) 1 2 3 -4 6
2.for 语句
-
作用
-
用来遍历可迭代对象的数据元素
遍历是指经历且只经历一遍
可迭代对象是指能够依次获取数据元素的对象
可迭代对象
-
字符串
-
---- 以下后面才讲----
-
列表 list
-
字典 dict
-
...
-
-
语法
-
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2 -
1.字符串
- 写一个程序,输入一个任意长度的字符串,用for 语句找出这个字符串中有几个英文的等号(=)
注: 不允许使用 str.count 方法 -
Sum = 0 ch = input() for i in ch : if i == '=': Sum += 1 print(Sum) cd==adadd=a1=5 4 进程已结束,退出代码为 0
-
else 子句可以省略
-
else 子句的语句块2 只有在 可迭代对象不再能提供数据的时候才会执行
-
因为 语句块1 部分调用break 而终止循环式,else 子句部分不会执行。
2.语句嵌套
for 循环嵌套是指在一个 for 循环内部再嵌套另一个 for 循环。嵌套循环常用于处理多维数据结构(如二维列表)或需要多重迭代的场景。
-
a = [ [1,2,3], [4,5,6], [7,8,9] ] for i in a: for j in i: print(j,end=' ') 1 2 3 4 5 6 7 8 9 进程已结束,退出代码为 0
3.range 函数
-
作用
用来生成一个能够得到一系列整数的可迭代对象(也叫整数序列生成器)
-
调用格式
-
range(stop) # stop 停止整数
range(start, stop) # start 开始整数
range(start, stop, step) # step 步长 -
range 函数调用会生成从 start 开始,到 stop 结束(不包含stop) 的一系列整数,整数的间隔 step
start 默认值为0, step 默认值为1
用 for 语句 打印 1~20 的整数,打印在一行内
1 2 3 4 .... 19 20 -
for i in range(1,21): print(i,end =' ') 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
4.break 语句
-
作用
用于循环语句(while, for语句)中, 当break 执行是,她会终止包含他的当前循环
说明
-
break 语句只能用在 while 语句或for语句的内部。
-
break 语句通常和 if 语句组合使用。
-
当break 语句执行后,此循环语句break 之后的所有语句都不会执行(else 子句里的语句也不执行)
-
break 语句只能终止包含他的当前循环,当有循环嵌套时,只能跳出离他最近的一个循环
for i in range(0,10,2): print(i) if i ==50: break 0 2 4 6 8
-
5.continue 语句
-
作用
用于循环语句(while 语句和for语句)中, 不再执行本次循环内 continue 之后的语句,开始一次新的循环
说明
-
在for 语句中, 执行continue 语句,for语句将会从可迭代对象向中获取下一个元素绑定变量后再次进行循环
-
在while 中,执行continue 语句, 将会直接跳转到while 语句的真值表达式处,重新判断循环条件
- eg 打印1-100以内的单数
-
for i in range(1,101,1): if i%2 == 0: continue print(i,end = ' ') 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
6.pass 语句
pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句
for i in range(1,101,1): if i%2 == 0: pass else: print(i,end = ' ') 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 进程已结束,退出代码为 0