美文网首页
02.基本数据类型--数字、字符串

02.基本数据类型--数字、字符串

作者: 哈哈大圣 | 来源:发表于2019-12-11 21:03 被阅读0次

    基本数据类型--数字、字符串

    一、数据类型分类

    1).基本的数据类型

    1. 数字:intfloat
    2. 字符串:str
    3. 布尔值:bool
      • True
      • False

    2).数据集

    1. 列表:list
    2. 元组:tuple
    3. 字典:dict

    每种数据类型的实例都可以直接调用内置函数,python属于弱类型语言,定义变量时不用声明数据类型,变量其实就是一个容器。

    二、数字

    1).整型int

    1. 没有数字大小的限制,没有类似Java的long类型

    2. 案例演示

    a = "123"
    print(type(a),a) # type(variable)  #查看这个变量的类型
    
    b = int(a)
    print(type(b),b)
    
    num = "0011"   # 16进制表示
    v = int(num, base=16)   # base这个表示将16进制表示的数字转换为10进制
    print(v)
    
    r = age.bit_length() # bit_lenght当前数字的二进制,至少用n位表示,就是有多少位2进制数(不是字节)
    
    1. 数字与字符串类型之间的转换
    number = 1234
    string = str(number)    #将数字转换为字符串
    number = int(string)   #将字符串转换为数字
    

    2).浮点数float

    1. float是浮点数的意思,也就是有小数部分 (Python中没有double类型)
    number = 5.3
    print(type(number),number)
    

    3).复数

    1. Python复数的表示方法如下:
    (2 + 2j)
    
    1. 复数一般在某些特定领域需要。

    三、字符串

    字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串

    python中字符串和数字不能直接相加

    1).字符串常见形式

    1. 字符串的形式:
    n1 = "hahadasheng"
    n2 = "hahadasheng"
    n3 = """hahadasheng"""
    n4 = """hahadasheng"""
    

    只要是引号都可以,同时""" """ 既可以用于字符串,亦可以用于多行注释

    1. 字符串一旦创建就不能在被修改,只能另外申请空间储存修改后的字符串。

    2).字符串常用内置函数

    # 下方使用的案例变量
    name = "python"
    v = "I like Java and Python"
    test = v
    
    1. 首字母大写
    v = name.capitalize()
    
    1. 全大写
    v = name.upper()
    v1 = test.isupper()   # 判断是否全部是大小写
    
    1. 全变小写
    v = test.lower() # 英文中所有变小写
    v1 = test.islower()   # 判断是否全部是大小写
    print(v)
    
    v = test.casefold() # 所有变小写,可以将很多未知的符号对相应变小写。
    print(v)
    
    1. 大小写转换
    test = "hahadasheng"
    v = test.swapcase()   # 大小写转换
    print(v)
    
    1. 判断前缀
    v = test.startswith("haha")   #结果是布尔值
    
    1. 判断后缀
    name = "hahadasheng"
    v = name.endswith("haha")   #结果是布尔值
    
    1. 查找索引对应的字符
    test = "hahadasheng"
    v = test.index("8") # 必须为字符串,感觉有点怪!!
    

    找到对应的字符串,返回其下标,如果没有则抛出异常

    1. 查找子串第一个位置的索引
    test = "hahadasheng"
    v = test.find("en")
    
    1. 替换函数
    test = "hahahahahahahaaaaaaaa"
    
    # 将指定字符串替换为指定字符串,全部换
    v = test.replace("a","b")
    print(v)
    
    # 将指定字符串替换为指定字符串,从左到右指定换参数个
    v = test.replace("b","a",2)
    print(v)
    
    1. 分割为指定个数
    # 从左到右分割为指定个数,不加个数会将所有的分割,这种分割会去除指定字符串
    v = test.split("s",2)
    
    # 从右到左分割为指定个数,不加个数会将所有的分割,这种分割会默认去除空格或空格操作
    test.rsplit()
    
    1. 根据换行符进行分割,布尔值参数确定是否保留换行符
    test = "asdfadfasdf\nasdfasdf\nadfasdf"
    v = test.splitlines(False)
    print(v)
    
    1. 将字符串中的每一个元素按照指定分隔符进行拼接【常用】
      • 其他数据类型中的元素为字符串也可以 (比如列表)
    test = "你是风儿我是沙"
    print(test)
    v = "_".join(test)  #  你_是_风_儿_我_是_沙
    print(v)
    
    1. 给定了一些非空的字符串(""空白 不属于非空),删除参数给定字符的字符
    # 默认移除左边\t \r \n 空白
    test = "\r\n\t del I am your God"
    v = test.lstrip()
    print(v) #del I am your God
    
    # 有参数就从左到右找有没有对应的字符,有就删除,直到遇见参数没有的字符的就中断
    test = "del I am your God"
    v = test.lstrip("del ")
    print(v) #I am your God
    
    # 右边的操作,和上述类似
    v = test.rstrip()
    v = test.rstrip("del")
    
    # 两边同时操作,和上述类似
    v = test.strip()
    v = test.strip("xa")
    
    1. 判断字符串中是否只包含字母,数字
    test = "123"
    v = test.isalnum()  # 。
    print(v)
    
    1. 判断字符串中是否只包含字母,汉字
    test = "as2df"
    v = test.isalpha()
    print(v)
    
    1. 当前字符串是否是数字
    test = "二"   # 1,②
    v1 = test.isdecimal()   # 当前输入的字符串是否是数字,只支持十进制数
    v2 = test.isdigit()     # 当前输入的字符串是否是数字,支持十进制,特殊数字字符
    v3 = test.isnumeric()   # 当前输入的字符串是否是数字,支持十进制,特殊数字字符,中文数字
    print(v1,v2,v3)
    

    3).字符串常用用法

    1. 获取长度
    len("hahadasheng")
    
    1. for循环
    for i in "hahadasheng":
        print(i)
    
    1. 切片(所有的数据类型都可以用)
    test = "hahadasheng"
    v = test[0]    # 取字符
    t = test[0:2]  # 取指定字符切片,不包括末尾指定的数
    c = test[0:-1] # 从取字符切片,末尾倒着数,不包括末尾 (嵌套也可以取)
    d = test[2:]   # 从索引2到最后
    

    3).其他函数

    1. 设置字符串总宽度,并将原始内容居中
    # def center(
    #    self<表示自身,不用使用>,
    #    width<代指总长度>,
    #    fillchar=None<空白填充,默认字符" ",只能写一个字符,可选变量>
    #   )
    v = test.center(20, "*")
    
    1. 设置宽度,并左对齐
    v = test.ljust(20,"*")  #与center 功能类似,放在左边
    
    1. 设置宽度,右对齐
    v = test.rjust(20,"*")  #与center 功能类似,放在右边
    
    1. 寻找子串序列次数
    test = "aaa"
    v = test.count("aa")   # 去字符串中寻找,寻找子序列的出现次数
    print(v)
    

    查询过程会分隔字符串,被找到的子串的子串不会被纳入下一次查找的范围

    1. 寻找子串序列出现的次数,执行开始位置和结束位置 (结束位置不包含)
    test = "hahadasheng is very handsome"
    v = test.count("da", 5, 6)   # 5这里的位置表示从0开始到第五个开始,6这里的位置表示结束位置,后面两个位置可选,结束位置不包含 [),机制和java一样
    
    1. 表格化打印
    # \为转义字符, \t制表符
    test = "username\temail\tpassword\n晓庆\t123@.com\t123\n"
    
    # 以括号内的指定参数个数进行排列,如果遇到\t,自动补齐空格到参数个。
    v = test.expandtabs(12)
    print(v,len(v))
    

    从开始往后找,找到第一个之后,获取其位置,可以指定开始和结束的位置,结束的位置不包含,如果未找到返回-1。

    1. 字符占位符格式化
    test = "i am {name}, age {a}"
    print(test)
    v = test.format(name="hahadasheng",a=18)
    print(v)
    

    格式化,将一个字符串中的占位符替换为指定的值,没有数据类型的限制

    1. 数字占位符格式化
    test = "i am {0}, age {1}"
    print(test)
    v = test.format("hahadasheng",18)
    print(v)
    

    如果占位符里面为数字,表示为依次进行替换 (不建议与有指定名字的占位符混搭,容易出错)

    1. 字典格式化
    test = "i am {name}, age {a}"
    v1 = test.format(name="df",a=10)
    v2 = test.format_map({"name": "hahadasheng", "a": 19})  #传入的为字典,固定格式
    
    1. 判断是否存在不可显示的字符,如果含有,返回False
    #\t   制表符(不可显示)
    #\n   换行(不可显示)
    test = "oiuas\tdfkj"
    v = test.isprintable()  #
    print(v)
    
    1. 判断是否全部是空格
    test = ""
    v = test.isspace()
    print(v)
    

    ""这种不算空格

    1. 判断是否是标题 (首字母全部大写)
    test = "Return True if all cased characters in S are uppercase and there is"
    v1 = test.istitle()
    print(v1)
    
    1. 将字符串转换为标题
    v2 = test.title()
    print(v2)
    
    1. 对应关系替换
    v = "asidufkasd;fiuadkf;adfkjalsdjf"
    
    # 创建对应关系,可用于替换, 个数必须对应上!!
    m = str.maketrans("aeiou", "12345")
    
    # 开始转换
    new_v = v.translate(m)
    print(new_v)
    
    1. 分割字符串 (三部分)
    test = "testasdsddfg"
    v = test.partition("s")    #从左边找到指定的字符串进行分割,分成三份,如果字符串在最开始,以‘’空代替。所以么有lpartition
    print(v)
    v = test.rpartition("s")   #从右到左找到指定的字符串进行分割,分成三份
    print(v)
    
    1. 字母,数字,下划线 : 标识符 def class
    a = "def"
    
    # 判断字符串能否被使用为标识符
    v = a.isidentifier()
    print(v)
    

    4).字符串符号格式化

    1. 格式化符号

      • %d: 十进制数字
      • %f: 浮点数
      • %s: 字符串、任何值
    2. 使用格式

    # 多个值的时候要用括号
    msg = "i am %s my hobby is %s" % ("hahadasheng","java")
    print(msg)
    
    # %s可以接受任何值
    msg = "i am %s my hobby is %s" % ("hahadasheng",1)
    
    # 接受列表
    msg = "i am %s my hobby is %s" % ("hahadasheng",[1,2])
    print(msg)
    
    name="hahadasheng"
    age=19
    # %d代表整型数字,也可接受浮点数(转换成int)
    msg="i am %s my hobby is %d" % (name, age)
    print(msg)
    
    1. 打印浮点数
    # 代表只保留后面两位小数
    tpl = "percent %.2f" % 99.976234444444444444
    print(tpl)
    
    1. 打印百分比
    tpl = "percent %.2f %%" % 99.976234444444444444  # 打印百分比
    print(tpl)
    
    1. 直接打印字典
    tpl = "i am %(name)s age %(age)d" % {"name": "hahadasheng", "age": 18}
    print(tpl)
    
    1. 左对齐(+右对齐) 60宽度
    msg="i am %(name)+60s my hobby is hahadasheng" %{"name":"lhf"}
    print(msg)
    
    1. 加上颜色
    msg="i am \033[43;1m%(name)+60s\033[0m my hobby is hahadasheng" %{"name":"lhf"}
    print(msg)
    
    1. 指定拼接分隔符
    print("root","x","0","0",sep=":")
    
    # 等价与如下方式
    print("root"+":"+"x"+":"+"0","0")
    

    5).format函数格式化

    1. 一般形式
    # 指定参数
    tpl = "i am {name}, age {age}, really {name}".format(name = "seven", age = 18)
    
    # 字典方式 ** 代表字典
    tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
    
    # *代表列表
    tpl = "i am {:s}, age {:d}".format(*["seven", 18])
    tpl = "i am {:s}, age {:d}".format("seven", 18)     # 与上述["seven", 18]一样
    
    l=["seven", 18]
    tpl = "i am {:s}, age {:d}".format(*l)
    
    1. 进制转换

    后面的参数以10进制为准(x小写的16进制 X大写的16进制),百分数,参数少了不行,多了可以

    tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%},{}".format(0x15, 15, 15, 15, 15, 15.87, 2)
    print(tpl)
    
    1. 更多参考
    tpl = "i am {}, age {}, {}".format("seven", 18, "hahadasheng")
    tpl = "i am {}, age {}, {}".format(*["seven", 18, "hahadasheng"])
    tpl = "i am {0}, age {1}, really {0}".format("seven", 18)
    tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18])
    tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
    tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})  #**代表字典
    tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
    tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
    tpl = "i am {:s}, age {:d}".format(*["seven", 18])  #*代表传入的为列表
    tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18)
    tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})
    tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
    tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
    tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
    tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)
    

    四、数字,字符串相关的加减乘除

    1).字符串加法

    n1 = "a"
    n2 = "b"
    n3 = "c"
    n4 = n1 + n2 + n3   # "abc"
    

    2).字符串乘法:

    n1 = "a"
    n2 = n1 * 3   # "aaa"
    

    3).数字

    n1 = 9
    n2 = 2
    
    n3 = n1 + n2
    n3 = n1 - n2
    n3 = n1 * n2
    n3 = n1 / n2
    n3 = n1 % n2   # 求余
    n3 = n1 ** n2  # 这个表示n1的n2次方
    n3 = n1 // na  # 去除小数部分的值
    

    五、补充:进制转换

    1).整数之间的进制转换

    hex(16)     # 10进制转16进制
    oct(8)      # 10进制转8进制
    bin(8)      # 10进制转2进制
    

    2).字符串转整数:

    int("10")       # 字符串转换成10进制整数
    int("10",16)    # 字符串转换成16进制整数
    int("0x10",16)  # 字符串转换成16进制整数
    int("10",8)     # 字符串转换成8进制整数
    int("010",8)    # 字符串转换成8进制整数
    int("10",2)     # 字符串转换成2进制整数
    

    相关文章

      网友评论

          本文标题:02.基本数据类型--数字、字符串

          本文链接:https://www.haomeiwen.com/subject/pvhagctx.html