1.8 变量
建议:如果在程序中需要使用一个数据,先用变量将数据存起来,再通过使用变量来使用这个数据
1.定义变量(定义 - 创建) - 将数据保存在变量中
"""
语法:
变量名 = 数据
说明:
1)变量名 - 由程序员自己命名,但是必须满足两个要求和3个规范:
2个要求:是标识符;不是关键字
3个规范:见名知意(让别人看到变量名就大概知道这个变量中保存的是什么数据);
字母都小写,多个单词用下划线隔开;
不使用系统的函数名、类名和模块名
2)= - 赋值符号
3)数据 - 需要保存的对象;提供数据的方式:具体的数据、已经赋值的变量、运算表达式、函数调用表达式
"""
2.使用变量
使用变量就是在使用变量中保存的数据
m=100
print(m)
3.重新赋值
a = 10 #创建变量a
a = 100 #重新给a赋值为100
a = 'abc' #重新赋值一个其它类型的数据
print(a) #abc
4.同时定义多个变量
(1)同时定义多个变量赋相同的值:变量1,变量2…=数据1,数据2…
x = y = z = 100
print(x,y,z) #100 100 100
(2)同时定义多个变量赋不同的值:变量1,变量2…=数据1,数据2…
注意:=后面数据的个数必须和前面变量的个数保持一致
m , n = 10 , 20
print(m,n) #10,20
#练习:交换两个变量的值
a=100
b=200
#方法一:
c = a
a = b
b = c
print(a,b) #200 100
#方法二:
a,b = b,a
print(a,b) #200 100
5.变量保存数据的底层逻辑
定义变量的时候会自动再内存中申请空间保存数据
原理:定义变量的是会自动申请内存,内存的大小有数据的大小决定;重新给变量赋值,会重新根据新的数据申请新的内存
问题1:为什么python定义变量不用说明类型
问题2:为什么python给变量重新赋值的时候可以赋值不同类型的数据
问题3:为什么python可以直接计算并且保存9999**9999的计算结果
6.版本解释
"""
A.B.C
C -->修复以前的版本的bug
B -->功能增加、修改
A -->不考虑兼容以前的版本修改
"""
'''
补充:内存单位
位(bit)
1字节(byte)=8位
1kb=1024字节
1Mb=1024kb
1Tb=1024Mb
'''
1.9 运算符
1.9.1 数学运算符
数学运算符:+(加)、-(减)、*(乘)、/(除)、%(取余、取模)、//(整除)
1.+(加)、-(减)、*(乘)、/(除) — 跟数学一样
print(2 + 3)
print(2 - 3)
print(2 * 3)
print(2 / 3)
2.//(整除)
x // y — 求x除以y的商,商向小取整(找和小数相邻的两个整数中较小的那个数)
print(7 // 2) #3
print(-7 // 2) #-3
应用1:能够整除的情况下商是整数
print(4 / 2) #2.0
print(4//2) #2
应用2:去掉(砍掉)一个整数的低位数,保留高位数
num = 2342
print(num // 10) #234
print(num // 100) #23
3.% — 取余、取模
x % y — 求x除以y的余数
print(25 % 3) #1
应用1:判断两个数字之间的整除关系 - 判断余数是否为0
print(71 % 2) #1
应用2:去掉高位数,保留低位数
num = 234
print(num % 10) #4
print(num % 100) #34
# 练习:获取任意一个正整数的十位数
num=8271
# 方法1:
print(num // 10 % 10)
# 方法2:
print(num % 100 // 10)
4.**幂运算
print(2**6)
print(6**0.5)
# 注意:/的结果一定是浮点数;其他运算符的运算结果的类型和运算对象有关
print(10+3.0)
print(2.5*5)
1.9.2 比较运算符
# 比较运算符:>、<、==(等于)、!=(不等于)、>=、<=
# 注意:所有比较运算符的运算结果都是布尔值
print(10 >= 60)
num=89
# 判断这个数对2取余是否为0
print('是否是偶数:',num % 2 ==0)
# 注意2:python的比较运算符直接连写表示范围
x = 2
print('x是否在0-1之间:',0<=x<=1)
1.9.3 逻辑运算符
逻辑运算符:and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)
单一条件:如果下雨;如果温度高于35度
复合条件:并且(要求多个条件同时成立),或者(要求多个条件只要有一个条件成立就行)
1.and - 逻辑与运算
应用场景:如果需要多个条件同时满足,就用and连接,相当于生活中的“并且”
运算规则:条件1 and 条件2 - 如果两个条件成立结果是True,只要由一个不成立结果就是False
"""
True and True - True
False and True - False
True and False - False
False and False - False
"""
# 练习1:写条件判断num是否大于10的偶数
num = 34
# 分析条件的类型:看是单一条件还是复合条件
# 所有的条件:大于10(num>10),是偶数(num%2==0)
# 分析连接方式
print('num是否是大于10的偶数:',num > 10 and num % 2 ==0)
# 练习2:写条件判断num是否能同时被3和7整除
num=34
print('num是否能同时被3和7整除:',num % 21 ==0)
2.or - 逻辑或预算
应用场景:如果要求多个条件中有一个条件成立就行,就用or连接;相当于生活中的或者
运算规则:条件1 or 条件2 - 如果两个条件都不成立结果就是False,只要有一个条件成立的结果就是True
"""
True or True - True
False or True - True
True or False - True
False or False - False
"""
# 练习:判断num是否能被3或者5整除
num=23
print('num能否被3或者5整除',num % 3 == 0 or num % 5 == 0)
# 练习:判断year是否是闰年
"""
闰年分为世纪闰年和普通闰年两种
世纪闰年:能被400整除的年
普通闰年:能被4整除,但不能被100整除
"""
year = 2000
print('year是否是闰年:',(year % 4 ==0 and year % 100 != 0) or (year % 400 == 0))
3.not - 逻辑非运算
应用场景:对指定的条件进行否定(如果一个条件正向写情况很多很复杂,反向写却很简单,就可以将条件反向写再加not)
运算规则:not条件
"""
not True - False
not False - True
"""
# 练习:判断num是否不能同时被3和7整除
num = 23
print('num是否不能同时被3和7整除:',not num % 21 == 0)
num = 23
print('num是否不能同时被3和7整除:',num % 21 != 0)
1.9.4 赋值运算符
赋值运算符:=、+=、-=、*=、/=、%=、//=、**=
注意:所有赋值运算符都是用来给变量赋值的,所以赋值运算表达式没有结果,不能提供数据
1.=
变量 = 数据 ---- 将数据保存到变量中,变量既可以是已经定义过的变量,也可以是没有定义过的变量
2.复合运算符
变量 += 数据 - 先将变量中的数据取出来,然后和后面的数据进行加法运算,然后将计算的结果再赋值给变量(变量必须是已经被定义过的变量,并且里面保存的数据,可以和后面的数据进行加法运算)
a = 20
a += 40
print(a) #60
a = 30
a *= 999
print(a) #29970
# 所有的赋值数据都是没有结果的,无法提供数据
# print(a+=10) #invalid syntax
1.9.5 运算符的优先级
如果一个表达式里面有多种运算符,谁的优先级高就算谁。
1.数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低的)
2.不同的数学运算符的优先级数学一样。(**>*、/、%、//、>、+、-)
3.有括号先算括号里面的 - ()
二 分支和循环
2.1 分支结构
1.程序执行过程:
默认情况下程序从上往下一条一条的执行,每一条语句都会执行,并且只会执行一次。
2.分支结构(if) - 让程序根据条件执行代码
(1)if单分支结构 - 如果xx就xx(满足条件执行某个操作,条件不满足的时候这个操作不执行)
"""
语法:
if 条件语句:
代码段
说明:
1)if - 关键字;固定写法
2)条件语句 - 可以是任何有结果的表达式(比如:具体的数据、运算表达式、已经定义过的变量,只要赋值语句不行);
一般将布尔的表达式作为条件
3): - 固定写法(注意输入法问题)
4)代码段 - 结构上,就是和if保持一个缩进或者多条语句(至少一条!!!);
逻辑上,就是满足条件才会执行代码
执行过程:先判断条件是否成立(如果条件语句的结果不是布尔值,就转换成布尔值看是否是True),如果成立就执行代码段;条件不成立,代码段就不执行。
"""
num=231
if num%2:
print('===') #没有结果
num=230
if num%2:
print('===') #===
(2)if双分支结构 - 如果xxx就xxx,否则就xxx(条件成立执行某个操作,不成立就执行另外一个操作)
"""
语法:
if 条件语句:
代码段1(满足条件执行的代码)
else:
代码段2(不满足条件执行的代码)
"""
# 练习1:根据age的值打印成年或者未成年
age = 29
if age >= 18:
print('age成年')
else:
print('age未成年')
# 练习2:根据year的值打印'闰年'或者'平年'
year = 2004
if (year % 4 == 0 and year % 100 != 0) or (year % 400 ==0):
print('year是闰年')
else:
print('year是平年')