python基础回顾——数字篇
前言
数字在程序语言中也是经常使用的变量类型,尽管python是不需要进行类型定义的,但是解释处理仍然是如此,对于开发者而言进行理解也方便。
整数
- 四则运算
加(+)、减(-)、乘(*)、除(/) - 特殊运算
乘方使用**
进行表示幂次运算
模运算使用%
表示
除法向下取整运算使用//
表示,对于正数和负数的运算结果取整操作注意区别(留待看客实践)
其他运算符罗列
关系(比较)运算符
运算符 表达式 说明(a=10,b=20) == a==b 如果两个操作数的值相等,则条件为真。 (a == b)求值结果为 false !=(<>) a!=b 如果两个操作数的值不相等,则条件为真。 (a != b)求值结果为 true > a>b 如果左操作数的值大于右操作数的值,则条件成为真。 (a > b)求值结果为 false < a<b
如果左操作数的值小于右操作数的值,则条件成为真。 (a < b)求值结果为 true >=
a>=b 如果左操作数的值大于或等于右操作数的值,则条件成为真。 (a >= b)求值结果为 false <= a<=b 如果左操作数的值小于或等于右操作数的值,则条件成为真。 (a <= b)求值结果为 true 赋值运算符
运算符 表达式 说明(a=10,b=20) = c=a+b 将右侧操作数的值分配给左侧操作数 c = a + b表示将a + b的值分配给c +=(<>) c+=b 将右操作数相加到左操作数,并将结果分配给左操作数 c + = a等价于c = c + a -= c-=b 从左操作数中减去右操作数,并将结果分配给左操作数 c -= a 等价于 c = c - a *= c*=b
将右操作数与左操作数相乘,并将结果分配给左操作数 c = a 等价于 c = c a /= c/=b 将左操作数除以右操作数,并将结果分配给左操作数 c /= a 等价于 c = c / a %= c%=b 将左操作数除以右操作数的模数,并将结果分配给左操作数 c %= a 等价于 c = c % a **= c**=a 执行指数(幂)计算,并将值分配给左操作数 c = a 等价于 c = c a //= c//=a 运算符执行地板除运算,并将值分配给左操作数 c //= a 等价于 c = c // a 逻辑运算符
运算符 表达式 说明(a=10,b=20) and a and b 如果两个操作数都为真,则条件成立。 (a and b)的结果为False or a or b 如果两个操作数中的任何一个非零,则条件成为真。 (a or b)的结果为True not not b 用于反转操作数的逻辑状态。 not(a and b) 的结果为True 位运算符
运算符 表达式 说明(a=60,b=13) & a & b 如果它存在于两个操作数中,则操作符复制位到结果中 (a & b) 结果表示为 0000 1100 l a l b 如果它存在于任一操作数,则复制位。 (a l b) = 61 结果表示为 0011 1101 ^ a ^ b 二进制异或。如果它是一个操作数集合,但不是同时是两个操作数则将复制位。 (a ^ b) = 49 (结果表示为 0011 0001) ~ a ~ b 二进制补码,它是一元的,具有“翻转”的效果。 (~a ) = -61有符号的二进制数,表示为1100 0011的补码形式。 << a << 2 二进制左移,左操作数的值由右操作数指定的位数左移。 a << 2 = 240 (结果表示为 1111 0000) >
a>> 2 二进制右移,左操作数的值由右操作数指定的位数右移。 a >> 2 = 15(结果表示为0000 1111) 成员运算符,测试给定值是否为序列中的成员。
运算符 表达式 说明(a=60,b=13) in a in b 如果在指定的序列中找到一个变量的值,则返回true,否则返回false not in a not in b 如果在指定序列中找不到变量的值,则返回true,否则返回false 身份运算符,身份运算符比较两个对象的内存位置。
运算符 表达式 说明(a=60,b=13) is a is b 如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False is not a is not b 如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False 运算符优先级,下表列出了从最高优先级到最低优先级的所有运算符。
序号 运算符 描述 1 ** 指数(次幂)运算 2 ~ + - 补码,一元加减(最后两个的方法名称是+@和-@) 3 *
/
% //乘法,除法,模数和取整除 4 +- 加 减 5 >>
<<右移 左移 6 & 按位与 7 ^ l 按位异或和常规的“OR” 8 <= < > >= 比较运算符 9 <> == != 等于运算符 10 = %= /= //= -= += *=
**=赋值运算符 11 is is not 身份运算符 12 in not in 成员运算符 13 not or and 逻辑运算符
小括号可以改变优先级,有()的情况优先计算()中的表达式。
浮点数
带小数点的数字都称为浮点数,对于浮点数的精度控制可使用round()和格式化输出表示。
round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。但是当出现.5的时候,两边 的距离都一样,round()取靠近的偶数,这就是为什么round(2.5) = 2。当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的这样情况,如果要取舍的位数前的小树是奇数,则直接舍弃,如果偶数这 向上取舍。
>>> round(2.332,2)
2.33
>>> round(2.352,2)
2.35
>>> round(2.352,1)
2.4
>>> round(2.452,1)
2.5
>>> round(2.5)
2
>>> round(2.35)
2
>>> round(2.35,1)
2.4
>>> round(2.25,1)
2.2
格式化的方法在此可表示为
(%.2f,num)
,与round()方法效果是相同的。
数字格式转为字符串格式
使用str()方法进行转换。
注释
使用#
符号进行注释,但只是单行注释。
python之禅
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!
附录资料
python编程入门