Day2 - 运算符和分支结构
1、数学运算符
数学运算符包括:+(加)、-(减)、*(乘)、/(除)、%(取余数、取模)、//(取整数)、**(幂)
- +、-、*、/ 和数学中的功能一样
print(2+5) # 7
print(2-5) # -3
print(2*5) # 10
print(2/5) # 0.4
- % (取余、取模)
print(8 % 2) # 0
print(15 % 4) # 3
-
% (取余、取模)的应用:
- 判断一个数是否能够被另一个数整除
- 取整数的低位数
num = 32812 print(num % 10) # 2 print(num % 100) # 12 # 以此类推 print(num % 10000) # 2812
-
//(整除)
x // y - x除以y的结果向小取整
print(5 // 2) # 2; 5除以2是2.5,和2.5相邻的整数是2和3,2和3中较小的是2
print(-5 // 2) # -3
- //(整除)的应用:去掉低位数
numm = 27383
print(numm // 10) # 2783
print(numm // 1000) # 27
- **(幂)
x ** y - 求x的y次方
print(2 ** 3) # 8
print(25 ** 0.5) # 5.0
print(25 ** (1/3)) # 2.924017738212866
2、比较运算符
- 比较运算符:==(等于) ,!=(不等于),>(大于),<(小于),>=(大于等于),<=(小于等于)
注意:所有的比较运算符的运算结果都是布尔值
==、!=
print(5 == 5) # True
print(5 != 5) # False
print(10 % 2 == 0) # True
>、<、>=、<=
print(10 > 5) # True
print(10 >= 5) # False
- 可以通过连写的方式来表示取值范围
age = 12
print(18 < age <= 30) # False
print(0 < age < 30) # True
3、逻辑运算符
-
逻辑运算符:and(逻辑与运算)、or(逻辑或运算符)、not(逻辑非运算)
-
and(逻辑与运算)
-
应用场景:如果要求多个条件同时满足,这个时候多个条件使用and连接。
-
运算规则
True and True ->True True and False ->False False and True ->False False and False ->False # 练习:写出判断指定的数是否能同时被3和7整除的条件 num = 21 # 方法一: print(num,'是否能够同时被3和7整除:',21 % 3 == 0 and 21 % 7 == 0) # 方法二: print(num,'是否能够同时被3和7整除:',21 % 21 == 0)
-
-
or(逻辑或运算符)
- 应用场景:如果要求多个条件只要有一个条件满足就行,这个时候使用or连接。
- 运算规则
True or True ->True True or False ->True False or True ->True False or False ->False # 练习 # 写出判断一个是否能够被3或者7或者5整除的条件。 num = 11 print(num, '是否能够被3或者7或者5整除:', num % 3 == 0 or num % 7 == 0 or num % 5 == 0) num = 12 print(num, '是否能够被3或者7或者5整除:', num % 3 == 0 or num % 7 == 0 or num % 5 == 0) # 练习2:写出判断指定的年份是否是闰年 # 闰年:情况1 - 年份能被4整除但是不能100整除 # 情况2 - 年份能被400整除 year = 2010 print(year, '是否是闰年:', year % 4 == 0 and year % 100 != 0) print(year, '是否是闰年:', year % 400 == 0 ) print(year, '是否是闰年:', (year % 4 == 0 and year % 100 != 0 )or (year % 400 == 0))
-
not(逻辑非运算)
- 应用场景:如果要对一个条件进行否定,就是用not.一般不用,但是当正向所写的的条件过于复杂,但是反向很简单的时候就用。
- 运算规则
not Ture -> False not False -> Ture num = 21 print(num % 3 != 0) print(not num % 3 == 0)
-
短路操作
- 逻辑与运算的短路操作(and):如果第一个条件是False,那么第二个条件对应的语句不会再执行
True and print('条件2') False and print('条件2')
- 逻辑或运算的短路操作(or):如果第一个条件是True,那么第二个条件对应的语句不会再执行
True or print('条件3') False or print('条件3')
-
数据的布尔测试(掌握)
- 在Python中任何类型的数据都可以转换成布尔。
- 转换规则:任何为零为空的值都会转换成False,其他都是True。
0 -> False 0.0 -> False ........
;’‘ -> False “” -> False None -> False [] -> False {} -> False
- bool(数据) -> 获取指定数据对应的布尔值
-
运算对象不是布尔值
- 在python中任何类型的数据都可以作为逻辑运算符的运算对象
- 数据1 and 数据2 - 如果数据1的布尔值是True,结果就是数据2;如果数据1的布尔值是False,结果是数据1。
print(0 and 10) # 0 print(1 and 2) # 2 print(-3 and 9) # 9 print(None and 'abc') # None print(False and 100) # False
- 数据1 or 数据2 - 如果数据1的布尔值是True,结果就是数据1;如果数据1的布尔值是False,结果是数据2。
print(0 or 10) # 10 print(1 or 2) # 1 print(-3 or 9) # -3 print(None or 'abc') # 'abc' print(False or 100) # 100
- not 数据1 - 如果数据1的布尔值是True,结果是False;如果数据1的布尔值是False,结果是True。
print(not 10) # False print(not 2) # False print(not 9) # False print(not 'abc') # False print(not False) # True
4、赋值运算符
-
赋值运算符:=、+=、-=、*=、/=、%=、//=、**=
-
重要结论:赋值运算符的作用是给变量赋值,不会产生结果(数据)!!!
-
=
直接将 = 右边的数据赋给左边的变量。(=的左边必须是变量)
-
+=、-=、*=、/=、%=、//=、**=
- 变量 += 数据 - 将变量中的值取出来和=后面的数据进行加法运算,然后将运算的结果重新赋值给变量;
注意:变量必须是已经赋值过的变量
- 别的赋值运算符同理。
num = 100 num += 10 # num = num + 10 -> num = 100 + 10 -> num = 110 print(num) # 110 num -= 20 # num = num - 20 -> num = 110 - 20 -> num = 90 print(num) # 90 num *= 2 # num = num * 2 -> num = 90 * 2 -> num = 180 print(num) # 180 num %= 3 # num = num % 3 -> num = 180 % 3 -> num = 0 print(num) # 0
- 变量 += 数据 - 将变量中的值取出来和=后面的数据进行加法运算,然后将运算的结果重新赋值给变量;
5、运算符优先级
- 运算符优先级从高到低:数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
- 数学运算符优先级:** > *、/、%、// > +、-
- 有括号先算括号里面的,不区分大、中、下括号
print(4 + 8 / 2 > 5 + 3 * 4 and 8 < 15) # False
6、分支结构
-
顺序结构(默认):代码从上往下一条一条的按顺序执行
-
选择/分支结构:根据条件选择执行某个操作 (if语句)
-
if单分支结构
-
解决的问题:如果满足某个条件就执行某个操作,条件不满足的时候对应的操作不执行
-
语法:
''' if 条件语句: 代码段 ''' ''' 说明: if - 关键字,固定写法 条件语句 - 任何有结果的表达式(不能是赋值语句) 冒号 - 不能少,冒号写成英文输入法下的 代码段 - 和if保持一个缩进的一条或者多条语句;满足条件才会执行代码 执行过程: 先判断条件语句的布尔值是否为True,如果是,就执行代码段,否则代码段不执行 ''' # 练习1:如果指定的数是偶数就打印'偶数',否则不打印 num = 9 if num % 2 == 0: print('偶数') # 练习2:如果输入的年份是闰年,就打印'闰年', 否则不打印 year = int(input('请输入年份:')) # 注意:通过input函数输入的数据的类型是字符串,如果对结果进行数字操作需要先转换 if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): print('闰年')
-
if双分支结构:if - else
- 解决的问题:满足条件执行某个操作,条件不满足的时候执行另一个操作
- 语法:
''' if 条件语句: 代码段1 else: 代码段2 ''' ''' 执行过程:判断条件语句的布尔值是否为True,如果是,就执行代码段1,否则执行代码段2 ''' num = int(input('请输入数字:')) if num % 2 == 0: print('偶数') else: print('奇数') if num % 2: print('奇数') else: print('偶数') if not num % 2: print('偶数') else: print('奇数') num = int(input('请输入一个三位数的整数:')) if num // 100 == num % 100: print('回文数') else: print('不是回文数')
-