目录
运算符与表达式
Python运算符包括赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符和成员运算符。表达式是将不同类型的数据(常量、变量、函数)用运算符按照一定的规则连接起来的式子。
1.1算术运算符与算术表达式
Python支持的算术运算符如下表所示:
运算符 | 操作 | 实例 |
+ | 加法 | 5+2 结果是 7 |
- | 减法 | 5-2 结果是 3 |
* | 乘法 | 5*2 结果是 10 |
/ | 除法 | 5/2 结果是 2.5 |
% | 取余 | 5%2 结果是 1 |
** | 幂(指数) | 5**2 结果是 25 |
// | 整除 | 5//2 结果是 2 |
上述算术运算符的优先级如下表所示,表中优先级由低到高排列。
运算符 | 操作 |
+、- | 加法和减法 |
*、/、//、% | 乘法、除法、整除和取余 |
+x、-x | 正号和负号 |
** | 幂 |
() | 括号 |
算术表达式是常量、变量、函数和算术运算符的任意组合,并且表达式的运算结果是一个数值。
注意:
- 一个单独的常量或变量是表达式的一种特殊形式;
- 表达式中使用的常量不能出现逗号、美元符号和百分号;
- 表达式中不能出现未使用运算符连接的独立常量或变量;
- 不同类型的数值参与运算时,会发生强制类型转换。一个整数和一个浮点数相加时,首先把整数转换成浮点数,运算结果也是浮点数。
计算圆锥体的体积和表面积的程序如下:
import math
r=float(input("input r:"))
h=float(input("input h:"))
s=math.pi*r*math.sqrt(r**2+h**2)+math.pi*r**2
v=(1/3)*math.pi*r**2*h
print("该圆锥的体积为:={0:.2f}".format(v),\
"该圆锥的表面积为:={0:.2f}".format(s))
运行结果为:
E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/ssss.py
input r:12
input h:25
该圆锥的体积为:=3769.91 该圆锥的表面积为:=1497.82
Process finished with exit code 0
在做这个题的时候,刚开始把输入格式写错了,因为不知道怎样写,就凭感觉写的;(详见下一节:输入和输出)
然后就是math这个模块中的函数不太熟悉;
然后就是print的输出格式不太熟悉,之前都是直接输出一个变量,直接写在括号里就行了,像这种不仅输出变量的格式不太清楚。
1.2关系运算符和逻辑运算符
关系运算符用来比较两个数字或对象,比较运算的结果是False或者True。字符串比较也可以使用关系运算符,比较时按字母在编码表中的位置来决定其大小,位置靠前的字符比位置靠后的字符小。Python的关系运算符如下表所示:
运算符 | 操作 | 实例 |
== | 等于 | 5==2 结果为 False |
!= | 不等于 | 5!=2 结果为 True |
< | 小于 | 5<2 结果为 False |
<= | 小于或等于 | 5<=2 结果为 False |
> | 大于 | 5>2 结果为 True |
>= | 大于或等于 | 5>=2 结果为 True |
is | 判断两个标识符是否引用同一个对象 | 引用(地址)比较 |
is not | 判断两个标识符是否引用不同的对象 | 引用(地址)比较 |
注意:
- 8个比较运算符的优先级相同;
- Python允许x<y<=z这样的链式比较,它相当于(x<y)and(y<=z);
- 复数不能比较大小,只能比较是否相等;
- 除整数、浮点数、字符串可以比较外,所有其他类型的值之间不能直接比较;
- 用关系运算符连接的表达式成为关系表达式。表达式中可以包含变量、算术运算符和函数。在没有括号的情况下,先进行算术运算或函数运算,再进行比较。
逻辑运算符用来连接若干个关系表达式,以便构造复杂的判断。使用这些运算的判断称为复合运算。Python中的逻辑运算符如下表所示:
运算符 | 操作 | 说明 |
and | 逻辑与 | a and b,当a为真时才计算b,a与b都为真时,结果为真;否则为假 |
or | 逻辑或 | a or b,当a为假时才计算,a与b都为假时,结果为假;否则为真 |
not | 逻辑非 | not a,取反,a为真时,结果为假;否则为真 |
注意:
- 逻辑运算符的优先级低于关系运算符和算术运算符;
- 在无括号的情况下,三个运算符的优先级为:not>and>or;
- Python中的and和or具有短路求值的特点。运算规则如上表所示;
- 使用in或not in成员运算符可以简化条件。
判断某年是否是闰年的程序如下:
year=int(input('请输入年份:'))
if(year%100!=0) and (year%4==0) or (year%400==0):
print("是闰年")
else:
print("是平年")
执行结果:
E:\PycharmProjects\PythonTest\venv\Scripts\python.exe E:/PycharmProjects/PythonTest/ssss.py
请输入年份:400
是闰年
Process finished with exit code 0
在写代码时,有两点要注意:
- 好像是输入数的时候都要进行强制赋类型,这个是用int(),前面有个用的是float();(详见下一节:输入和输出)
- 在写if语句的时候,不用括号把判断条件括起来;但是括起来也是对的。
1.3赋值运算符
Python除了普通赋值运算符之外,还支持复合赋值运算符,赋值运算的规则是从右往左运算。Python中的赋值运算符如下表所示:
运算符 | 操作 | 实例 |
= | 简单赋值运算符 | c=5+2 c为7 |
+= | 加法赋值运算符 | c+=2 等价于 c=c+2 |
-= | 减法赋值运算符 | c-=2 等价于 c=c-2 |
*= | 乘法赋值运算符 | c*=2 等价于 c=c*2 |
/= | 除法赋值运算符 | c/=2 等价于 c=c/2 |
%= | 取余赋值运算符 | c%=2 等价于 c=c%2 |
**= | 幂赋值运算符 | c**=2 等价于 c=c**2 |
//= | 整除赋值运算符 | c//=2 等价于 c=c//2 |
1.4位运算符
位运算的规则是把数字转换为二进制数后进行运算,运算结果再转换回原来的进制。位运算符如下表所示:
运算符 | 操作 | 实例 |
& | 按位与运算符:对参与运算的两个值,如果两个对应的位都为1,则该位的结果为1;否则为0 | 12&5 结果为 4 |
| | 按位或运算符:只要对应的两个二进制位有一个为1,结果位就为1 | 12|5 结果为 13 |
^ | 按位异或运算符:当两个对应的二进制位相异时,结果为1 | 12^5 结果为 9 |
~ | 按位取反运算符:对数据的每个二进制位取反 | ~12 结果为 -13 |
<< | 左移运算符:运算数的各二进位全部左移若干位,由该符号右边的数指定移动的位数,高位丢弃,低位补0 | 12<<5 结果为 384 |
>> | 右移运算符:运算数的各二进位全部右移若干位,由该符号右边的数指定移动的位数,低位丢弃,高位补0 | 12>>5 结果为 0 |
注意:
- ~12的求法。原码、反码和补码的知识还没掌握好;
- 12<<5的求法。
1.5成员运算符
成员运算符用来判断一个元素在某一个序列中。比如,判断一个字符是否属于某个字符串,判断某个对象是否是列表中的一个元素等。成员运算符如下表所示:
运算符 | 操作 | 实例 |
in | 在指定的序列中找到,返回真;否则返回假 | a in b |
not in | 在指定的序列中没有找到,返回真;否则返回假 | a not in b |
总结:整体来说,本小节的内容比较少也比较简单,但是还是存在一些掌握不太好的地方,有时候会了,但是过一段时间就又忘了。还是要多看。
下一节: