python归纳

        python程序最基本的元素包括常量、变量、函数和通过运算符把它们有机的组织起来的表达式。python3.x中内置的最主要的数据类型为数值型,布尔型和字符串型,通过导入相关函数库可以处理日期时间类型,也可以将这些数据类型组合数据类型。

一、数值型

        数值类型包括[1] int(整形)、[2] float(浮点型)和[3]complex(复数型)。

1、整型:int
        在数字中,正整数、0、负整数都称为整型,Python3.x支持任意大小的整型数。整数型可以表示成十进制、八进制、十六进制和二进制。

        十进制整数常量:数码为0~9;

         八进制整数常量:必须以0O或0o开头(第1个字符为数字0,第2个字符为字母O,大小写都可),数码为0~7,且通常是无符号数;

        十六进制整型常量:前缀为0X或0x(第1个字符为数字0,第2个字符为字母X,大小写都可),其数码为0~9,以及A~F或a~f(代表10~15);

        二进制整型常量:前缀为0B或0b(第1个字符为数字0,第2个字符为字母B,大小写都可),其数码为0和1;

几种整数常量运算实例如下:

       

    2、浮点型:float

        浮点型是一种表达实数的方式,浮点数是浮点型实数。 浮点型常量就是包括小数的常量,可直接写成带小数点的小数形式也可使用指数形式(具体形式为小数+E+阶码,e也可)。而E-19(阶码标志e之前无数字)、2.1E(无阶码)等都不是正确的浮点型常量。

浮点数运算实例 :

        浮点数默认采用本机双精度(64位)表示,有大约17位十进制数精度,Python 3.x 浮点数的表达精度、范围等基础信息,可以通过 sys模块从 sys.float_info 获取。由于计算机存储数据的位数是有限制的,因此十进制数0.1转换成二进制数后,无法被精确表示。如果要存储的二进制数的位数超过了计算机存储位数的最大值,其后续位数会被舍弃。

        Python标准库的fractions模块中的Fraction对象支持分数运算,Fraction(分子,分母)可表示“分数”,使用分数的numerator属性可得到分数的分子,分数的denominator属性可得到分数的分母。通过fractions模块就能解决浮点数准确运算的问题。

3、复数型:complex

        复数包含实数与虚数。复数可表示成实部+虚部j形式。用complex(a[,b])可创建复数a+bj。使用“复数.real”和“复数.imag”可从复数中提取它的实部和虚部。

        Python内置函数abs(复数)可用来计算复数的模,使用复数.conjugate()可得到共轭复数。Python还支持复数之间的加、减、乘、除等运算。

        复数间的运算实例:

        数值运算符用于对数值进行连接运算,包括算术运算符、位运算符和赋值运算符。Python用于数值型计算的常用函数包括内置数值计算函数、数学模块函数和随机数模块函数。

二、布尔型

        布尔型数据是布尔值,它有自己的运算符。使用比较运算符和判断运算符进行运算产生的结果是布尔值。

1、布尔值
        布尔值只有两个:真(True)和假(False)。Python 中的任何对象都可以判断其真假,在下列情况中对象的布尔值为 False。

        (1) None。
        (2)数值中的0、0.0、0j(虚数)、Decimal(0)、Fraction(0,1)。
        (3)空字符串('')、空元组(())、空列表([])、空字典({})、空集合(set())。
        在其他情况中对象的布尔值默认为 True,除非它使用了boo1()方法且返回 False 或使用了 len()方法且返回0。

2、布尔运算

        布尔运算包括非(not)、与(and)和或(or),优先级从高到低。布尔运算的规则如下。
        (1)非运算(not x):如果x为 False,则结果为 True,否则为False。
        (2)与运算(x and y):如果x为False,则不用考虑y,结果为 False;如果x为True,则结果取决于y为 True 还是 False。
        (3)或运算(x or y):如果x为 False,则结果取决于y为True 还是False;如果 x 为True,则结果为 True,不用考虑y。
3. 比较运算
Python 中比较运算符用于比较运算,它们有相同的优先级,并且比布尔运算符的优先级高。

比较运算符如下:

4、比较+布尔逻辑

        使用运算符and和or执行运算后并不一定会返回True或False,可能会得到最后一个被计算的表达式的值,但是使用运算符not执行运算后一定会返回Ture或False。

三、字符串型

        在Python中,字符串使用单引号、双引号、3个单引号或3个双引号作为定界符,并且不同的定界符可以互相嵌套。

        字符串运算实例:

        Python标准库中的string模块提供了英文字母大小写、数字字符、标点符号等字符串常量,编程是可以直接使用。 字符串基本运算符:(1)+:字符串连接(2)*:字符串重复(3)in/not in:in判断一个字符串是否为另一个的子字符串(成员);not in则相反。

        Python除了支持Unicode编码的字符串类型之外,还支持字节串型。在定界符前加上字母表示该字符串为一个字节串。对字符串调用encode()方法进行编码可得到其字节串,对字节串调用decode()方法并指定正确的编码格式则可得到原来的字符串。

        字符串操作方法:1、子字符串获取2、字符串查找3、字符串添加4、字符串分隔5、字符串大小写转换6、替换、生成字符7、删除空白字符或指定字符8、起止字符串判断9、字符串内容判断10、字符串排版11、字符串切片

四、日期时间类型

        日期时间类型并不是python内置的数据类型,需要通过日期时间的标准库datetime进行,处理,它提供了一批日期和时间的处理方法。另外,Python 还提供专门处理时间的标准库time,它与 datetime 的主要功能基本相同,但使用方法和输出显示不同,它能提供系统级的精确计时功能,也可让程序运行指定的时间后暂停等。
        datetime类有三种方法:datetime.now()、datetime.utcnow()、datetime.datetime()。

五、数据类型转换

 1、常见的转换函数:

2、进制和数值转换

        转换函数 bin(n)、oct(n)、hex(n)分别可以将十进制整数(n)转换为二进制、八进制和十六进制形式。

实例如下:


 

例题【2.1】输入十进制或者表达式,计算它对应的进制值。

输入表达式格式为(...)x,x=2,8,16,将x进制(...)转换为相应的十进制。

str1 = input("输入表达式(...)x:")
p1 = str1.find("(")
p2 = str1.find(")")
lens = len(str1)
if not(p2 > p1 and p2+1 <= lens):
    print("输入错误!")
else:
    es = str1[p1+1:p2]
    jc = str1[p2+1]
    if jc == '2':
        n = bin(int(es))
    elif jc == '8':
        n = oct(int(es))
    elif jc == 'h':
        n = hex(int(es))
    elif jc == 'e':
        n = eval(es)
    print(es,"对应",jc,"进制=",n)
输入表达式(...)x:(16782)2
16782 对应 2 进制= 0b100000110001110
输入表达式(...)x:(2569)8
2569 对应 8 进制= 0o5011
输入表达式(...)x:(-90741)h
-90741 对应 h 进制= -0x16275

例题【2.1】在公司联系方式字符串中得到固定电话号码(X为数字,本例虚拟化)
(1)采用正则表达式在公司联系方式字符串中获得移动电话号码。
(2)不采用正则表达式在公司联系方式字符串中获得固定电话号码。
(1)import re
info = '''本公司的联系方式:
       固定电话:025-8541239X ,
       移动电话:1385151613X ,
       QQ:95845696X
       泰州分公司:0523-661231X .'''

print(info)
pattern = re.compile(r'(\d{3,4})-(\d{7,8})')
index = 0
result = pattern.search(info,index)
if result:
    print('匹配内容:', result.group(0), '在', result.start(0), '和', result.end(0), '之间:', result.span(0))
    print('匹配内容:', result.group(1), '在', result.start(1), '和', result.end(1), '之间:', result.span(1))
    print('匹配内容:', result.group(2), '在', result.start(2), '和', result.end(2), '之间:', result.span(2))
本公司的联系方式:
       固定电话:025-8541239X ,
       移动电话:1385151613X ,
       QQ:95845696X
       泰州分公司:0523-661231X .
匹配内容: 025-8541239 在 22 和 33 之间: (22, 33)
匹配内容: 025 在 22 和 25 之间: (22, 25)
匹配内容: 8541239 在 26 和 33 之间: (26, 33)
(2)import re
info = '''本公司的联系方式:
       固定电话:025-8541239X ,
       移动电话:1385151613X ,
       QQ:95845696X
       泰州分公司:0523-661231X .'''
print(info)
pattern = re.compile(r'(\d{3,4})-(\d{7,8})')
index = 0
while True:
    result = pattern.search(info,index)
    if not result:
        break
    print('在',result.span(0),'匹配内容:',result.group(0))
    index = result.end(2)
本公司的联系方式:
       固定电话:025-8541239X ,
       移动电话:1385151613X ,
       QQ:95845696X
       泰州分公司:0523-661231X .
在 (22, 33)

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值