变量
######1. 定义变量
语法:变量名 = 数据
说明:变量名 —程序员自己命名
要求:1. 标识符不能是关键字(见名知义)
2.满足PEP8的命名规范(所有的字母都小写,各个单词之间用下划线隔开)
3.不使用系统提供的类型名、函数名和模块名
= —> 赋值符号,固定写法
数据 —> 任何有结果的表达式,包括:独立数据、运算表达式(除了赋值运算)
-
独立数据
X = 37 X1 = 14.2 X2 = 0B11010 X3 = True
-
运算表达式
y = 20 + 60
例如:定义一个变量,保存学生的分数
stu_score = 90
使用变量
变量张保存的数据能做什么,变量就能做什么
age = 28
print(age)
print(‘age’, age)
print(age + 20)
修改变量中的数据(重新给变量赋值)
age = 18
age = 13
print(age)
同时定义多个变量
-
同时给不同的变量赋值
- a, b , c = 10 ,60 ,153
print(a, b, c)
-
交换两个变量的值
-
x = 30
y = 70
x , y = y , x
print(x,y)
-
-
同时给不同的变量赋相同的值
-
x1 = x2 = x3 = 200
print(x1, x2, x3)
-
变量赋值的原理
-
先在堆中申请内存(申请多大多大要看赋值的数据需要多大内存),再将数据保存再内存区域中,让变量和保存数据的内存进行关联。
-
id函数 —获取变量中关联的数据再内存中的地址
num = 10
print(id(num))
num = 25
print(id(num))
运算符
python支持的运算符:赋值运算符、数学运算符、比较运算符、逻辑运算符、位运算
1.赋值运算符
1.1 .赋值运算符:=、+=、-=、*=、/=、%=、//=、**=
1)所有的赋值运算都是用来给变量赋值的
2)所有的赋值运算符的左边都必须是变量,赋值运算符左边的变量必须是已经赋值过的变量
3)所有赋值运算符的右边都可以是任意有结果的表达式
1.2 .运算符的优先级
数学运算符>比较运算符>逻辑运算符>赋值运算符(最低)
有括号先算括号里面的
2.数学运算符
数学运算符:+(加)、-(减)、(乘)、/(除)、%(取余)、//(整除)、(幂运算)*
2.1 +(加)、-(减)、*(乘)、/(除)和数学中的加减乘除功能是一样的
2.2 % — 求余数
应用一:取整数的个位数或者低几位数
例:获取变量num的个位数
num = 674
print(num%10)
应该二:判断一个数是否能够被另一个数整除
练习:判断num是否是偶数
num = 674
print(num%2)
2.3 // — 先求商,再取商的整数部分(向下取整/向小取整)
应用:取定长数字的最高位
num = 854
print(num//100)
num = 228
print(num//10)
2.4 ** — 幂运算
m ** n — 计算m的n次方
print(12 + 3 * 4 // 5 - 6 ** 2)
3.比较运算符
比较运算符(关系运算符):>、<、==、>=、<=、!=
注意:a)所有比较运算符的结果都是布尔值
b)数字数据不能和字符串数据进行比较
print(1 > 2) #False
print(1 < 2) #True
print(1 >= 2) #False
print(1 <= 2) #True
print(1 == 2) #False
print(1 != 2) #True
Python中支持比较运算符的连写来表示范围
x = 50
print(0 < x <100)
可以直接将运行结果赋值给变量
a = 1 > 2
print(a)
4.逻辑运算符
python中的逻辑运算符:and(逻辑与)、or(逻辑或)、not(逻辑非)
4.1 and
运算规则:操作对象都是布尔值:两个都是True结果才是True,只要有一个是False结果就是False
应用场景:希望两个或者多个条件同时满足才做什么事情,就使用逻辑与运算。相当于生活中的并且。
练习1:写出学生是否能拿奖学金的条件,拿奖学金的要求:绩点超过4,操评分高于85,这个两个条件同时满足
grade = 4.5
score = 80
print('是否能拿奖学金:', grade > 4 and score > 85)
4.2 or
运算规则:
操作对象都是布尔值: 两个都是False结果才是False,只要有一个是True结果就是True
应用场景:
希望两个或者多个条件只要有一个满足就可以就使用逻辑或运算。相当于生活中的或者
练习2:写出判断指定的年是否是闰年的条件: 1)能被4整除但是不能被100整除 2)直接能被400整除
year = 2020
print('是否是闰年:', year % 4 == 0 and year % 100 != 0 or year % 400 == 0)
4.3 not
运算规则:
True 变 False , False 变 True
应用场景:
不满足某个条件就做什么,就用not。
练习3:写出num是否不能同时被3和7整除
num = int(input('请输入一个数:'))
print('是否满足条件:', not (num % 3 == 0 and num % 7 == 0))
4.4操作对象不是布尔的时候
逻辑运算符语法上可以操作任何数据
数据1 and 数据2 -> 如果数据1的布尔值是True,结果是数据2;
如果数据1的布尔值是False, 结果就是数据1
数据1 or 数据2 -> 如果数据1的布尔值是True,结果是数据1;
如果数据1的布尔值是False,结果是数据2
补充: 数据的布尔值怎么确定 - 所有为零为空的值都是False,其他数据的布尔都是True
4.5 短路操作
and 的短路操作:
表达式1 and 表达式2 -> 如果表达式1的结果是False, 表达式2不会执行
or 的短路操作:
表达式1 or 表达式2 -> 如果表达式1的结果是True, 表达式2不会执行
5.赋值运算符
赋值运算符:=、+=、-=、*=、/=、%=、//=、=**
-
所有的赋值运算都是用来给变量赋值的
-
所有的赋值运算符的左边都必须是变量,复合赋值运算符左边的变量必须是已经赋值过的变量
-
所有赋值运算符的右边都可以是任意有结果的表达式
5.1 =
a = 10
age = 18
a = 100
5.2 +=、-=、*=、/=、%=、//=、=**
变量 += 数据 -> 变量 = 变量 + 数据
5.2 运算符的优先级
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
** > *,/,%,// > +, -
有括号先算括号里面的
a = 10 + 30 > 35
a = 30 * 2 > 50 * 2
print(a)
6.位运算
位运算的特点:效率高、内存消耗少
位运算运算符: &(按位与)、|(按位或)、^(异或)、~(按位取反)、>>(右移)、<<(左移)
所有的位运算都是直接操作数据在内存中存储的补码
6.1 &(按位与)
数字1 & 数字2 - 两个都是1结果就是1,否则结果0
特点:某一位上的数和1与可以对这一位上的数进行保存,和0与会对这一位进行置0操作
print(5 & 9) #1
print(-5 & -9) #-13
应用:判断数字的奇偶性:
让被判断的数字和 1 进行按位与运算,结果如果是0说明是偶数否则是奇数
6.2 |(按位或)
数字1 | 数字2 - 只要有一个是1结果就是1,两个都是0结果才是0
6.3 ^(异或)
数字1 ^ 数字2 - 不同为1,相同为0
6.4 ~
0变1,1变0
6.5 >>,<<
数字1 >> 数字2 - 数字1 // 2**数字2
数字1 << 数字2 - 数字 * 2**数字2
应用:高效率、快速的乘2或者2的次方数
print(6 << 1) # 6 * 2**1
print(5 << 2) # 5 * 2**2
print(6 >> 1) # 6 // 2**1
print(7 >> 1) # 7 // 2**1
print(-7 >> 1) # -7 // 2**1