數值與字符串類型


Python3 中有六個標准的數據類型:Number(數字)、String(字符串)、List(列表)、Tuple(元組)、Sets(集合)、Dictionary(字典)。

  • 不可變數據(四個):Number(數字)、String(字符串)、Tuple(元組)、Sets(集合);
  • 可變數據(兩個):List(列表)、Dictionary(字典)。

 

一、數字類型

 數字類型包括:int(整型)、float(浮點數)、complex(復數)、bool(布爾值)。

注:python2中還有一個長整型,python3已經沒有了。

#a=10
#b=10.0
#c=True
#d=1+2j
#print(type(a))
#print(type(b))
#print(type(c))
#print(type(d))

運行結果如下:

<class 'int'>
<class 'float'>
<class 'bool'>
<class 'complex'>

 數值取整的三種方法:向下取整int,四舍五入round,向上取整ceil

import math
a=2.23 b=6.66 print(int(a),int(b)) #2,6 print(round(a),round(b)) #2,7 print(math.ceil(a),math.ceil(b)) #3,7

 

二、String 字符串類型:

  在單引號\雙引號\三引號內,輸入一串字符即構成一個字符串。例如,name='張三' 這樣name這個變量就是字符串類型。單引號,雙引號使用起來沒有區別,三引號一般用於多行注釋。
  字符串有很多常用的方法,經常使用的如下:

1、去除空格:
str.strip():刪除字符串兩邊的指定字符,括號的寫入指定字符,默認為空格
str.lstrip():刪除字符串左邊的指定字符,括號的寫入指定字符,默認為空格
str.rstrip():刪除字符串右邊指定字符,默認為空格
'''
str.strip():刪除字符串兩邊的指定字符,括號的寫入指定字符,默認為空格
str.lstrip():刪除字符串左邊的指定字符,括號的寫入指定字符,默認為空格
str.rstrip():刪除字符串右邊指定字符,默認為空格

'''
>>> a="    abc    "
>>> b = a.strip()    # b='abc'
>>> b = a.lstrip()       # b = 'abc     '
>>>b = a.rstrip()        #b =  '          abc'
View Cod
2、字符串的連接
“+”連接兩個字符串,這個方法比較耗費資源,連接兩個字符串就要開辟一次內存空間。。如果是n個字符串相連 那么會開辟n-1次內存。
str.join() 方法用於指定一個字符連接另外一個字符串。
#“+”
>>> a='hello'
>>> b='world'
>>> print(a+b)
helloworld

#“str.join()”
>>> a='H'
>>> b='world'
>>> c=a.join(b)
>>> c
'wHoHrHlHd'
View Code

 3、字符串的大小寫轉換

使用str.upper() str.lower()
 
        
>>> str1='abc'
>>> str2='FGH'
>>> print(str1.upper())
ABC
>>> print(str2.lower())
fgh
View Code
 
        

 4、字符串的格式化:‘%’和format

 

 

 1 #'%'表示占位符號,和C語言的類似。后面可帶一個參數,表示該位置將用什么類型來取代,常用的有如下:
 2 
 3 %b    二進制整數  %d    十進制整數  %i    十進制整數
 4 
 5 %o    八進制整數  %x    十六進制整數  %c    單個字符
 6 
 7 %s    字符串    %r    字符串 (生成的字符串會帶單引號)
 8 
 9 %e    浮點數字(科學計數法)   %E    浮點數字(科學計數法,用E代替e)
10 
11 %f    浮點數字(用小數點符號)       %g  浮點數字(根據值的大小采用%e或%f)
12 
13 %p    指針(用十六進制打印值的內存地址)   %n    存儲輸出字符的數量放進參數列表的下一個變量中
14 
15 例如:
16 name='zs'
17 age=18
18 print('My name is %s,age is %d'%(name,age)) #My name is zs,age is 18
19 
20 可以用如下的方式,對格式進行進一步的控制:
21 
22 %[(name)][flags][width].[precision]typecode
23 (name)為命名
24 flags可以有+,-,' '或0。+表示右對齊,而且顯示正負號。-表示左對齊。' '為一個空格,表示在正數的左側填充一個空格,從而與負數對齊。0表示使用0填充。
25 width表示顯示寬度  precision表示小數點后精度
26 
27 例如:
28 print('%+8.3f'%3.1415926)     #'  +3.142'   注意前面有空格
29 print('%08.3f'%3.1415926)     #’0003.142‘
30 
31 #2、format的用法
32 三種調用方法如下:
33 >>> res1='{} {} {}'.format('egon',18,'male')
34 >>> res2='{1} {0} {1}'.format('egon',18,'male')
35 >>> res3='{name} {age}{sex}'.format(sex='male',name='egon',age=18)
36 >>> res1
37 'egon 18 male'
38 >>> res2
39 '18 egon 18'
40 >>> res3
41 'egon 18 male 
42 
43 同樣format也有更加具體的控制格式:
44 
45    :                填充                 對齊          寬度    ,                  .          類型
46 引導符號    想填充的字符    <左 >右 ^居中          數字分割符    浮點數精度   cf
47 
48 
49 例如:
50 print('{:*^30,.2f}'.format(3.1415926))    # *************3.14*************
View Code

 

 

 

 

 

 5、split 的用法:

默認分隔符為空格。同時也可以指定切片的次數和切片方向。具體可以看下面示例

>>> name='root:x:0:0::/root:/bin/bash'
>>> print(name.split(':'))
['root', 'x', '0', '0', '', '/root', '/bin/bash']

>>> name='C:/a/b/c/d.txt'
>>> print(name.split('/',1))
['C:', 'a/b/c/d.txt']

>>> name='C:/a/b/c/d.txt'
>>> print(name.rsplit('/',1))
['C:/a/b/c', 'd.txt']
View Code

 

 6、replace的用法:

默認是替換全部匹配的地方,可以自己手動指定替換次數。
>>> shuaige='Panan:"Panan is the most hansome person in the world."'
>>> print(shuaige.replace('Panan','Dashu',1))
Dashu:"Panan is the most hansome person in the world."

>>> print(shuaige.replace('Panan','Dashu',))
Dashu:"Dashu is the most hansome person in the world."
View Code

 

7、isdigit的用法:

age=input('>>: ')
print(age.isdigit())

8.其他方法:

#1、find,rfind,index,rindex,count
#2、center,ljust,rjust,zfill
#3、expandtabs
#4、captalize,swapcase,title
#5、is數字系列
#6、is其他 
#find,rfind,index,rindex,count
name='egon say hello'
print(name.find('o',1,3)) #顧頭不顧尾,找不到則返回-1不會報錯,找到了則顯示索引
# print(name.index('e',2,4)) #同上,但是找不到會報錯
print(name.count('e',1,3)) #顧頭不顧尾,如果不指定范圍則查找所有

#center,ljust,rjust,zfill
name='hello'
print(name.center(30,'-'))
#------------hello-------------
print(name.ljust(30,'*'))   
#hello*************************
print(name.rjust(30,'*'))      #*************************hello
print(name.zfill(10)) #用0填充
#00000hello


#expandtabs
#默認‘\t’等於八個空格,參數可以自己指定個數
name='egon\thello'
print(name)
print(name.expandtabs(1))

#captalize,swapcase,title
print(name.capitalize()) #首字母大寫
print(name.swapcase()) #大小寫翻轉
msg='egon say hi'
print(msg.title()) #每個單詞的首字母大寫

#is數字系列
#在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中無需加u就是unicode
num3='' #中文數字
num4='' #羅馬數字
#在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中無需加u就是unicode
num3='' #中文數字
num4='' #羅馬數字

#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False

#isdecimal
#Python isdecimal() 方法檢查字符串是否只包含十進制字符。這種方法只存在於unicode對象。
#bytes類型無isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False

#isnumberic:unicode,中文數字,羅馬數字
#bytes類型無isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True

#三者不能判斷浮點數
num5='4.3'
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())
'''
總結:
    最常用的是isdigit,可以判斷bytes和unicode類型,這也是最常見的數字應用場景
    如果要判斷中文數字或羅馬數字,則需要用到isnumeric
'''

#is其他
name='egon123'
print(name.isalnum()) #字符串由字母或數字組成
print(name.isalpha()) #字符串只由字母組成
print(name.isidentifier()) #字符串里面只要是符合變量的規則返回TRUE
print(name.islower())    #包含字母,並且只有全部是小寫才返回TRUE
print(name.isupper())   
print(name.isspace())   #檢查是否只有空格
print(name.istitle())   #檢查所有單詞首字母是否大寫
View Code

 

 

  


免責聲明!

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



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