zoukankan      html  css  js  c++  java
  • Python基本数据类型之字符串、数字、布尔

     一、数据类型种类 

      Python中基本数据类型主要有以下几类:

    • Number(数字)
    • String(字符串)
    • Bool (布尔)
    • List(列表)
    • Tuple(元组)
    • Sets(集合)
    • Dictionary(字典)

     由于内容较多,今天就暂时只说 数字,字符串和布尔三种基本类型,其余的下一篇文章再叙述。

    二、 基本数据类型--数字

      <1> int(整型)   

        Windows系统中,在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647;

      在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

      <2>   long(长整型)

        跟C语言不同,Python的长整型没有指定位宽,即:Python没有限制长整型数值的大小,但实际上由于机器内存有限,

      我们使用的长整型数值也不可能无限大。从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,

      所以现在长整型数据后面不加字母L也没事。

        尤其是在Python3里没有long类型了,不论数据大小统一都是int类型。

        例如:

            a = 2**64    # <class 'int'>
            b = 2**32    # <class 'int'>
            print(type(a),type(b)) # type()方法可查看 数据类型

      <3> float(浮点型)
        float类型和其它语言的float基本一致,浮点数,就是带小数点的数,精度与机器相关。Python 3.x对于浮点数默认的是提供17位数字的精度。
      <4> complex (复数)
        Python支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

      常用运算:
          
    >>>5 + 4  # 加法
    9
    >>> 4.3 - 2 # 减法
    2.3
    >>> 3 * 7  # 乘法
    21
    >>> 2 / 4  # 除法,得到一个浮点数
    0.5
    >>> 2 // 4 # 除法(也叫地板除),得到一个整数
    0
    >>> 17 % 3 # 取余 
    2
    >>> 2 ** 5 # 乘方
    32

      还需要注意的几点:    

    • 1、Python可以同时为多个变量赋值,如a, b = 1, 2。
    • 2、一个变量可以通过赋值指向不同类型的对象。
    • 3、数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。
    • 4、在混合计算时,Python会把整型转换成为浮点数。

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

      1、注意:在Python中,加了引号的字符都被认为是字符串!

        例如:

          name = 'cc'    # 单引号

          age = "21"      # 双引号,加了引号就是字符串

          info = ‘’‘ Hello everyone, my name is Tom'''   # 3个引号也可以

        单引号、双引号、多引号有什么区别呢?

          单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合。

          例如:

             info = "  He's  21 years old "     # 引号嵌套需要区分

          多引号又是什么作用呢?

          例如:        

    1 msg = ''' 
    2    生命诚可贵,
    3    爱情价更高。
    4    若为自由故,
    5    二者皆可抛。
    6     '''
    7 print(msg)

     

          像这个例子,多行字符串必须用多引号。  

        Python 使用反斜杠()转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串: 

    >>> print('HiBob')
    Hi
    Bob
    
    >>> print(r'JackAlice')
    JackAlice
    >>>

        另外,反斜杠()可以作为续行符,表示下一行是上一行的延续。

        注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。

        Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。

        Python中的字符串不能被改变。

      2、字符串拼接

        字符串只能进行"相加"和"相乘"运算。需要注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接     

    name = 'cc'
    age = '21'
    
    s1 = name + age   # 相加其实就是简单拼接
    print(s1)                #' cc21'
    s2 = name*3      # #相乘其实就是复制自己多少次,再拼接在一起
    print(s2)              #  cccccc

      3、字符串常用方法(较多,以代码展示)

      1 #!/usr/bin/env python3
      2 #!-*- coding:utf-8 -*-
      3 # write by congcong
      4 
      5 s = 'Hello World!'
      6 print(s.capitalize()) # 首字母大写,输出:Hello world!
      7 print(s.count('l'),s.count('o',0,6)) #统计指定元素出现的次数,输出:3 1
      8 print(s.center(30,'-')) # 字符串居中后,其余位置用指定元素替代
      9 
     10 print(s.endswith('!')) # 判断字符串以什么结尾,输出:True
     11 
     12 s1 = 'a	b'
     13 print(s1) #	默认输出空4格,输出:a    b
     14 print(s1.expandtabs(),s1.expandtabs(20))#扩展输出到空8格,20格,输出:a       b     a                   b
     15 
     16 print(s.find('W'),s.find('w'))#查找指定的元素,并返回其索引值,当没有找到时,返回负数。输出:6   -1
     17 print(s.find('o',0,6),s.find('o',0,10))# 可以指定索引范围内查找,当找到多个时返回第一个索引值,输出:4  4
     18 
     19 s2 = "My name is {0}, I'm {1} years old!"
     20 print(s2.format('cc',21),id(s2)) # 格式化输出方法一,输出:My name is cc, I'm 21 years old!  1942924504296
     21 s2 = "My name is {name},I'm {age} years old!"
     22 print(s2.format(name='sc',age=21),id(s2)) # 格式化输出方法二,输出:My name is sc,I'm 21 years old!  1942924504384
     23 '''两次s2的赋值,并非后一次对前一次的简单覆盖,而是重新分配内存,实质是引用的改变,查看两个s2的id可以验证'''
     24 
     25 print(s2.isdigit()) #判断字符串是否由数字组成 ,此处输出:False
     26 s2 = '12'# 赋值12时会报错AttributeError: 'int' object has no attribute 'isdigit'(属性错误:“int”对象没有属性“isdigit” )
     27 s3 = '12.5'
     28 print(s2.isdigit(),s3.isdigit()) #输出:True  False
     29 print(s2.isdecimal(),s3.isdecimal()) #输出:True  False,作用与isdigit相同
     30 print(s2.isnumeric(),s3.isnumeric()) #输出:True  False,作用与isdigit相同
     31 
     32 s3 = 'Hello everyone , my name is cc,I am 21 years old...'
     33 print(s3.index('m',0,20)) #寻找指定元素的索引值并将其返回,不在搜索范围内会报错,输出:17
     34 print(s3.find('my',0,20),s3.find('my',0,10)) #寻找指定元素的索引值并将其返回,不在搜索范围内不报错,会返回-1,输出:17  -1
     35 
     36 print(s3.isalnum()) #判断字符串是否仅由数字和字母任意组合组成,此处输出:False
     37 s3 = 'hgnc2017'
     38 print(s3.isalnum()) #输出:True
     39 s4 = 'HGNZ'
     40 print(s4.isalpha(),s3.isalpha()) #判断字符串是否仅由字母组成,输出:True False
     41 
     42 print(s3.isidentifier()) #判断字符串是否是合法的变量
     43 s3 = '2018_welcome'
     44 print(s3.isidentifier(),s4.isidentifier()) #输出:False True
     45 
     46 print(s3.islower(),s4.islower()) #判断字符串中字母是否小写 ,输出:True  False
     47 print(s3.isprintable()) #判断是否可打印(Linux中较常用,一切东西皆文件,但仅文本文件可打印),输出:True
     48 s4 = 'Hgsf Jyjsx'
     49 print(s3.istitle(),s4.istitle()) #判断是否为标题格式,输出;False  True
     50 s5 = 'HGSF JYJSX'
     51 print(s4.isupper(),s5.isupper()) #判断是否都是大写,输出:False  True
     52 s5 = '  '
     53 print(s4.isspace(),s5.isspace()) #判断是否都是空格,输出:False  True
     54 
     55 names = ['cc','fm','zl']
     56 n = ' , '.join(names) # 将列表拆成字符串,并规定以何种方式连接
     57 print(n,' - '.join(names)) # 输出:cc , fm , zl   cc - fm - zl
     58 print(s4.ljust(20,'-')) #将字符串凑成指定的长度输出,从左开始数,右边不足的部分可以为空或指定元素凑齐,输出:Hgsf Jyjsx----------
     59 print(len(s4.ljust(20,'-'))) #输出:20
     60 print(s4.rjust(20,'*')) #将字符串凑成指定的长度输出,从右开始数,左边不足的部分可以为空或指定元素凑齐,输出:**********Hgsf Jyjsx
     61 
     62 s5 = 'lu fei xue cheng'
     63 print(s5.upper()) # 以大写输出,输出:LU FEI XUE CHENG
     64 s5 = 'Lu Fei'
     65 print(s5.lower()) # 以小写输出, 输出:lu fei
     66 s5 = ' 
    	 congcong
    	   '
     67 print(s5) #输出:     congcong
     68 print(s5.strip()) # 除去
    	和两侧的空格,输出:congcong
     69 s6 = " 
    congcong 
        "
     70 print(s6.lstrip()) #只去除字符串左侧的空格和换行
     71 print(s6.rstrip()) #只去除字符串右侧的空格和换行
     72 
     73 str_in = 'a m c o n g I'
     74 str_out = '0 1 2 3 4 5 6'
     75 print(str.maketrans(str_in,str_out)) # maketrans创建字符映射的转换表
     76 table = str.maketrans(str_in,str_out)#转换表:{97: 48, 32: 32, 109: 49, 99: 50, 111: 51, 110: 52, 103: 53, 73: 54}
     77 str_input = 'I am congcong'
     78 print(str_input.translate(table))#按映射表进行转换字符串,输出:6 01 23452345
     79 
     80 s1 = 'one or two'
     81 print(s1.partition('or')) #按指定的字符进行划分,输出:('one ', 'or', ' two')
     82 
     83 print(s1.replace('or','and'))# 用指定的后一个元素替换前一个元素,输出:one and two
     84 print(s1.replace('o','p',2))# 替换指定的数量,输出:pne pr two
     85 
     86 print(s1.rfind('o'))# 有多个时,首先返回最右侧的那个,输出:9
     87 print(s1.rindex('o'))# 同rfind类似,但没找时会报错,输出:9
     88 s2 = 'one and three'
     89 print(s1.rpartition('o'),s2.rpartition('n')) #当用于指定划分的元素有多个时,选择最右侧的那个作为划分依据,输出:('one or tw', 'o', '') ('one a', 'n', 'd three')
     90 
     91 print(s2.split())# 将字符串变为列表,默认以空格划分,输出:['one', 'and', 'three']
     92 print(s2.split('n'))# 还可任意指定字符划分,但指定的字符会消失,输出:['o', 'e a', 'd three']
     93 print(s2.rsplit('n',1)) #从右侧分,只分一次。输出:['one a', 'd three']
     94 s3 = '
    qwert
    asdf
    zxcv
    '
     95 print(s3.splitlines())# 以换行作为划分依据,输出:['', 'qwert', 'asdf', 'zxcv']
     96 print(s2.startswith('a',4,9)) #判断是否以指定的元素作为开头,可以指定起点和终点
     97 s4 = 'HELLO WORLD!'
     98 print(s2.swapcase(),s4.swapcase())# 大写转小写,小写转大写,输出:ONE AND THREE    hello world!
     99 
    100 print(s4.title())#将字符串以标题形式输出,输出:Hello World!
    101 
    102 print(s4.zfill(30))    #输出指定长度的字符串,长度不够的部分以0填充,输出:000000000000000000HELLO WORLD!
    103 
    104 '''
    105 最常用方法(必须掌握):
    106     isdigit 判断是否为整数
    107     replace 替换指定的字符,可指定范围
    108     find    查找指定的元素,若没有,返回-1
    109     count   统计字符串中指定的字符数量
    110     strip   脱去字符串两侧的换行和空格
    111     center  在指定的范围长度内使指定的字符串居中,不足的部分用指定的元素填充
    112     split   将字符串转成列表,默认是以空格划分,指定划分元素时,划分元素消失
    113     format  格式化字符串
    114     join    用指定的元素来连接字符串中的各个字符  
    115 
    116 '''
    View Code

       

    四、基本数据类型--布尔(bool)

        布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用于逻辑判断。如下例所示:   

    a = 3
    b = 5
    print(bool(a>b))  # False
    print(bool(a<b))  # True

     

    友情提示:未完待续,下一篇继续学习Python基本数据类型里的列表,元组,字典,集合

  • 相关阅读:
    ubuntu 安装 redis desktop manager
    ubuntu 升级内核
    Ubuntu 内核升级,导致无法正常启动
    spring mvc 上传文件,但是接收到文件后发现文件变大,且文件打不开(multipartfile)
    angular5 open modal
    POJ 1426 Find the Multiple(二维DP)
    POJ 3093 Margritas
    POJ 3260 The Fewest Coins
    POJ 1837 Balance(二维DP)
    POJ 1337 A Lazy Worker
  • 原文地址:https://www.cnblogs.com/schut/p/8401553.html
Copyright © 2011-2022 走看看