变量
# 1.程序中使用数据的两种方式(推荐方法b)
# a.直接使用数据
# (弊端:不知道数据的具体意义;
# 重复使用时不方便(万一数据是篇论文,
# 就很麻烦次次都要重新输入一篇论文,而且需要改论文时,
# 论文用了多少次就要从代码中找到论文改多少次))
print(18) # 年龄? 个数?
print((98 + 17) / 2) # 数学运算?还是表示其它什么?
# b. 先将数据保存到变量中,再通过变量保存数据
age = 26
print(age)
score1 = 62
score2 = 83
print(score1 - score2)
# 2.定义变量/创建变量 - 将数据保存到变量中
# 变量的作用:保存数据
"""
a.语法:
变量名 = 数据
b.说明:
变量名 - 要求:是标识符,不是关键字
规范:1、见名知意(看到变量名就知道变量保存的是什么数据)
2、不使用系统函数名(print、input、type、.....)、类名(int、float、str、....)、模块名
eg:print = '识别' (系统不会报错,但会导致函数本身作用消失)
3、所有字母都小写,多个单词之间用下划线隔开(
= - 固定写法
数据 - 需要保存到变量中的具体数据,可以是具体的某种数据,也可以是某个运算表达式的结果
"""
a = 100
a1 = 100
_2 = 100
# 1a = 100 # 报错
# a$u = 100 # 报错
result = 100 + 200
print(result)
# 3.使用变量 - 使用变量中保存的数据
# 使用变量就是使用变量中保存的数据,所以数据能做的事情,保存数据的变量都可以做
# 注意:变量先定义再使用
num = 100 # 保存
print(100) # 打印100
print(num) # 打印变量
print(100 + 200)
print((num + 200))
print(type(100))
print(type(num))
print(float(100))
print(float(num))
# 4.同时定义多个变量
# a.变量名1 = 变量名2 = 变量名3 = .... = 数据 - 同时定义多个变量赋相同值
a = b = c = 100
print(a, b, c)
# b.变量名1, 变量名2, 变量名3, .... = 数据1,数据2, 数据3,.... - 同时定义多个变量赋不同值(变量与数据个数一至)
x, y = 100, 200
print(x, y)
# 案例:交换两个变量的值
m = 200
n = 30
m, n = n, m
print(m, n)
# 4.变量重新赋值
score = 66
print(score)
score = 77 # 重新给变量赋值,再使用变量时使用的是新的值
print(score)
score = '及格' # 重新给变量赋值可以用不同类型的值
print(score)
变量的底层逻辑
# 1.python变量存储数据和重新赋值的底层
# python定义变量时先申请内存,内存申请大小由数据大小决定,申请完后将数据保存,再将变量和对应的内存进行关联
# 重新给变量赋值时,会根据新的值重新申请内存,将新的数据保存在新的内存中,再将变量和新的内存进行关联
# id函数 - 获取变量对应的内存地址
a = 10
print(id(a))
a = 100
print(id(a))
数学运算符
# 1.所有的数学运算符:+, -, *, /, %(取余,取模), //(整除), **(幂运算)
# a,+, -, *, / 同数学加减乘除
print(10*5-5)
print(10 / 20)
# 如果运算符对象中有一个是浮点数,那么结果一定是浮点数(应用于所有数学运算符)
print(10.0 - 5)
# 除法运算的运算结果一定是浮点数
print(20 / 4)
# b.%(取余、取模) - 求余数
# x % y - 求x除以y的余数
print(10 % 3)
# 1.应用场景1:判断一个数是否能够被另外一个数整除 - 判断这两个数的余数是否为零
num1 = 23
num2 = 11
print(num1 % num2) # 结论:余1,所以11不能被23整除
# 2.应用场景2:取整数的低位数
num = 37332
print(num % 10)
# c.//(整除) - 求商,商向小取整(2.5取2)
print(3.9 // 2)
# print(-19 / 4)
print(-19 // 4)
# 应用场景1:求一个数中有多少个完整的另一个数
# 案例:求num里有多少个完整的8
num = 266
print(num // 8)
# 练习:已知t的值是总的秒数,求t中有多少个完整的小数
t = 282929
print(t // 3600)
# 应用场景2:去掉整数的低位数,保留高位数
print(682 // 10)
print(86875 // 10)
# 练习:写程序提取任意一个整数的百位数
# 2833 -> 8 123 -> 1 82929 -> 9
num = 2833
print(num // 100 % 10)
num = 123
print(num // 100)
num = 82929
print(num // 100 % 10)
num = 2833
print(num % 1000 // 100)
# d.**(幂运算)
# x ** y 即求x的y次方
print(6 ** 3)
比较运算符
# 比较运算符:> , < , ==(等于) , !=(不等于), >=(大于等于), <=(小于等于)
# 1.所有比较运算符的运算结果都是布尔值
print(100 > 200)
print(100 == 100)
# 判断num是否是偶数
num = 890
print('num是否是偶数:', num % 2 == 0)
# 2. python中的比较运算符支持连写范围
score = 89
# 判断分数是否大于等于70,小于90
print('是否是中等成绩', 70 <= score < 90)
逻辑运算符
# 逻辑运算符:and, or, not
# 1. and
# 1)应用场景:用来连接同时成立的两个条件,相当于生活中的并且
# 2)运算规则:条件1and条件2 - 如果两个条件同时成立结果就是Ture;只要有一个条件不成立结果就是False
# 案例:判断num是否能同时被3和8整除
num = 78
print('num是否能同时被3和8整除:', 78 % 3 == 0 and 78 % 8 == 0)
# 练习:判断num是否能够被7整除的偶数
num = 92
print('num是否是能被7整除的偶数:', num % 7 == 0 and num % 2 == 0)
# 2.or
# 应用场景:如果要求两个或多个条件中有一个条件成立,用or连接,相当于生活中的’或者‘
# 运算规则:条件1 or 条件2 - 只要一个条件成立,结果是Ture; 两个条件都不成立,结果是False
# 练习1:判断num是否能够被3或者7整除
num = 89
print('num是否能够被3或者7整除:', num % 3 == 0 or num % 7 == 0)
# 练习2:判断指定的年是否是闰年
# 闰年:闰年分为普通闰年(能被4整除但是不能被100整除的年)和世纪闰年(能被400整除的年)两种
year = 2008
print('否是闰年:', (year % 4 == 0 and year % 100 != 0) or year % 400 == 0)
# 3.not
# 应用场景:对条件进行否定
# 运算规则:not条件 - 对指定条件进行否定
# 案例1:判断age是否不大于18
age = 65
print(not age > 18)
print(age <= 18)
# 案例2:判断num是否不能被5整除(tips:反着理解,能被5整除,然后加个not就可以了)
num = 89
print(not num % 5 == 0)
print(num % 5 != 0)
赋值运算符
除开简单的=运算符,其它所有赋值运算符与笔记中+=的使用方式保持一致
# 赋值运算:=,+=,-=,*=,/=,%=,//=,**=(作用:保存数据)
# 注意:
# a.所有的赋值运算符最终的功能都是完成对变量的赋值操作(将数据保存到变量中)
# b.所有的赋值运算都没有结果,无法提供数据
# 1. = - 普通赋值运算符
# 变量名 = 数据 - 将数据直接保存到变量中
# 2. +=
# 变量名 += 数据 - 先将变量中保存的数据取出来,和后边的数据进行加法运算,然后将运算结果重新赋值给前面的变量
# 注意:复合的赋值运算符前面的变量必须是已经赋过值的变量
num = 10
num += 2
print(num)
运算符的优先级
# 1.数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
# 2. ** > *, / , % , // > + , -
# 3. and > or
# 4.有()先算括号里面