day2-运算符和分支结构
python中支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算(了解)
-
数字运算符:+(加法运算)、-(减法运算)、(乘法运算)、/(除法运算)、%(取余、取模)、//(取整)、*(幂运算)
1)+、-、*、/ 和数学中的 +、-、*、÷的功能是一样的
% - 取余、取模(数学中叫求余数) // - 整除(商取整) ** - 幂运算 x % y -> 求 x 除以 y 的余数 x // y -> x 除以y 的商 向小取整 x ** y -> 求 x 的 y 次方 应用 1、判断一个数是否能够被另一个数这整除 2、取整数的低位数 去掉低位数 如果次方数是 1/n 表示开 n 次方 # % - 取整数的低位数 - 获取任意整数的个位数 print(1536 % 10) # 6 print(1536 % 100) # 36
# // - 整除(商取整 向小取整) print(5 // 2) # 2 print(-5 // 2) # -3 # 去掉低位数 num = 12345 print(num // 10) # 1234 print(num // 100) # 123 print(num // 1000) # 12 # 练习: 获取任意大于100的数的百位数 # 125 -> 1 12345 -> 3 456865 -> 8 # 方法一: num = int(input('输入任意大于100的整数:')) print('这个任意数的百位数是:',num // 100 % 10) # 方法二: print(num % 1000 // 100)
# ** - 幂运算 print(2 ** 3) # 8 # 如果次方数是1/N 表示开N次方 print(4 ** 0.5) # 2.0 print(8 ** 1/3) # 2.0
-
比较运算符: >、<、>=、<=、==、 !=
# 所有的比较运算符运算结果都是布尔值!
print(10 > 20) # False print(10 < 20) # True print(10 >= 20) # False print(10 <= 20) # True print(10 == 10) # True print(10 != 10) # False # 注意:python中的比较运算符支持连写的方式表示取值范围 age =20 print(18 <= age <=20) # True
-
逻辑运算符:and(逻辑与)、or(逻辑或)、not(逻辑非)
1)and - 逻辑与
""" 应用场景: 相当生活中的“并且”,当需要多个条件同时满足的时候使用 运算规则: 都是True 结果就是True, 只有有一个是False结果就是False True and True -> True True and False -> False False and True -> False False and False -> False """ # 获得奖学金的条件: 绩点大于3.5并且超评分不低于90 grade = 3.9 score = 89 print('是否能拿奖学金:',grade > 3.5 and score >= 90) # False # 练习:写出一个数是否能同时被3和7整除的条件 num = 67 # 方法一: print('是否能同时被3和7整除', num % 3 == 0 and num % 7 == 0) # 方法二: print('是否能同时被3和7整除',num % 21 == 0)
2)or - 逻辑或
""" 应用场景:相当于生活中的“或者”,需要多个条件中只有一个条件满足的时候使用 运算规则: 都是False结果就是Fals,只要有一个是True结果都是True True or True -> True True or False -> True False or True -> True False or False -> False """ # 练习: 写出判断闰年的条件(能被4整除但不能被100整除),或者能被400这整除 year = 2012 print('是否是闰年:',(year % 4 == 0 and year % 100 != 0) or year % 400 == 0 )
- not - 逻辑非
""" 应用场景:对某个条件进行否定 运算规则:True 变 False False 变 True not True -> False not False -> True """ age = 18 print(not age >= 18) # False # 练习: 写出不能同时被3和7整除的条件 # 什么时候用not:如果一个条件正向写很麻烦,但是反向写很简单,就反向写条件然后加not num = 67 print(not num % 21 == 0)
- *短路操作!!
# and 的短路操作: 条件1 and 条件2 - 如果条件1是False,那么条件2对应的代码不会执行 # or 的短路操作: 条件1 or 条件2 - 如果条件1是True,那么条件2对应的代码不会执行 False and print('====') # 条件1是False,那么后面的代码就不会执行 True or print('-----') # 条件1是True,那么后面的代码就不会执行
5)*运算对象不是布尔值
""" 实际开发的时候逻辑运算符的 运算对象和运算结果一般都是布尔值但是面试的时候喜欢考运算对象不是布尔值的情况 表达式1 and 表达式2 - 如果表达式1的结果是True,那么运算结果就是表达式2的值 如果表达式1的结果是False,那么运算结果就是表达式1的值 表达式1 or 表达式2 - 如果表达式1的结果是True,那么运算结果就是表达式1的值 如果表达式1的结果是False,那么运算结果就是表达式2的值 """ a.布尔转换 print(bool(0)) # False print(bool(0.0)) # False print(bool('')) # False print(bool(None)) # False print(bool('False'),bool(' ')) # True True print(bool(False)) # False print(5 and 3) # 3 print(5 or 3) # 5 print(False or '123') # 123
-
赋值运算符:=、+=、-=、=、/=、%=、//=、*=
# 所有的赋值运算符都是用来给变量赋值的,赋值运算的左边必须是变量 # 复合的赋值运算左边的变量必须是已经赋值过的变量 # 1). = a = 10 # 2).复合的赋值运算符 a += 1 # a = a +1 print(a) # 11 a *= 2 # a = a*2 print(a) # 22
-
运算符的优先级
# 数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符 # 数学运算符: ** > *、/、%、// > +、- # 逻辑运算符:and > or # 如果有括号先算括号里面的内容
-
*位运算:&(按位与)、|(按位或)、^(按位亦或)、~(按位取反)、>>(友移)、<<(左移)
# 位运算的运算效率比一般的运算符都要搞(高出十几倍) # 应用1:判断整数的奇偶性 - 数字对 1 进行按位与运算,如果结果为 1 就是奇数,结果为 0 就是偶数 print(28 & 1, 10 & 1, -20 & 1) # 0 0 0 print(11 & 1, 9 & 1, -23 & 1) # 1 1 1 # 应用2: # 数字 << N - 快速乘 2 ** N # 数字 << 1 - 快速乘2: 数字 * 2 # 数字 >> N - 快速整除 2 ** N # 数字 >> 1 - 快速整除2: 数字 // 2 print(4 << 1, 5 << 1, 5 << 2) # 8 10 20 print(4 >> 1, 16 >> 3, -5 >> 1) # 2 2 -3
分支结构
1.流程控制
1)顺序结构 ———— | 从上往下依次执行每一条语句(默认) |
---|---|
2)分支结构 ———— | 根据条件选择性来执行代码(if语句) |
3)循环结构 ———— | 让代码重复执行(for循环、while循环) |
2.分支结构
# 1)if单分支结构 - 满足条件执行某个操作,不满足就不执行
"""
语法:
if 条件语句:
代码段
说明:
1.if - 关键字,固定写法
2.条件语句 - 任何有结果的表达式:任何类型数据、除赋值语句以外的运算表达式,函数调用表达式(除了赋值语句以外的所有表达式)
3.冒号 - 固定写法(python中冒号后面一般都需要换行后产生缩进来表示代码块)
4.代码块 - 和if保持一个缩进的一条或者多条语句
在满足条件的时候才会执行的代码
执行过程:
先判断条件是否为True,(如果不是布尔值就转换成布尔值再判断)
如果是True就执行代码,否则代码段不执行
"""
if 100:
pass
if 'abc':
pass
if 10 + 20:
pass
# 注意: if 后面不能是赋值语句
# 练习:输入一个数,如果是偶数就打印“这个数能够被2整除”
num = 22
if num & 1 == 0:
print('这个数能够被2整除')
if num & 1:
print('这个数是奇数')
# 2)if 双分支结构 - 满足条件执行某个操作,条件不满足就执行另外一个操作
"""
语法:
if 条件语句:
代码块1(条件满足要执行的代码)
else:
代码块2(条件不满足要执行的代码)
执行过程:
先判断条件语句是否为True,如果为True就执行代码块1,否则执行代码块2
"""
# 练习: 如果输入的数字是偶数就打印'偶数',否则打印'奇数'
num = 22
if num & 1:
print('这个数是奇数')
else:
print('这个数是偶数')
# 练习2:根据输入的年龄值打印 '成年' 或者 '未成年'
# age = int(input('输入一个正整数:'))
age = 18
if 0 <= age <18:
print('你是未成年')
else:
print('成年了!')
# 练习3:输入年份,根据年份值打印 '闰年' 或者 '非闰年' 能被4整除但不能被100整除, 或者能被400整除
# year = int(input('输入一个年份:'))
year = 2012
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print(year,'是闰年')
else:
print(year,'不是闰年!')
# 3)if多分支结构 - 根据不同的条件执行不同的操作
"""
语法:
if 条件语句1:
代码块1
elif 条件语句2:
代码块2
elif 条件语句3:
代码块3
...
else:
代码块N
执行过程:
先判断条件语句1是否为True,如果是直接执行代码块1,然后整个if结构直接结束;
如果不为True,就判断条件语句2是否为True,如果是就执行代码块2,然后整个if结构结束;
...
依次类推,如果前面的语句都不满足就执行else后面的代码块
"""
# 输入学生的绩点,判断该学生能获取奖学金的等级
# 一等:绩点 > 4
# 二等:3.5 <= 绩点 <= 4
# 三等: 3 <= 绩点 < 3.5
# 四等:2.5 <= 绩点 < 3
# 没有:绩点 < 2.5
# grade = float(input('输入学生绩点:'))
grade = 2.2
if grade > 4:
print('一等')
elif grade >= 3.5:
print('二等')
elif grade >= 3:
print('三等')
elif grade > 2.5:
print('四等')
else:
print('没有')
作业
选择题
-
print(100 - 25 * 3 % 4)
应该输出什么? (B)A. 1
B. 97
C. 25
D. 0
-
下列哪种说法是错误的(A)。
A. 除字典类型外,所有标准对象均可以⽤于布尔测试
所有的类型都可以用于布尔测试B. 空字符串的布尔值是False
C. 空列表对象的布尔值是False
D. 值为0的任何数字对象的布尔值是False
-
下列表达式的值为True的是(B)。
A. 3>2>2
# FalseB. 1 and 2 != 1
# TrueC. not(11 and 0 != 2)
# FalseD. 10 < 20 and 10 < 5
# False -
Python不⽀持的数据类型有(A)。
A. char
B. int
C. float
D. list
-
(多选)n = 6784,以下能够获取到7 的⽅法有(C、D)。千锋Python人工智能学院
A. n / 1000 % 100
B. n % 1000 / 100
C. n // 100 % 10
D. n // 10 % 100 // 10
-
运⾏以下程序,当从键盘上输⼊12,运⾏结果是(A)。
x = (input()) print(type(x))
A.
B.
C. 出错
D.
-
下列表达式的运算结果是( D) 。
a = 100 b = False print(a * b > -1)
A. False
B. 1
C. 0
D. True
填空题
- 查看变量中数据的类型的函数名是(type)。
- 已知 x = 3 == 3 ,执⾏结束后,变量x的值为(True)。
- 已知 x = 3 ,那么执⾏语句 x += 6 之后,x的值为(9)。
- 表达式 3 ** 2 的值为(9),表达式 3 * 2 的值为(6),表达式 4 ** 0.5 的值为(2)。
编程题
-
写出判断⼀个数是否能同时被2和5整除的条件语句, 并且打印对应的结果。
num = 11 # 方法一: if num % 2 == 0 and num % 5 == 0: print(num,'能被2和5同时整除') else: print(num,'不能同时被2和5整除') # 方法二: if num % 10: # 能被10整除余数就是0;条件语句结果不为0,结果就为True print(num,'不能同时被2和5整除') else: print(num,'能同时被2和5整除') # 11 不能同时被2和5整除
-
写出判断⼀个数是否能够被2或者5整除,但是不能同时被2或者5整除的条件语句, 并且打印对应
的结果。
num = 8 方法一: if (num % 2 == 0 or num % 5 == 0) and not (num % 2 == 0 and num % 5 == 0): print(num,'满足条件') else: print(num,'不满足') # 方法二: if (num % 2 ==0 and num % 5 != 0) or (num % 2 != 0 and num % 5 == 0): print(num, '满足条件') else: print(num, '不满足条件') # 8 满足条件 # 8 满足条件
-
假设今天的上课时间为15678秒,编程计算今天上课时间是多少⼩时,多少分钟,多少秒;以‘XX
时XX分XX秒’的⽅式表示出来。
例如:100秒表示成 0时1分40秒
num = 15678 sec = num % 60 minute = num // 60 % 60 hour = num // 60 // 60 print(hour,'时', minute,'分', sec,'分',sep='') time = 15678 h = time //3600 m = time % 3600 // 60 s = time % 60 print(h,'时',m,'分',s,'秒') # 4时21分18分
-
定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!
公式: 体重(kg)/身⾼(m)的平⽅值 在18.5 ~ 24.9之间属于正常。
输出格式: 是否正常:True/False
height = 1.5 weight = 50 if 18.5 <= weight / height ** 2 <= 24.9: print('身材正常',True) else: print('不属于正常值',False) # True