Python运算符
数学运算符、赋值运算符、比较运算符、逻辑运算符、位运算符…
数学运算符
数学运算符 | 名称 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余、取模 |
// | 整除 |
** | 幂运算 |
-
+
、-
、*
中,如果运算对象全部是整数,运算结果为整型;如果运算类型有浮点数,则输出结果位浮点型 -
/
,不管运算对象是什么类型,运算结果类型均为浮点数print(5 / 2, 6 / 2) # 2.5 3.0
-
//
- 整除:向小取整,任何除法运算得到的结果均为整数(int
)print(2 // 3) # 0
-
%
- 取余print(5 % 2) # 1 print(2 % 3) # 2
-
**
- 幂运算:涉及到开方结果均为浮点型(float
)print(2 ** 2) # 4 print(4 ** 0.5) # 2.0 print(4 ** 2.5) # 32.0 print(4 ** -0.5) # 0.5
逻辑运算符
逻辑运算符 | 名称 |
---|---|
and | 逻辑与运算 |
or | 逻辑或运算 |
not | 逻辑非运算 |
逻辑运算结果均为布尔值
-
and
- 条件1 and 条件2,条件1和条件2都成立时,整体条件成立。反之,条件不成立。
中断:and左边条件不成立时,and右边条件无需再判断。print(True and True) # True print(True and False) # False print(False and False) # False
tips: 复制快捷键 ctrl + d 直接复制到下一行 无需选择整体 只需选中需要复制的那一行的任意位置
-
or
- 条件1 or 条件2,条件1和条件2至少有一个成立,整体成立。都不成立时,整体才不成立。
中断:or左边条件成立时,or右边条件无需再判断。print(True or True) # True print(False or True) # True print(False or False) # False
-
not
- 取反,反义词print(not True)
练习
判断闰年:
1. 能被4整除但是不能被100整除。
2. 能被400整除。
地球公转:365天5小时40+分钟。
# 练习:判断一个年份是否时闰年(0=False,非0均为True)
# bool() - 能够将数据转为布尔值
year = 2004
print((not year % 4 and year % 100) or not year % 400)
print(bool(not year % 4 and year % 100) or not year % 400)
比较运算符
比较运算符 | 名称 |
---|---|
> | 大于 |
< | 小于 |
== | 等于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
-
Python中比较大小是同类型数据之间比较大小。
-
比较大小得到的结果是布尔值。(逻辑运算也是)
-
数字比较大小
print(3 > 4) # False
问题:为什么python能够比较大小?
Python使用的编码值叫万国码:unicode
,其是ASCII编码的拓展。
数字0-9对应的十进制编码值:48-57
print('A' < 'a') # True
A-Z对应的十进制编码值:65-90;a-z对应的编码值:97-122
编码值是计算机比较大小的唯一标准
-
==
、!=
print(0 != 1) # True print(0 == 1) # False
-
>=
、<=
print(2 >= 2) # True
练习:判断年份是否是闰年
year = 1900
result = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
print(result)
赋值运算符
=
、+=
、 -=
、 *=
、 /=
、 //=
、 %=
、 **=
先算等号右边,再给等号左边赋值
变量 += 数据
- 将变量中保存的数据取出来和后面的数据进行加法运算,最后将运算结果保存到前面的变量中
变量需先赋值
a = 10
a += 5 # a = a + 5
a **= 2 # a = a ** 2
print(a)
a %= 2 # a = a % 2
print(a)
复合赋值运算符
a *= a + 3 # a = a * (a + 3)
print(a)
运算符优先级
- 先算小括号整体。
- 算数运算符:
**
>*
、/
、%
、//
>+
、-
- 算数运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
练习:华氏度和摄氏度的转换 C(摄氏度) = (F - 32)/1.8
F = 68
C = (F - 32)/1.8
print('华氏度{}=摄氏度{}'.format(F, C))
print(f'华氏度{F}=摄氏度{C}') # 华氏度68=摄氏度20.0
C = round((F - 32) / 1.8, 1) # round(参数1,参数2) --> 参数1等于数值,参数2需要保留的小数位数。
保留小数位数函数:round(参数1,参数2)
—> 参数1等于数值,参数2需要保留的小数位数。
练习:根据指定的圆的半径,计算圆的周长和面积
r = 4
pi = 3.14
C = 2 * pi * r
S = pi * r ** 2
print(f'半径为{r}的圆的周长为{C},面积为{S}') # 半径为4的圆的周长为25.12,面积为50.24
三目运算符
案例:判断一个人是否成年
age = 17
if age < 18:
print('未成年')
else:
print('成年')
result = '成年' if age >= 18 else '未成年'
print(result)
三目运算符语法:
变量 = '结果1' if '条件' else '结果2'
条件成立,结果为结果1,反之为结果2
简单数据类型转换
-
布尔值转换。
所有的数据都可以转换为布尔值(bool)
bool()
print(bool(0), bool(1), bool(-1)) # False True True
-
0
转换为Flase
,非0
全是True
print(bool(''), bool([]), bool({}), bool(None)) # False False False False
-
所有的空值对象全是
False
。
-
-
数字转换
-
整型(int)
int()
-
布尔值可以转换成整型: False --> 0,True --> 1
print(int(bool(100))) # 1
-
浮点型转整型:向小取整
print(int(0.1)) # 0 print(int(.1)) # 0 print(int(1.)) # 1
-
去掉引号是一个==整数==的字符串可以转整型
print(int('1.0')) # ValueError: invalid literal for int() with base 10: '1.0' print(int('1')) # 1
-
-
浮点型(float)
float()
-
整型转浮点型。
print(float(1)) # 1.0
-
去掉引号是数字的字符串可以转成浮点型
print(float('.9')) # 0.9 print(float('9.')) # 9.0 print(float('9.9')) # 9.9
-
布尔值可以转浮点型 —>
False
:0.0
;True
:1.0
-
bool()、int()、float()、str()、list()等 —> 构造器语法
year = int(input('请输入一个年份:')) print(year, type(year)) # <class 'int'>
-
分支结构
from keyword import kwlist
print(kwlist)
# ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
分支结构关键词:if
、else
、elif
-
单分支结构
if
、else
案例:账号密码登录
username = input('请输入用户名:') password = input('请输入密码:') if username == 'admin' and password == '123456': print('登陆成功') else: print('登陆失败')
单分支结构语法:
if 条件: 代码段1 else: 代码段2
缩进:一般把缩进看作四个空格,一个程序的缩进必须保持一致。
先判断条件语句是否为
True
(如果条件语句的结果不是布尔,将结果转换成布尔值再判断),如果为True
就执行代码段然后再执行后续的其他语句;否则就不执行代码段直接执行后续的其他语句。练习:判断一个年份是否是闰年
year = int(input('请输入年份:')) if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: print(year, '是闰年', sep='') print(f'{year}是闰年') else: print(year, '不是闰年', sep='') print(f'{year}是平年')
-
多分支结构
if year % 4 == 0 and year % 100 != 0: print(f'{year}是闰年') elif year % 400 == 0: print(f'{year}是闰年') else: print(f'{year}是平年')
多分支结构语法:
if 条件1: 代码段1 elif 条件2: 代码段2 .... else: 代码段N
-
嵌套分支
案例:判断一个数字是否是偶数,如果是偶数,再判断是否是3的倍数。
随机模块:random
from random import randint
randint(a, b)
- a < b, randint能够生产[a, b] (闭区间)范围的随机整数num = randint(0, 100) print(num) if num % 2 == 0: print('偶数') if num % 3 == 0: print('是3的倍数') else: print('奇数')
嵌套分支语法:
if 条件1: 代码段 if 条件: ... else: 代码段
练习:
-
输入三条边长,如果能构成三角形就计算周长和面积。
side1 = float(input('输入三角形的一条边长:')) side2 = float(input('输入三角形的第二条边长:')) side3 = float(input('输入三角形的第三条边长:')) if side1 + side2 > side3 and side1 + side3 > side2 and side2 + side3 > side1: C = side1 + side2 + side3 S = (C * 0.5 * (C * 0.5 - side1) * (C * 0.5 - side2) * (C * 0.5 - side3)) ** 0.5 print(f'三边长为{side1}、{side2}、{side3}的三角形,周长为{C},面积为{round(S, 2)}') else: print(f'边长为{side1}、{side2}、{side3}不构成三角形')
-
百分制成绩转换为等级制成绩。
要求:如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E。
score = int(input('请输入成绩:')) if score >= 90: print('A') elif score >= 80: print('B') elif score >= 70: print('C') elif score >= 60: print('D') else: print('E')
-
英制单位英寸和公制单位厘米互换。
注意:厘米=英寸/2.54
num = float(input('请输入数字:')) unit = input('请输入单位:') if unit == 'cm': print(f'{num}{unit} = {num * 2.54}in') elif unit == 'in': print(f'{num}{unit} = {num / 2.54}cm') else: print('系统无法识别')