文章目录
前言
程序中的大多数语句(逻辑行)都包含表达式(Expressions)。
例如,2+3
,表达式可以拆分为运算符(Operators)与操作数(Operands);
运算符(Operators)是进行某些操作,并且可以使用一些如(+
)等符号或特殊关键词加以表达的功能;运算符需要一些数据来进行操作,这些数据就被称为操作数(Operands),如上述例子中的 2
、3
。
数值表示
十六进制、八进制和二进制数值表示
>>> 0xAF
175
>>> 0o10
8
>>> 0b1011010010
722
>>>
无穷大与无穷小表示
# 表示正无穷大
float('inf')
float('Inf')
# 表示负无穷大
float('-inf')
float('-Inf')
-float('inf')
-float('Inf')
>>> a = float('inf')
>>> b = float('-inf')
>>> a
inf
>>> b
-inf
>>> a + 99
inf
>>> a * 10
inf
>>> a / 10
inf
>>> c = - b
>>> a == c
True
无穷大加上常数或者乘上常数还是无穷大,无穷大和无穷大相等;
常数除以无穷大则为 0 。
非数字表示 NaN
d = float('nan')
任何常数加、乘 nan
,其结果仍然是 nan
;
nan
也不可以与其他数或者 nan
进行比较,操作均返回 False
。
无穷大除以自己是 nan
,正无穷和负无穷的和也是 nan
。
>>> a/a
nan
>>> a/b
nan
基本运算
运算符
-
+
(加)
两个对象相加;
3+5
则输出8
;'a' + 'b'
则输出'ab'
。 -
-
(减)
从一个数中减去另一个数,如果第一个操作数不存在,则假定为 0;
-5.2
将输出一个负数;50-24
输出26
。 -
*
(乘)
给出两个数的乘积,或者返回字符串重复指定次数后的结果;
2*3
输出6
;'la'*3
输出'lalala'
。 -
**
(乘方)
返回 x 的 y 次方;
3**4
输出81
(即3*3*3*3
)。 -
/
(除)
x 除以 y;
13/3
输出4.33333333333333
。 -
//
(整除)
x 除以 y 并对结果 向下取整 至最接近的整数;
13//3
输出4
;
-13//3
输出-5
。 -
%
(取模)
返回除法运算后的余数;
13%3
输出1
;-25.5%2.25
输出1.5
。 -
<<
(左移)
将数字的位向左移动指定的位数(每个数字在内存中以二进制数表示,即 0 和 1)。
2<<2
输出8
;
2
用二进制表示为10
;向左移 2 为1000
,表示为十进制中的8
。 -
>>
(右移)
将数字的位向右移动指定的位数。
11>>1
输出5
;
11
在二进制中表示为1011
; 右移一位后为101
,表示为十进制中的5
。 -
&
(按位与)
对数字进行按位与操作;
5&3
输出1
。 -
|
(按位或)
对数字进行按位或操作;
5|3
输出7
。 -
^
(按位异或)
对数字进行按位异或操作;
5^3
输出6
。 -
~
(按位取反)
x 的按位取反结果为 -(x+1);
~5
输出-6
。 -
<
(小于)
返回 x 是否小于 y;所有的比较运算符返回的结果均为True
或者False
。
5<3
输出False
;3<6
输出True
;
比较可以任意组成连接:3<5<7
返回True
。 -
>
(大于)
- 所有正整数的按位取反是其本身+1的负数:
~5
输出-6
;- 所有负整数的按位取反是其本身+1的绝对值:
~(-5)
输出4
求绝对值
# 方法1:利用条件判断
a = float(intput('Please input a number: '))
if a>=0:
pass
else:
a = -a
print('a 的绝对值为 {}'.format(a))
# 方法2:利用内置函数
b = float(intput('Please input a number: '))
b = abs(b)
print('b 的绝对值为 %f' % b)
# 方法3:利用内置模块
c = float(intput('Please input a number: '))
c = math.fabs(c)
print('c 的绝对值为 ' + str(a))
# 方法1 和 方法3 的输出格式都可以保证与原始输入数的小数位一致
# 方法2 的输出格式可以自己制定小数位,默认是六位
运算符号:/ 和 //
" /
" 表示浮点数除法,返回 浮点结果;
" //
" 表示整数除法,返回 不大于结果的一个最大的整数。
print("6 // 4 = " + str(6 // 4)) # 6 // 4 = 1
print("6 / 4 = " + str(6 / 4)) # 6 / 4 = 1.5
round
函数可以将浮点数圆整为与之最接近的整数,并且在两个数一样近时,圆整到偶数。
>>> 2 // 3
0
>>> round(2/3)
1
如果要将给定的数 向下圆整,可以使用 floor
:
>>> import math
>>> math.floor(32.9)
32
如果要将给定的数 向上圆整,可以使用 ceil
:
>>> math.ceil(32.3)
33
>>> math.ceil(32)
32
运算符号:%
1、作为数学运算符 %
对于两个整数 a
、b
:
a % b
= a
整除 b
的余数
>>> 10 % 3
1
>>> 10 % (-3)
-2
>>> -10 % 3
2
>>> -10 % -3
-1
单从上述解释,可能不是很清楚明白 %
;具体说来,a % b
等价于 a- [ ( a // b ) * b ]
>>> 10 // 3
3
>>> 10 //-3
-4
>>> -10 // 3
-4
>>> -10 // -3
3
2、作为字符串操作符 %
%s
—— 字符串 (采用 str()
的显示)
%r
—— 字符串 (采用 repr()
的显示)
%c
—— 单个字符
%b
—— 二进制整数
%d
—— 十进制整数
%i
—— 十进制整数
%o
—— 八进制整数
%x
—— 十六进制整数
%e
—— 指数 (基底写为 e
)
%E
—— 指数 (基底写为 E
)
%f
—— 浮点数
%F
—— 浮点数,与上相同
%g
—— 指数( e
)或浮点数 (根据显示长度)
%G
—— 指数( E
)或浮点数 (根据显示长度)
%%
—— 字符"%
"
乘方符号: **
乘方运算符的优先级比求负高:
>>> -3**2
-9
>>> (-3)**2
9
常见异常类型
UnboundLocalError
: 试图访问一个还未设置的全局变量,基本是由于存在另一个同名的全局变量导致;KeyboardInterrupt
:Ctrl + C
被按下;IndentationError
orunexpected indent
: 语法错误,代码没有正确对齐等;AssertionError
:assert
语句失败;AttributeError
: 试图访问一个对象没有的属性;SyntaxError
: Python 代码语法逻辑出错,无法执行;ImportError
: 无法引入模块或者包,基本是路径的问题;NameError
: 使用一个还未赋予对象的变量;ValueError
: 传入一个不被期望的值,即使类型正确;TypeError
: 传入对象的类型与要求不符合;IndexError
: 下标索引超出序列边界;KeyError
: 试图访问字典中不存在的键;IOError
: 输入输出异常,基本是无法打开文件。