一.取模(取余)运算
1.0 除法运算和整除运算
1 / 2 = 0.5
1 / 1 = 1.0
如果你想丢弃小数部分,即执行整除运算,可使用双斜杠。
1 // 2 = 0
1 // 1 = 1
5.0 // 2.4 = 2.0
1.1 操作数全为整数
x % y的结果为x除以y的余数,换言之结果为执行整除时余下的部分。x和y均为正整数,
则 x%y = x-((x // y) * y)
例如:
17%10 = 7
注:‘’每10分钟执行一次的操作‘’ minute % 10是否为0
1.2 有一个操作数为负数
关于整数除法取整
如:18除以5要得到一个整数结果,究竟应该是3还是4?,计算机上有几种对于结果取整的方法: 向上取整:取比实际结果稍大的最小整数,也叫Ceiling取值。这种取值方式如下,17/10 == 2; 5/2 == 3; -9/4 == -2 向下取整:取比实际结果稍小的最大整数,也叫Floor取整。这种取整方式如下, 17/10 == 1; 5/2 == 2; -9/4 == -3 向零取整:向0方向取最接近精确值的整数,换言之就是舍去小数部分,因此又称截断取整(Truncate).这种取整方式下, 17/10 == 1; 5/2 == 2; -9/4 == -2 而Java/C等语言用的是truncate除法,python用的是floor除法。


-7 % 3 = -1
7 % (-3) = 1
// 下面是推倒过程
-7 % 3 = -7 - trunc(-7/3) * 3 = -7 - (-2) * 3 = -7 + 6 = -1
7 % (-3) = 7 - trunc(7 / (-3)) * (-3) = 7 - (-2) * (-3) = 7 - 6 = 1


-7 % 3 = 2 7 % (-3) = -2 ## 下面是推倒过程 -7 % 3 = -7 - floor(-7/3) * 3 = -7 - (-3) * 3 = -7 + 9 = 2 7 % (-3) = 7 - floor(7 / (-3)) * (-3) = 7 - (-3) * (-3) = 7 - 9 = -2
x和y均为有一个负整数,一个为正整数x/y(取整除)结果的绝对值为z,则x%y的结果是 |x| - (|y| * z),符号位和y相同
例如:26%-20
26/-20=-2,故z=2
|26| - (|-20| * 2) = 26 - 40 = -14
由于除数y为-20,故26%-20 = -14
1.3 两个操作数都为负数
值的大小和两个操作数绝对值取模的结果相同,不过符号位相反
-26%-20 = -6
二. 关于进制转换


信息的存储单位 位(Bit) :度量数据的最小单位 字节(Byte):最常用的基本单位,一个字节有8位 0 0 1 0 1 0 1 =2*7+2*4+2*2+2*0=149 K字节 1k=1024 byte M(兆)字节 1M=1024K G(吉)字节 1G=1024M T(太)字节 1T=1024G 3.十进制转换 1011(二进制)转换成十进制 1*2*3+0*2*2+1*2*1+1*2*0=8+0+2+1=11 1011(8进制) 转换成十进制 1*8*3+1*8*1+1*8*0=512+8+1=521 1011(16进制) 转换成十进制 1*16*3+1*16*1+1*16*0=4096+16+1=4113 4.二进制转换 十进制转二进制: 除2取余数 最后把余数倒过来 100101 比如:十进制数37除2得到余数 所以转换成的二进制数字为:100101 再来八进制到二进制:一个八进制的位拆分成一个三位的二进制数 比如:[八进制]616 6拆分成 110 1拆分成 001 6拆分成 110 所以转换成的二进制数字为:110001110 再来十六进制到二进制:一个八进制的位拆分成一个四位的二进制数 比如:[十六进制]616 6拆分成 0110 1拆分成 0001 6拆分成 0110 所以转换成的二进制数字为:11000010110 5.八进制转换 十进制到八进制:除8取余数 最后把余数倒过来 同时我们也可以先将十进制转换成二进制,然后将二进制又转换成八进制 比如:2456 转化成八进制数字:4630 2456/8=307,余0; 307/8=38,余3; 38/8=4,余6; 4/8=0,余4。 将所有余数倒序相连,得到结果:4630。 因此十进制的2456转换为八进制结果为4630。 二进制到八进制转换 7=4+2+1 111 八进制最大的数字是7转换成二进制刚好是111,占3个位 每三个二进制数为一组,转成一个八进制数位,如果二进制高位不足3位时,用零填补。 比如:10011011 011 011 3 3 因此二进制的10011011转换为八进制结果为233。 十六进制到八进制 我们可以先把十六进制的数字转换成二进制,在从二进制转换成八进制例如: 3BC4 分别对应到二进制就是: 3 0011 B 1011 C 1100 4 0100 连起来就是: 0011 1011 1100 0100 再按照每三个一组分组: 0 011 101 111 000 100 0__3__5__7__0__4 所以8进制就是35704 6.十六进制转换 十进制到十六进制:除16倒着取余 同时我们也可以先将十进制转换成二进制,然后将二进制又转换成十六进制 比如说:1610转换成十六进制 直接转16进制: 1610/16=100……10(A); /16= 6……4; /16= 0……6; 故:1610(10)=64A(16). 二进制到十六进制 15=8+4+2+1 1111 十六进制最大数字是F,即15转换成二进制1111,刚好占4个位 每四个二进制数为一组,转成一个十六进制数位,如果二进制高位不足3位时,用零填补。 比如:1110011011 0011 1001 1011 3 9 B 因此二进制的 1110011011转换为十六进制39B 八进制到十六进制 我们可以先把八进制的数字转换成二进制,在从二进制转换成十六进制 八进制的:1234567 转换为二进制是每个数字转换为三位二进制:001 010 011 100 101 110 111 然后把这些数字从右边开始进行按四位分组:0 0101 0011 1001 0111 0111 然后从右边每四位组依次对应一个16进制数:053977 7.各种进制的用途 说了这么多,这些进制都有些什么用了,大家一起讨论下吧!!! 10进制,当然是便于我们人类来使用,我们从小的习惯就是使用十进制,这个毋庸置疑。 2进制,是供计算机使用的,1,0代表开和关,有和无,机器只认识2进制。 16进制,内存地址空间是用16进制的数据表示, 如0x8049324。 编程中,我们常用的还是10进制。 比如:int a = 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是: 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此,用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。 1.用于计算机领域的一种重要的数制 2.对计算机理论的描述,计算机硬件电路的设计都是很有益的。比如逻辑电路设计中,既要考虑功能的完备,还要考虑用尽可能少的硬件,十六进制就能起到一些理论分析的作用。比如四位二进制电路,最多就是十六种状态,也就是一种十六进制形式,只有这十六种状态都被用上了或者尽可能多的被用上,硬件资源才发挥了尽可能大的作用。 3.十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数。 8进制,一般有什么用,查了下资料,还真不知道?有知道的大神告诉我吧。 如果你用过linux你可能见过这样表示一个文件的权限:0777、0666等等 可能有的这样解释:具有读权限加1,具有写权限加2,具有执行权限加4,最后的和就是一个角色所具有的权限。而linux有三种角色:属主、属组、其他用户,所以用0777、0666之类的表示。 如果用二进制来看的话,linux用3个bit来表示权限,如果具有某个权限就把那位置1.比如只具有读权限就是100,只具有写权限就是010,具有读写权限就是110,具有读写执行权限就是111。
三.变量
变量表示(或指向)特定值的名称,在python中名称(标识符)只能有字母.数字和下划线(_)构成,切不能以数字打头。
四.函数
乘方运算符(**)来执行幂运算,实际上不可以使用这个运算符,而是使用了函数pow()。因此我们通常将pow等标准函数成为内置函数
2 ** 3 = 8 pow(2,3) = 8
使用函数称为调用函数,向它提供参数,而它返回一个值。有多个内置函数可用于编写数值表达式。例如abs计算绝对值,
round将浮点数圆整为与之接近的整数。
abs(-10) = 10 2 // 3 = 0 round(2/3) = 1.0
注:floor 得到最近原数并小于原数的部分; round 得到最接近原数的整数(返回为浮点类型)
五.模块
可将模块视为扩展,通过将其导入可以扩展python功能
>>import math
>>math.floor(32.9)
>> 32
模块math还包括其它几个很有用的函数。例如ceil与floor相反,返回大于或等于给定数的最小整数
>>>math.ceil(32.3)
33
>>>math.ceil(43)
43
使用import的变种from module import function,可在调用函数时不指定模块前缀
>>>from math import sqrt
>>>sqrt(9)
3.0
提示:事实上可使用变量来引用函数(以及其他大部分Python元素).执行赋值语句foo = math.sqrt,
可使用foo来计算平方根。foo(4)的结果为2.0
六.字符串
6.1单引号字符串以及对引号的转义
>>>"let's go!"
"let's go!"
>>>'let\'s go!'
"let's go"
例如,字符串同事包含单引号和双引号(‘ let\'s say " hello,world! " ’)
6.2换行
>>>print(“hello, \nworld!”)
hello,
world!
6.3 长字符串,原始字符串和字节。python3.x中所有的字符串都是Unicode字符串
6.3.1 长字符串
要表示很长的字符串(跨越多行的字符串),可使用三引号。解释器能都识别
表示字符串开始和结束的位置,因此字符串本身可包含单引号和双引号,也不需反斜杠转义
6.3.2 原始字符串
如果你现在字符串中包含\n,例如在字符串中包含DOS路径C:\nowhere
>>>print('C:\\nowhere')
C:\nowhere
如果很长的路径,将需要大量的反斜杠,在这种情况下原始字符串就派上用场,因为它不会对
反斜杠做特殊处理,而是让字符串的每个字符都保持原样。原始字符创用前缀r表示
注意:原始字符串不能以单个反斜杠结尾,到那时如果要指定反斜杠结尾的原始字符串(如反斜杠结尾Dos路径)
>>>print(r'C:\Program Files\foo\bar' '\\')
C:\Program Files\foo\bar\
小结:


abs(number) 返回指定数的绝对值
bytes(string,encoding[,errors]) 对指定的字符串进行编码,并以指定的方式处理错误
cmath.sqrt(number) 返回平方根;可用于负数
float(object) 将字符串和数字转换为浮点数
help([object]) 提供交互式帮助
input(prompt) 以字符串方式获取用户输入
int(object) 将字符串和数字转换为整数
math.ceil(number) 以浮点数的方式返回向上圆整的结果
math.floor(number) 以浮点数的方式返回向下圆整的结果
math.sqrt(number) 返回平方根;不能用于负数
pow(x,y[,z]) 返回x的y次方对z求模的结果
repr(object) 返回指定值的字符串表示
round(number[,ndigits]) 四舍五入为指定的精度,正好为5时舍入到偶数
str(object) 将指定的值转换为字符串,用于转换bytes时,可指定编码和处 理方式
1万+

被折叠的 条评论
为什么被折叠?



