Python
运算符和分支结构 Python支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算符。
+ 、-、*、/
和数学中的+、-、×、÷
的功能一模一样。print(2 + 5) # 7
print(2 - 5) # -3
print(2 * 5) # 10
print(2 / 5) # 0.4
%
取余、取模x % y
— 求x除以y的余数。
print(8 % 2) # 0
print(15 % 4) # 3
应用一:判断一个数书否能够被另外一个数整除。
print(15 % 3) # 0 可整除
print(20 % 5) # 0 可整除
print(12 % 2) # 0 可整除
应用二:取整数低位数。
num = 789159
print(num % 10) # 取个位数
print(num % 100) # 取后两位数
//
整除
x // y
— x除以y的结果向下取整。
print(5 / 2) # 2.5
print(5 // 2) # 2
print(-5 // 2) # -3
应用:去掉低位数。
num = 27383
print(num // 10) # 2738
print(num // 100) # 273
print(num // 1000) # 27
print(23 // 10) # 2
print(647 // 100) # 6
print(8929 // 1000) # 8
练习:获取任意一个整数的十位数。
num = 345
# 方法一
print(num // 10 % 10) # 4
# 方法二
print(num % 100 //10) # 4
**
幂
x ** y
— 求x的y次方。
print(2 ** 3) # 8
print(4 ** 2) # 16
print(25 ** 0.5) # 5.0
print(27 ** (1/3)) # 3.0
比较运算符:==
等于、!=
不等于、>
大于、<
小于、>=
大于等于、<=
小于等于。
注意:所有的比较运算符的运算结果都是布尔值
==
等于、!=
不等于print(5 == 5) # True
print(5 != 5) # False
print(5 != 4) # True
print(10 % 2 == 0) # True
print(1 + 1 == 2) # True
>
大于、<
小于、>=
大于等于、<=
小于等于print(10 > 5) # True
print(10 <= 10) # True
print(10 < 10) # False
# 可以通过连写的方式来表示取值范围
age = 12
print(18 <= age <= 30) # False
print(0 < age < 18) # True
逻辑运算符: 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整除:', num % 3 == 0 and num % 7 == 0)
print(num, '是否能够同时被3和7整除:', (not(num % 4)) and (not(num % 7)))
# 方法二
print(num, '是否能够同时被3和7整除:', num % (3 * 7) == 0)
or
逻辑或运算
应用场景
如果要求多个条件只要有一个条件满足就行,这个时候多个条件用or练剑,相当于生活中的或者。
运算规则
True or True -> True
True or False -> True
False or True -> True
False or False -> False
练习一:写出判断一个书是否能够被3或者7或者5整除的条件。
num = 10
print(num, '是否能够被3或者7或者5整除:', num % 3 == 0 or num % 7 == 0 or num % 5 == 0)
练习二:写出判断指定的年份是否为闰年。
闰年:情况一:年份能被4整除但不能被100整除(普通闰年)。
情况二:年份能被400整除(世纪闰年)。
year = 2004
print(year, '是否为闰年:', (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
not
逻辑非运算
应用场景
如果要对一个条件进行否定,就是有not
。
age = 19
print(not age > 18)
# 写出不能同时被3和7整除的条件
# 1)能被3整除但是不能被7整除
# 2)能被7整除但是不能被3整除
# 3)既不能被3整除也不能被7整除
num = 12
print((num % 3 == 0 and num % 7 != 0) or (num % 7 == 0 and num % 3 != 0) or (num % 3 != 0 and num % 7 != 0))
# 可以用下面的来代替
print(not num % (3 * 7) == 0)
True and print('条件2') # 条件2
False and print('条件2') # False
True or print('条件2') # True
False or print('条件2') # 条件2
数据的布尔测试(掌握)
在Python
中任何类型的数据都可以转换成布尔。
转换规则:任何为零为空的值都会转换成False
,其他的都是True
。
0 -> False 0.0 -> False 0.000 ->False '' -> False "" -> False None -> False [] -> False {} -> False () -> False
#类型转换:bool(数据) -> 获取指定数据对应的布尔值
print(bool(0))
print(bool(0.0))
print(bool(''), bool(""), bool(None))
print(bool(10), bool(-1))
print(bool(' '), bool("abc")) # 空格也是True
运算对象不是布尔值
在python
中任何类型的数据都可以作为逻辑运算符的运算对象。
数据1 and 数据2 - 如果数据1的布尔值是否为True,结果就是数据2;如果数据1的布尔值是False,结果就是数据1
数据1 or 数据2 - 如果数据1的布尔值是否为True,结果就是数据1;如果数据1的布尔值是False,结果就是数据2
not 数据1 - 如果数据1的布尔值是否为True,结果就是False;如果数据1的布尔值是False,结果就是True
print(7 and 8) # 8
print(0 and 10) # 0
print(-3 and 9) # 9
print(None and 'abc') # None
print(False and 100) # False
print(7 or 8) # 7
print(0 or 10) # 10
print(-3 or 9) # -3
print(None or 'abc') # abc
print(False or 100) # 100
print(not 100) # False
print(not 'abc') # False
print(not "") # True
赋值运算符:=
、+=
、-=
、*=
、/=
、%=
、//=
、 **=
。
重要结论:赋值运算符的作用是给变量赋值,不会产生结果(数据)!!!
# print(a = 10) 报错
a = 10
print(a)
=
=
右边的数据赋给左边的变量。(=
的左边必须是变量)abc = 20 # 10 = 20 不合法
+=
、-=
、*=
、/=
、%=
、 //=
、**=
变量 += 数据 — 将变量中的值取出来和指定进行加法运算,然后将运算的结果重新赋值给变量
注意:变量必须是已经赋值过的变量
num = 100
num += 10 # 与 num = num + 10 同义
print(num)
num -= 20
print(num) # 90
num *= 2
print(num) # 180
num %= 3
print(num) # 0
运算符优先级
1.运算符优先级从高到低:数学运算 > 比较运算 > 逻辑运算 > 赋值运算
2.数学运算符优先级:
**
>*、/、%、//
>+、-
3.有括号先算括号里面的,括号只有小括号。
if
分支结构流程控制
流程控制值得是控制程序的执行顺序。
1.顺序结构(默认):代码从上往下一条一条的按顺序执行。
2.选择/分支结构:根据条件选择执行某个操作(if语法)。
3.循环结构:让代码重复执行。(for循环、while循环)。
if
分支结构解决的问题:如果…就…
if
单分支结构
解决的问题:如果满足某个条件就执行某个操作,条件不满足的时候对应的操作就不执行。
语法:
if 条件语句:
代码段
说明:
if — 关键字,固定写法
条件语句 — 任何有结果的表达式(赋值语句不行)
冒号 — 固定写法,注意是英文的冒号
代码段 — 和if保持一个缩进的一条或者多条语句,满足条件才会执行的代码
执行过程
先判断条件语句的布尔值是否为True,如果是就执行代码,否则代码段不执行。
age = 19
if age >= 18:
print('可以进入网吧')
print('可以吸烟')
练习1:如果指定的数是偶数就打印’偶数’,否则不打印
num = 9
if num % 2 == 0:
print(num, '是偶数')
练习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。
练习1:根据输入的数据的性质,打印’奇数‘或者’偶数‘。
num = int(input('请输入数字:'))
if num % 2 == 0:
print('偶数')
else:
print('奇数')
练习2:写程序判断一个三位数是否是回文数
num = int(input('请输入一个三维整数:'))
if num % 10 == num // 100:
print('回文数')
else:
print('不是回文数')