变量
1.程序中使用数据的两种方式:
1)直接使用数据
print(26)
print((98 + 76) / 2)
print('水晶先锋: 过去那个爱笑的我已经不在了,现在的我只剩下魔法与记忆以及这个丑陋不堪的身躯,孤独的在这个世界徘徊')
print('水晶先锋: 过去那个爱笑的我已经不在了,现在的我只剩下魔法与记忆以及这个丑陋不堪的身躯,孤独的在这个世界徘徊')
2) 先将数据保存到变量中,然后再通过使用变量来使用数据
age = 26
print(age)
score1 = 98
score2 = 76
print((score1 + score2) / 2)
msg = '水晶先锋: 过去那个爱笑的我已经不在了,现在的我只剩下魔法与记忆以及这个丑陋不堪的身躯,孤独的在这个世界徘徊'
print(msg)
print(msg)
2.定义变量/创建变量
将数据保存到变量中
变量的作用:保存数据
1)语法:
变量名 = 数据
2)说明:
-
a.
变量名
- 程序员自己命名
要求:是标识符,不是关键字
规范:- a.见名知义(看到变量名就大概知道变量中保存的是什么数据)
- b.不使用系统函数名(比如:print、input、type、…)、类名(int、float、str、…)和模块名
- c.所有字母都小写,多个单词之间用下划线隔开(PEP8)
-
b.
=
- 固定写法 -
c.
数据
- 需要保存到变量中的具体的数据(可以是具体的某种类型的数据,也可以是某个运算表达式的结果)
a = 100
a1 = 100
_a = 100
# 1a = 100 # 报错
# a&b = 100 # 报错
name = '小明'
price = 120
# print = 100
# print('hello world!')
# int = 100
# print(int(12.45))
dog_name = '财财'
dogName = '大黄'
result = 100 + 200
print(result)
3. 使用变量 - 使用变量中保存的数据
使用变量就是使用变量中保存的数据,所以数据能做的事情,保存数据的变量都可以做。
注意:变量必须先定义再使用
num = 100
print(100)
print(num) # 100
print('num') # num
4.同时定义多个变量
1)变量名1 = 变量名2 = 变量名3 = ... = 数据
同时定义多个变量赋相同的值
a1 = b1 = c1 = 100
print(a1, b1, c1)
2)变量名1, 变量名2, 变量名3, ... = 数据1, 数据2, 数据3, ...
同时定义多个变量赋不同的值(变量的数据必须和数据的数量保持一致)
x, y = 100, 200
print(x, y)
# 案例:交换两个变量的值
m = 200
n = 30
# 方法1:
t = m # t = 200
m = n # m = 30
n = t # n = 200
print(m, n)
# 方法2:
m = 200
n = 300
m, n = n, m # m, n = 30, 200
print(m, n)
4. 变量重新赋值
1)定义完变量以后可以重新给变量赋值,重新赋值后再使用变量,使用的是新的值
score = 90
print(score)
score = 87
print(score)
2)重新赋值的时候可以赋不同类型的值
score = '优秀'
print(score)
python变量存储数据和重新赋值的底层
python定义变量的时候先申请内存,内存申请多大看数据需要多大,申请完内存后将数据保存到内存中,然后再将变量和对应的内存进行关联;
重新给变量赋值的时候,会根据新的值重新申请新的内存,然后将新的数据保存到新的内存中,最后将变量和新的内存进行关联。
# id函数 - 获取变量对应的内存地址
a = 10
print(id(a))
a = 100
print(id(a))
数学运算符
所有的数学运算符:+(加)、-(减)、*(乘)、/(除)、%(取余、取模)、//(整除)、**(幂运算)
1.+
、-
、*
、/
+、-、*、/和数学中的+、-、×、÷的功能一样
print(10 + 20) # 30
print(10 - 20) # -10
print(10 * 20) # 200
print(10 / 20) # 0.5
# 如果运算对象中有一个是浮点数,那么结果一定是浮点数(应用于所有数学运算符)
print(10.0 + 20) # 30.0
print(10.0 - 20) # -10.0
print(10.0 * 20) # 200.0
# 除法(/)运算的运算结果一定是浮点数
print(20 / 10) # 2.0
2.%
(取余、取模)
求余数
# x % y - 求x除以y的余数
print(10 % 3) # 求10除以3的余数
print(20 % 3) # 求20除以3的余数
1)应用场景1:判断一个数是否能够被另外一个数整除
判断这两个数的余数是否为0
num1 = 23
num2 = 11
print(num1 % num2)
print(30 % 6)
print(8 % 4)
2)应用场景2:取整数的低位数
对10的N次方取余,就可以获取这个数的后N位数
num = 2379
print(num % 10) # 9
print(num % 100) # 79
print(num % 1000) # 379
3. //
(整除)
求商,商向小取整
# x // y - 求x除以y的商,商向小取整的结果
print(5 // 2) # 2
print(3.8 // 2) # 1.0
print(99 // 4) # 24
print(-5 // 2) # -3
# 应用场景1:求一个数中有多少个完整的另一个数
# 例如:求num中有多少个的8
num = 79
print(num // 8)
# 练习:已知t的值是总的秒数,求t中有多少个完整的小数
t = 282929
print(t // 3600) # 78
# 应用场景2:去掉整数的低位数,保留高位数 - 整除10或者10的N次方
print(8293 // 10) # 829
print(82 // 10) # 8
print(82233 // 100) # 822
print(9282 // 100) # 92
print(82823 // 1000) # 82
# 练习:写程序提取任意一个整数的百位数
# 2833 -> 8 123 -> 1 82929 -> 9
num = 1823
# 方法1:1823 // 100 -> 18 % 10 -> 8
print(num // 100 % 10)
# 方法2:1823 % 1000 -> 823 // 100 -> 8
print(num % 1000 // 100)
4.**
(幂运算)
# x ** y - 求x的y次方
print(3 ** 4) # 81
print(2 ** 5) # 32
print(4 ** -2) # 0.0625
print(8 ** (1/3)) # 2.0
print(100 ** 0.5) # 10.0
比较运算符
比较运算符:>(大于)、<(小于)、==(等于)、!=(不等于)、>=(大于等于)、<=(小于等于)
1.所有比较运算符的运算结果都是布尔值
print(100 > 200) # False
print(100 == 100) # True
num = 890
print('num是否是偶数:', num % 2 == 0)
2.python中的比较运算符支持连写表示范围
score = 82
# 判断分数是否大于等于70,小于90
print('是是中等成绩:', 70 <= score < 90)
逻辑运算符
逻辑运算符:and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)
1.and
(逻辑与运算)
-
1)应用场景:
用来连接要求同时成立的两个条件,相当于生活中的 ‘并且’
-
2)运算规则:
条件1 and 条件2
如果两个条件同时成立结果就是True,只要有一个条件不成立结果就是False
-
True and True - True
-
True and False - False
-
False and True - False
-
False and False - False
-
# 案例:判断num是否能同时被3和8整除
num = 24
# 是否能被3整除:num % 3 == 0
# 是否能被8整除:num % 8 == 0
print('num是否能同时被3和8整除:', num % 3 == 0 and num % 8 == 0)
# 练习:判断num是否是能够被7整除的偶数
num = 92
print('num是否是能够被7整除的偶数:', num % 7 == 0 and num % 2 == 0)
2.or
(逻辑或运算)
-
1)应用场景:
如果要求两个或者多个条件有一个条件成立就行,用or连接,相当于生活中的’或者’
-
2)运算规则:
条件1 or 条件2
只要有一个条件成立,结果是True;两个条件都不成立结果是False
- True or True - True
- True or False - True
- False or True - True
- False or False - False
# 练习1:判断num是否能够被3或者7整除
num = 89
print('num是否能够被3或者7整除:', num % 3 == 0 or num % 7 == 0)
# 练习2:判断指定的年是否是闰年
# 闰年:闰年分为普通闰年(能被4整除但是不能被100整除的年)和世纪闰年(能被400整除的年)两种
year = 2008
# 普通闰年: year % 4 == 0 and year % 100 != 0
# 世纪闰年: year % 400 == 0
print('否是闰年:', (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
3.not
(逻辑非运算)
-
1)应用场景:
对条件进行否定
-
2)运算规则:
not 条件
对指定条件进行否定
- not True - False
- not False - True
# 案例:判断age是否不大于18
age = 28
print(not age > 18)
print(age <= 18)
# 案例:判断num是否不能被5整除
num = 89
print(not num % 5 == 0)
print(num % 5 != 0)
# 案例:判断num是否不能同时被3和7整除
num = 90
print(not (num % 3 == 0 and num % 7 == 0))
print(num % 21 != 0)
赋值运算
赋值运算: =、+=、-=、*=、/=、%=、//=、**=
注意:
-
a.所有赋值运算符最终的功能都是完成对变量的赋值操作(将数据保存到变量中)
-
b.所有的赋值运算都没有结果,无法提供数据
print(18)
a = 10
print(a)
print(10 + 20)
print(10 > 3)
print(a > 5 and a % 2 == 0)
# print(b = 20) # 报错!赋值运算符没有结果,无法提供数据
b = 20
print(b)
1. =
- 普通赋值运算符
变量名 = 数据
- 将数据直接保存到变量中
2. +=
变量名 += 数据
- 先将变量中保存的数据取出来,和后面的数据进行加法运算,然后将运算结果重新赋值给前面的变量
注意:复合的赋值运算符前面的变量必须是已经赋值过的变量
num = 10
num += 2 # num = num + 2
print(num) # 12
num -= 3 # num = num -3 = 12 - 3
print(num) # 9
num *= 2
print(num) # 18
num %= 3 # num = num % 3 = 18 % 3
print(num) # 0
运算符的优先级
- 数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
**
>*
、/
、%
、//
>+
、-
and
>or
- 有括号先算括号里面