python 3 变量 +运算符+if 分支结构
一、 变量
1. 重新赋值
重新赋值后,使用的就是新创建的值,可以给变量赋值不同类型的数据
a=8888 #创建a,并赋值8888
print(a)
a='study'
print(a)
2. 同时定义多个变量
1) 同时定义多个变量赋相同的值
方法:变量名1=变量名2=变量名3=···=数据
a=b=c=d=e=f=666 print(a,b,c,d,e,f) #可以按下述方法设置: a=666;b=666;c=666;d=666;e=666;f=666 print(a,b,c,d,e,f) #缺点是不简便
2)同时定义多个变量赋不同的值
方法:变量名1,变量名2,变量名3,···=数据1,数据2,数据3,···
注意:等号后数据的个数和前面的变量个数保持一致
a,b=22,88 print(a,b)
练习:交换两个变量的值
方法1:
a=66 b=88 a,b=b,a print(a,b) # 88 66
方法2 :借助第三个变量
a=66 b=88 c=a a=b b=c print(a,b) #88 66 此种方式比较繁杂
3. 变量保存的基本逻辑
1) python中
原理:定义变量的时候,会自动申请内存,申请内存空间大小是根据输入的数据的大小给出所需空间。
常识补充:(1) 内存分为2两种;内存(作用:与cpu沟通桥梁、决定运行速度的快慢); 硬盘(作业:电脑存储装置,增大电脑的存储空间)
(2) 单位补充:
#位(bit)
#1字节(byte)
#1kb=1024字节
#1Mb=1024kb
#1Gb=1024Mb
#1Tb=1024Gb
2)Java、C语言、python内存申请方式的区别
(1) java、C语言:根据数据类型给出空间大小;
- 优点:运行速度快
- 缺点:(1)会出现实际数据的存储空间小,但是占用空间大。(2)实际数据存储空间大,所给空间太小,放不下(溢出)。(3)有的数据具有成长性,需要考虑清楚空间大小。
(2) python:根据数据大小来申请,最多浪费以位位单位的空间.
- 优点:不会浪费空间
- 缺点:再给出数据所需空间前会提前计算该数据所需要的存储空间,运行速度慢。(因为要计算空间)
(3) python、Java、C语言如何重新赋值
- Python如何重新赋值:根据数据大小来申请,最多浪费是以位位单位,重新赋值根据数据大小重新给空间,在与新的变量产生关联。
- Java、C如何重新赋值:因为c语言是根据数据类型给出空间大小,及所存储的数据类型固定不变的,所以重新赋值后只能存放前面固定好的空间内。要是想增大存储空间,需要去手动申请内存空间
二、运算符
1. 数学运算符
数学运算符:+(加),-(减)、*(乘)、/(除)、%(取余,取模),**(幂运算)
1)+(加)、-(减)、*(乘)、/(除法)
功能:以上四种运算方式和数学中的+、-、×、÷功能一样
print(5+2) #7 print(5-2) #3 print(5*2) #10 print(5/2) #2.5
注意:/的运算结果一定是浮点数;其他的运算符的运算结果的类型与运算对象有关;如果运算对象有浮点数,结果一定有浮点数
print(5.0+2) #7.0 print(5.2-2.2) #3.0 print(5.0*2) #10.0 print(5/2) #2.5 print(50/5) #10.0 print(2/2) #1.0 print(2.0/2) #1.0
2)//(整除)
- 意义:X//Y - 求X除以Y的商,商向小取整(找和小数相邻的两个整数中,取较小的那个)
print(5//2) #2; 2 2.5 3
print(-5//2) #-3: -2 -2.5 -3
应用场景:
- 场景1:希望能整除的情况下商是整型
print(4/2) #2.0 print(int(4/2)) #2 添加转换字符类型,可转换成整数 print(4//2) #2
- 场景2:去掉(砍掉)一个整数的低位数,保留高位数(整除的数必须是10)
num=45678 print(num//10) #4567 print(num//10000) #4
3)%(取余、取模)
意义:X%Y - 求x除以y的余数
print(10%2) #0 print(125%3) #2
应用场景
场景1:判断两个数字之间的整除关系 - 判断余数是否为0;(判断一个数是不是偶数,就去判断78除以2的余数是不是0.如果是0,那就是偶数)
print(78%2) #0 偶数 print(71%2) #1 奇数
场景2:去掉高位数,保留低位数
num=27283 print(num%10) #3 print(num%100) #83
练习:获取任意一个正整数的十位数
num=8271 #方法1: print(num//10%10) #方法2:先取后两位%100,再去掉个位//10 print(num%100//10)
4)** -幂的运算
意义:x**y - 求x的y次方
print(2**3) #8 print(5**4) #625 print(16**0.5) #4.0 print(2**-2) #0.25 print(8**(1/3)) #2.0
2. 比较运算符
类型:<(小于),>(大于),==(等于),>=(大于等于),<=(小于等于),!=(不等于)
注意1:所有的比较运算符的结果都是布尔值。
例题练习
age=13 print('是否成年;',age>=18) #是否成年; False ##练习 判断89是不是偶数 num=89 print('是否是偶数:',num%2==0) #是否是偶数: False
注意2:Python的比较运算符可以用来直接连接表示范围
x=23.5 print('x是否在10~25之间:',10<=x<=25) #x是否在10~25之间: True
3. 逻辑运算符
逻辑运算符and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)
条件类型
- 单一条件:如果下雨;如果温度高于35度
- 复合条件:有多个条件组合在一起的条件叫做复合条件,组合方式:并且(要求多个条件同时成立)、或者(要求多个条件中只要有一个条件成立即可)。
1) and - 逻辑与运算
- 应用场景:如果需要多个条件同时成立,就用and连接,相当于生活中的“并且”。
- 运算规则:条件1 and 条件2 — 如果两个条件都成立就是True,只要有一个不成立结果就是False
#练习:写条件判断num是否是大于10的偶数
num=34
#分析条件类型:看是单一条件还是复合条件
#所有条件:大于10(num>10)、是偶数(num%2==0)
#分析连接方式:num10>10 and num%2==0
print('num是否是大于10的偶数:',num>10 and num%2==0) #num是否是大于10的偶数: True
#练习:写条件num是否能同时被3和7整除
#类型:复合
#能被3整除(num%3==0)、能被7整除(num%7==0)
#方法1
num=34
print('num是否能同时被3和7整除:',num%3==0 and num%7==0) #num是否能同时被3和7整除: False
#方法2 如果一个数能同时被3和7整除,那么就可以去整除这两个数的最小公倍数。看其余数是否为0
num=34
print('num是否能同时被3和7整除:',num%21==0)
2)or - 逻辑或运算
应用场景:如果多个条件中有一个条件成立就行,就用or连接:相当于生活中的或者
运算规则:条件1 or条件2 ------ 如果两个条件都不成立,结果就是False,只要有一个条件成立结果就是True.
#判断year是否是闰年 year=2000 print('year是否是闰年:',year%4==0 and year%100!=0 or year%400==0) #year是否是闰年: True
3) not - 逻辑非运算
应用场景:对指定条件进行否定(如果一个条件正想写情况很多,反向却非常简单,那么)
预算规则:not 条件
# 年龄不大于18 age=19 print(not age>18) #False 年龄不大于18 print(age<=18) #False年龄小于等于18,根据场景,反过来写,可替代性比较强 判断num不是偶数 num=89 print('num是不是偶数:',not num%2==0) #num是不是偶数: True print('num是不是偶数:',num%2!=0) #num是不是偶数: True
4. 赋值运算符
1) 类型: =、+=、-=、*=、=、//=、**=
2)作用: 所有赋值运算符的作用就是给变量赋值的,所有的赋值运算都是没有结果的,无法提供数据,凡是需要数据的地方不能用赋值来提供
3) 运算符的使用
= ---- 直接赋值,
即:变量=数据 - 将数据保存到变量中,变量即可以是定义过的变量,也可以是没有定义过的变量
复合赋值运算符
即:变量+=数据 - 先将变量中的数据湖取出来,然后和后面的数据进行加法运算,然后将计算结果再赋值给变量。要求:变量必须是已经定义过的变量,并且里面保存的数据可以和后面的数据进行加法运算
a=20 a+=10 #该语句作用相当于四a=a+10----->a=20+10--->a=30 print(a) # 30 #另一个例子: a=20 a=-5 #a=a-5-->a=30-5=25 a*=2 #a*=2--->a=2乘25=50 a%=3 #a%=3---->a=50÷3=16...3 print(a) #2
5.运算符的优先级
- 数学运算符>比较运算符> 逻辑运算符>赋值运算符(最低的)
- 不同的数学运算符的优先级和数学一样。(**>*、/、%、//>+、-)
- 有括号先算括号里面的 - ( )
三、分支结构
1. 程序的执行过程(顺序结构)
- 默认情况:程序从上往下按顺序一条一条执行,每一条语句都会执行并且只会执行一次。(但是,在实际业务需求,只需要执行部分条件,不需要全部执行就需要分支结构)
2. 分支结构
1)if 单分支结构
结构: 如果xxx 就 xxx (满足条件执行某个操作,条件执行,不满足的时候这个操作就不执行) (补充and,or,not是关键字)
语法:
if 条件语句
代码段 【该行按Tab键缩进,不缩进,会报错】说明:
1)if - 关键字:固定写法
2)条件语句:可以使任何有结果的表达式(比如:具体的数据、运算符表达式、已近定义过的变量,只有赋值语句不行,因为它无结果)
一般将结果是布尔的表达式作为条件
3): - 固定写法(注意输入法问题)
4):代码段 - 结构上就是和if保持一致的一个缩进的一条或者多条语句(至少一条!!!);
逻辑上,就是满足条件才会执行的代码。执行过程:先判断条件语句是否成立(如果条件语句的结果不是布尔,就转换成布尔看是否是True),如果成立就执行代码段,条件不成立,代码段就不执行。
num=24 if 24<30: print('True') #True #以下写法了解: num=231 if num % 2: print('====') #==== 根据布尔值来判断,若条件语句的结果为0,布尔值为False,不执行代码块;条件语句的结果为0以外的数,布尔值为True,执行代码块。
2)if 双分支结构
结构:if双分结构 - 如果xxx就xxx,否则就xxx(条件成立,执行某个操作,不成立就执行另外一个操作。)
语法:
if 条件语句:
代码段1(满足条件执行的代码)
else:
代码段2(不满足条件执行的代码)age=29 if age>=18: print('成年') else: print('未成年') #成年 #练习:根据year的值打印“闰年”或平年 year=int(input('请输入年份')) if (year%4==0 and year%100!=0) or (year%400==0): print('闰年') else: print('平年') ##请输入年份4080 闰年