Python学习系列(二)——基本数据类型

Python学习系列:基本数据类型

——————————————————————————

1. 概述

    以我计算机原理的功底而言,整数和小数的运算对应着计算机内部不同的硬件逻辑运算,数据精度越高,则其表示的范围越小;数据的范围越大,则其表示的精度越低。

1.1. 整数类型

整数类型的四中表示方法
进制种类 引导符号 表示方法
十进制 0,123,-456
二进制 0B或0b 0B01,0b10
八进制 0O或0o 0O54,0o36
十六进制 0X或0x 0XAD,0x32

p o w ( x , y ) ,计算 x y

>>> pow(2,5)
32
>>> pow(2,500)
327339060789614187001318969682759915221664204604306478948329136809613379640
4674554883270092325904157150886684127560071009217256545885393053328527589376
>>> 

1.2 浮点数类型

    Python要求浮点数必须带有小数部分,也就是比如 27.0 是浮点数, 27 是整数。9600000不想写这么长又该怎么表示呢?当然是科学计数法:9.6e6。

>>> import sys
>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, 
min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, 
mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

    上面的这段废话说了什么呢?他说的是Python浮点数的表示的范围在 [ 2.22 × 10 307 , 1.79 × 10 308 ] 之间,精度为 2.22 × 10 16 ,也就是,浮点运算的前15位是保证正确的,后面的不敢保证,不能用作高精度的科学计算,那么该怎么解决这个问题呢?两种方案。

>>> 3.1415926535897924
3.1415926535897922
>>> 987654321123456.789
987654321123456.8
>>> 3.1415926535*1.23456789
3.878509413470996
>>> 31415926535*123456789     #用整数运算去代替小数运算
3878509413470996115
>>> import decimal           #用decimal这个库去解决问题
>>> a = decimal.Decimal('3.1415926535')
>>> b = decimal.Decimal('1.23456789')
>>> decimal.getcontext().prec = 20   #context means background
>>> a * b
Decimal('3.878509413470996115')

1.3 复数类型

    回忆一下高中死去的数学老师怎么教的复数, x 2 = 1 3 + 4 i 这就是复数,3是实部,4是虚部。当初老师也不讲一下物理意义,可能她也不会吧,只要教给你怎么做题就好。科普一下,复数就是原来的数在数轴上旋转了一半,看不懂的话去百度下,这里不讲(主要是懒,不想画那个旋转的图)。

    形如12.3+4j的表示形式,即为Python里面的复数。如何获取虚部和实部呢?

>>> a = 12.3+4j
>>> a.imag   #虚部,imaginary part
4.0
>>> a.real   #实部,real part
12.3

                                                             本小节结束
—————————————————————————————————————————————————————–

2. 数字类型操作

    直接看代码吧,简单粗暴还直接。

>>> x, y = 3, 10
>>> y / x
3.3333333333333335
>>> y // x    #取整
3
>>> y % x     #取余
1
>>> y ** x    #y的x次方
1000
>>> x = 3+4j
>>> abs(x)
5.0
>>> x = 4.4
>>> round(x)   #四舍五入
4
>>> x = 4.6    #四舍五入
>>> round(x)
5
>>> x1, x2, x3 = 3, 1, 2
>>> min(x1, x2, x3)
1
>>> max(x1, x2, x3)
3
>>> a, b = 1, 2     #转换成复数
>>>> complex(a, b)
(1+2j)

    这些操作不够?这些操作当然不够。。。可以查看Python的官方文档里面的math库,取对数,积分,求导各种操作应有尽有,库函数里面的方法太多,这里就不列举了。点击这里去Math库瞅瞅。

                                                             本小节结束
—————————————————————————————————————————————————————–

3. 字符类型操作

    3.1 三引号可以表示多行字符串。继续看代码,第一部分是字符串的常规操作,第二部分是内置的字符串处理函数。

>>> str = "one world, one 梦想"
>>> str[:]
'one world, one 梦想'
>>> str1 = "The same world, the same dream is the slogan of the 2008 Beijing
 Olympic Games."
>>> str + str1
'one world, one 梦想The same world, the same dream is the slogan of the 2008 
Beijing Olympic Games.'
>>> str3 = "a"
>>> x = 3
>>> str3 * x    #复制3次
'aaa'
>>> x = 'w'
>>> x in str
True
>>> str = "today i want to play badminton"
>>> len(str)          #字符串长度
30
>>> str1 = str.upper()   #字符串转化为大写
>>> str1
'TODAY I WANT TO PLAY BADMINTON'
>>> str.islower()    #判断字符串是否全部为小写
True
>>> numstr = "12345"
>>> numstr.isnumeric()   #判断字符串是否全部为数字
True
>>> "python".center(40, '=')   #自己看吧
'=================python================='
>>> "123".zfill(40)         #左边补0,到40位
'0000000000000000000000000000000000000123'
>>> num = 99
>>> str(num)     #转换为字符串
'99'

    3.2 format()进阶操作格式化字符串。

       3.2.1 format()基本操作。

>>> s = "别眨眼,看好顺序{0}{1}{2}".format("第一","第二","第三")
>>> s
'别眨眼,看好顺序第一第二第三'
>>> s = "别眨眼,看好顺序{2}{1}{0}".format("第一","第二","第三")
>>> s
'别眨眼,看好顺序第三第二第一'

       3.2.2 format()格式控制。

>>> s = "World Cup"
>>> "{0:30}".format(s)   #第0个槽,宽度为30,如果设置的槽的宽度小于len(str),则以
                         #实际为准,默认左对齐
'World Cup'

>>> "{0:1}".format(s)
'World Cup'

>>> "{0:>1}".format(s)    #右对齐
'World Cup'

>>> "{0:>30}".format(s)    #右对齐
'                     World Cup'

>>> "{0:*^30}".format(s)    #居中对齐,*作为填充
'**********World Cup***********'

>>> "{0:->30}".format(s)    #右对齐,-作为填充
'---------------------World Cup'

>>> "{0:20,}".format(123456789)  #千位用逗号分隔
'         123,456,789'

>>> "{0:^20.3f}".format(12345.6789)   #保留三位小数
'     12345.679      '

>>> str = "python"     #取高四位
>>> "{0:.4}".format(str)
'pyth'

>>> print("{0:b},{0:X}".format(626))  #进制转换
1001110010,272

>>> "{0:e}, {0:E}, {0:.2f}, {0:.2%}".format(3.14159)  #科学计数法;实数;百分数
'3.141590e+00, 3.141590E+00, 3.14, 314.16%'

>>> print("{0:>15s}, {1:<8.2f}".format("length", 6.1865398))
         length, 6.19 
  #s means string, f means real number.       

    也许上面的看着有点晕,到底是先设置对齐方式呢,还是先设置填充呢,还是先设置数据精度呢,还是先设置数据类型呢?当然是有顺序的,看下面的顺序。

    1. 参数序号0,1,2外加冒号:
    2. 填充字符
    3. 对齐方式
    4. 宽度
    5. 千位分隔符逗号
    6. 精度;最大宽度
    7. 数据类型,(科学计数法、进制、百分数等)

猜你喜欢

转载自blog.csdn.net/asd20172016/article/details/81082710