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('Hi\Bob') Hi Bob >>> print(r'Jack\Alice') Jack\Alice >>>

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

    注意,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\tb'
 13 print(s1) #\t默認輸出空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 = ' \n\t congcong\n\t '
 67 print(s5) #輸出: congcong
 68 print(s5.strip()) # 除去\n\t和兩側的空格,輸出:congcong
 69 s6 = " \ncongcong \n "
 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 = '\nqwert\nasdf\nzxcv\n'
 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基本數據類型里的列表,元組,字典,集合


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM