交互
input(提示信息) 输入
i = input("输入一个字母:")
print(i) 输入一个字母:
a = input("请输入一个整数:")
b = input("请再输入一个整数:")
print(a+b) 请输入一个整数:4
请再输入一个整数:5
45
a = int(input("请输入一个整数:"))
b = int(input("请再输入一个整数:"))
print(a+b) 请输入一个整数:4
请再输入一个整数:5
9
print() 输出 end参数在打印结果末尾加上字符,默认是换行符
print("ABC") ABC
print("ABC","DEF") ABC DEF
------------------
print("ABC") ABC
print("DEF") DEF
------------------
print("ABC",end="======") ABC=====DEF
------------------
name = "Tom"
age = 18
print("我的名字是:",name,"我已经",age,"岁了") 我的名字是: Tom 我已经 18 岁了
>字符串的格式化
>第一种 %s字符串占位符 %d整型占位符 %f浮点数占位符
>name = "Tom"
age = 18
>print("我的名字是:%s 我已经%d岁了"%(name,age)) 我的名字是:Tom 我已经18岁了
>如果age = [18,1,20]
>print("我的名字是:%s 我已经%d岁了"%(name,age)) 我的名字是:Tom 我已经[18,1,20]岁了
>第二种 str.format()
>print("我的名字是:{} 我已经{}岁了".format(name,age)) 我的名字是:Tom 我已经18岁了
>又可以print("我的名字是:{1} 我已经{0}岁了".format(age,name)) 我的名字是:Tom 我已经18岁了
>类似的print("我的名字是:{1}{1} 我已经{0}岁了".format(age,name)) 我的名字是:TomTom 我已经18岁了
>类似的print("我的名字是:{b} 我已经{a}岁了".format(a=age,n=name)) 我的名字是:Tom 我已经18岁了
>第三种(最常用) f""
>print(f"我的名字是:{name} 我已经{age}岁了") 我的名字是:Tom 我已经18岁了
>类似有print(f"我的名字是:{name} 我已经{age+2}岁了") 我的名字是:Tom 我已经20岁了
运算符
算术运算符
加法 + 1+2=3
减法 - 3-2=1
乘法 * 2*3=6
除法 / 6/3=2.0
整除 // 3//2=1 -2//3=-1 向小取整,哪里小就像哪里取整
求余(求模)% 3%2=1 3%1=0 10%3=1
幂运算 ** 2**3=8 4**(1/2)=2
赋值运算符
+= a+=b 等效于 a=a+b
= 简单的赋值运算符 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
比较运算符
大于 > 如果前面的值大于后面的值 则返回True,否则返回False
print("A">"B") False
小于 < 如果前面的值小于后面的值 则返回True,否则返回False
print(5<10) True
等于 == 如果前面的值等于后面的值 则返回True,否则返回False
大于等于 >= 如果前面的值大于等于后面的值 则返回True,否则返回False
小于等于 <= 如果前面的值小于等于后面的值 则返回True,否则返回False
不等于 != 如果两边的值不相等 则返回True,否则返回False
逻辑运算符
and 逻辑与运算 a and b 当两个表达式都是真的时候,结果才为真,否则就是假
or 逻辑或运算 a or b 当两个表达式都是假的时候,结果才为假,否则就是真
not 逻辑非运算 not a 如果a为真,结果就是假。如果a为假,结果就是真。
身份运算符
is 比较两边地址是否相等 x is y 等效于x地址==y地址
a = {1,2,3}
b = {1,2,3}
print(a is b) False
------------------
is not 比较两边地址是否相等 x is not y 等效于x地址!=y地址
成员运算符
in 如果指定的序列中存在该值返回True,否则返回False
s = "123456"
print("7" in s) False
se = {1,2,3,4,5,6}
print(1 in se) True
-------------------
not in 如果指定的序列中不存在该值返回True,否则返回False
布尔运算
>只要不是 0 ,0.0 ,空数据None 就是True
>print(100 and 50) 50
短路运算
与运算:只有两个布尔值都为 True 时,计算结果才为 True。
True1 and True2 ==> True2
True1 and False2 ==> False2
False1 and True2 ==> False1
False1 and False2 ==> False1
或运算:只要有一个布尔值为 True,计算结果就是 True。
True1 or True2 ==> True1
True1 or False2 ==> True1
False1 or True2 ==> True2
False1 or False2 ==> False2
在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果
运算符的优先级
1~19优先级 左,右,无(同等级运算顺序)
小括号 ( ) 19 无
索引运算符 x[i] 或 x[i1: i2 :i3] 18 左
属性访问 x.attribute 17 左
乘方 ** 16 右
按位取反 ~ 15 右
符号运算符 +(正号)、-(负号) 14 右
乘除 *、/、//、% 13 左
加减 +、- 12 左
位移 >>、<< 11 左
按位与 & 10 右
按位异或 ^ 9 左
按位或 | 8 左
比较运算符 ==、!=、>、>=、<、<= 7 左
is 运算符 is、is not 6 左
in 运算符 in、not in 5 左
逻辑非 not 4 右
逻辑与 and 3 左
逻辑或 or 2 左
逗号运算符 exp1, exp2 1 左
链式赋值,交叉赋值,解压赋值
链式赋值
a = b = 0
交叉赋值
a = 1
b = 2
a,b,c = b,a,a+1
print(a) 2
print(b) 1
print(c) 2
解压赋值
a,*b = [1,2,3]
print(a) 1
print(b) [2,3]
---------------
a, *b, c= [1,2,3]
print(a) 1
print(b) ['2']
print( c ) 3
只能有一个星号,有星号的可以为空,有星号的返回列表