python基础知识

一.取模(取余)运算

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
在Java/C中
-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
在python中

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时,可指定编码和处    理方式
需要掌握的函数

 

 

 

  

转载于:https://www.cnblogs.com/daidechong/p/9468268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值