__author__:Orange
一、运算符
Python中支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算
1.数学运算符:
数学运算符:+(加法运算)、-(减法运算)、*(乘法运算)、/(除法运算)、%(取余、取模)、//(整除)、**(幂运算)
1) +、-、*、/和数学中功能意向
2) % - 取余、取模(数学中求余数)
x % y - 求 x 除以 y 的余数
应用1:判断一个数是否能被另一个数整除(判断奇偶性)
应用2:取整数的低位数
x % 10 -获取x的个位数
x % 100 - 获取x的后两位数
3)// - 整除(商取整)
x // y - x除以y的商向小取整
应用3:去掉低位数
num = 23562 // 100 - num = 235
num = int(input(":"))
if num > 100:
a = num // 100 % 10 # a = num % 1000 //100
print(a)
else:
print("error")
4) ** - 幂运算
x ** y -> 求 x 的 y 次方
例如:
3 ** 3 ->27
8 ** 0.5 -> 4.0
8 ** (1/3) -> 2.0
2.比较运算符
比较运算符:> 、 < 、==、>=、<=、!=
比较运算符运行结果为bool
型
print("sda" == "sda") # True
3.逻辑运算符
逻辑运算符:and(与)、or(或)、not(非)
1) and - 与
多个条件同时为True 返回True
只要有一个不满足返回False
2) or - 或
条件判断中至少有一个满足返回True
两个同时不满足返回False
3) not - 非
条件判断,True变False,False变True
not True -> False
not False -> True
4) 短路操作
and 的短路操作:条件1 and 条件2 - 如果条件1是False,那么条件2对应的代码不会执行
or 的短路操作:条件1 or 条件2 - 如果条件1是True,那么条件2代码不会执行
5)运算对象不是布尔值
实际开发的时候逻辑运算和运算结果一般都是布尔,但是面试的时候会考运算对象不是布尔的情况
表达式1 and 表达式2 - 如果表达式1的结果是True,那么运算结果就是表达式2的值;
如果表达式1的结果是False,那么运算结果是表达式1的值;
表达式1 or 表达式2 - 如果表达式1的结果是False,那么运算结果是表达式2的值;
如果表达式1的结果是True,那么运算结果是表达式1的值。
注意:如果表达式的值不是布尔,就转换成布尔再进行判断
Python中任何类型数据都能转换为布尔值,除了为0为空的值其余全是True
逻辑与运算
num = 21
print('能否同时被3和7整除:', num % 3 == 0 and num % 7 == 0) # 结果为True
逻辑或运算
num = input("请输入:")
print("今天下雨或者出太阳:", num == "下雨" or num == "出太阳")
闰年
year = 2012
print("是否是闰年:", year % 4 == 0 and year % 100 != 0 or year == 400) # True
逻辑非运算
# 如果正向写很麻烦,但反向写简单,就反向写调节然后加not
age = 18
print(not age > 18) # True
运算对象不是布尔值
print(5 and 3) # 3
print(5 or 3) # 5
4.赋值运算符
赋值运算符:=、+=、-=、*=、/=、%=、//=、**=
所有的赋值运算符都是给变量赋值,赋值运算符的左边必须是变量;
符合的赋值运算符的左边变量必须是已经赋值过的变量。
a = 10
a += 10 # a = a + 10
a -= 10 # a = a - 10
a *= 10 # a = a * 10
a /= 10 # a = a / 10
a %= 10 # a = a % 10
a //= 10 # a = a // 10
a **= 10 # a = a ** 10
print(a) # 0.0
5.运算优先级
数学运算符 > 比较运算符 > 赋值运算符(最低)
数学运算符:’**’ > ‘*、/、%、//’ > ‘+、-’
逻辑运算符:and > or > not
如果有括号先算括号里面的
6.位运算
位运算:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)、<<(左移)
位运算的运算效率比一般的运算符都要高(高出几十倍到几百倍)
应用1:
判断整数的奇偶性 - 数字对1进行按位与运算,如果结果是1就是奇数,结果为0是偶数
应用2:
数字 << N - 快速乘 '2**N'
数字 >> N - 快速整除 '2**N'
二、分支结构
1.流程控制
结构 | 流程 |
---|---|
顺序结构 | 从上往下执行每一条语句(默认) |
分支结构 | 根据条件选择性的执行代码(if语句) |
循环结构 | 让代码重复执行(for、while) |
2.分支结构
1)if单分支结构 - 满足条件执行某个操作,不满足就不执行
语法:
if 条件语句:
代码段
说明:
1.if - 关键字,固定写法
2.条件语句 - 任何有结果的表达式:任何类型的数据、
除赋值语句以外的运算表达式、函数调用表达式
3.冒号 - 固定写法。(Python中冒号后一般需要换行产生缩进来表示代码块)
4.代码段 - 和if保持一个缩进(tab)的一条或者多条语句;
在满足条件的时候才会执行的代码
执行过程:
先判断条件语句是否为True(如果不是布尔值就转换成布尔再判断)
如果是True就执行代码段,否则代码段不执行
if语句代码段中至少要有一条语句,在不确定的时候可以使用pass占位
num = int(input("请输入一个整数:"))
if num & 1 == 0:
print("这是一个偶数")
Python中的比较运算符支持连写多方式表示取值范围
2) if双分支结构 - 满足条件执行某个操作,条件不满足执行另外的一个操作
语法:
if 条件语句1:
代码块1 (满足条件要执行的代码)
else:
代码块2 (不满足条件要执行的代码)
执行过程:
先判断条件语句是否为True,如果是就执行代码块1,否则执行代码块2
if num & 1 == 0:
print("这是一个偶数")
else:
print("这是一个奇数")
age = int(input("请输入年龄:"))
if age >= 18:
print("成年人")
else:
print("未成年")
year = int(input("请输入年份:"))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print("闰年")
else:
print("非闰年")
3) if多分支结构 - 根据不同的条件执行不同的操作
语法:
if 条件语句1:
代码块1
elif 条件语句2:
代码块2
...
else:
代码块N
执行过程:
先判断条件语句1是否为True,如果是直接执行代码块1,整个if结构结束;
如果条件语句1为False,判断是否条件语句2是否为True,若是,就执行代码块2;
如果整个if条件语句都不满足就执行else的代码块。
例一:
gpa = float(input("请输入学生绩点:"))
if gpa > 4:
print("一等")
elif gpa >= 3.5:
print("二等")
elif gpa >= 3:
print("三等")
elif gpa >= 2.5:
print("四等")
else:
print("还请加油")
例二:
height = float(input("请输入您的身高(m):"))
weight = float(input("请输入您的体重(kg):"))
if 18.5 <= weight/height**2 <=24.9:
print("您身材正常!")
else:
print("您需要多锻炼")