天天看點

Day7之資料類型的内置方法數字類型内置方法字元串類型内置方法

曾經的我意氣風發,做事放蕩不羁,常常把人看扁,現在不一樣了,長大了,已經根本不把别人放在眼裡了。

開個玩笑,其實是被社會磨平了棱角,外加上海高溫每天抛光。

Day7之資料類型的内置方法數字類型内置方法字元串類型内置方法

故事還是得從教室的空調說起啊,空調不争氣,而我又每節課都站着上的,好熱,是以一下課我比老師跑的還快,直接就沖進辦公室裡納涼

坐在辦公室門口每天就這個狀态

Day7之資料類型的内置方法數字類型内置方法字元串類型内置方法

像個卷簾大将一樣。

直到後來,egon下達了逐客令,于是我就不敢在随便進辦公室了。。。。。egon我還是不敢惹的。

好的那就開始今天的打氣流程!

Day7之資料類型的内置方法數字類型内置方法字元串類型内置方法

今日洗腦金句: 學習就像人生,要好好經曆,加油,你要保持善良,也要帶點鋒芒!

數字類型内置方法

like 大家都 know 的,數字類型又分為整型和浮點型。

來我先帶各位憨憨回顧一下整型和浮點型的用途以及定義 ↓

一、整型内置方法(int)

1.用途:年齡、号碼、等級

2.定義:可以使用 int() 方法将純數字的字元串轉為十進制的整型

age = 19  # age = int(10)
print(type(age))                

<class 'int'>

需要注意一下的是下面這個,因為我挂了一次

x = int('11.1')  # 報錯
print(x)                

注意哦,這裡會報錯,這究竟是為什麼呢???

Day7之資料類型的内置方法數字類型内置方法字元串類型内置方法

我是這麼了解的,裡面确實是個數字是吧,但是!

這是個字元串類型的資料,你讓int方法怎麼把 '.' 給轉化成整型呢,很明顯不能,是以這裡會報錯,可能你們會有别的了解,可以來告訴我,反正我也不聽。

3.常用操作就是算術運算+比較運算 這麼簡單。

長整型就不說了,他隻存在與python2中,python3已經沒這玩意兒了。統一為 int 型。

1.1 可變or不可變

一句巨他媽重要的話,“id相同,變量值一定相同,變量值相同,id不一定相同。“ 為什麼說他非常重要,我還沒發現,我發現了再告訴你們。

什麼叫可變類資料類型,就是id不變值可變,就是在原值基礎上修改,則為可變資料類型 ;反之,值變id也變,就是重新申請一個空間放入新值,這就是不可變資料類型。 你當然聽不明白,看完栗子你就明白了。

age = 19
print(f'first:{id(age)}')
age = 20
print(f'second:{id(age)}')                

first:4384901776

second:4384901808

看到了嗎,我們改變了age的變量值,發現列印出來的id值變了,說明什麼,age已經不是指向 原來的 19 那塊位址空間了,而是指向了重新開辟出來的 20 的位址空間,是以整型很明顯是不可變資料類型。

二、浮點型内置方法(float)

1.用途:薪資、身高、體重

2.定義:可以使用float()方法将純數字的字元串轉為浮點型數字。

x = float('111')
print(x)
print(type(x))                

111.0

<class 'float'>

a=1.1
b=1
print(float(b))
print(int(a))                

1.0

1

诶!看見了沒,這裡的1.1可以用int方法來轉換,為什麼呢,因為這裡的1.1他是數字類型的呀,轉為整型之後就會把小數點和後面的全缪莎掉。

3.常用操作+内置方法:算術運算+比較運算

4.存一個值or多個值:一個值

5.有序or無序:和整型一樣,都是沒有有序無序這種說法的。

6.可變or不可變:和整形一樣,都是不可變資料類型。

字元串類型内置方法

打字太累了,用一下CV架構

一、字元串類型内置方法(str)

1.用途:描述性質的東西,如人的名字、單個愛好、位址、國家等

2.定義:使用''、""、''''''、""""""包裹的的一串字元

  • u'unicode': unicode編碼的字元串
  • b'101': 二進制編碼的字元串
  • r'\n': 原生字元串,也就是說'\n'這是普通的兩個字元,并沒有換行的意思
name = 'nick'  # name =str('nick')
s1 = str(1.1)
s2 = str([1, 2, 3])

print(f's1:{s1}, type:{type(s1)}')
print(f's2:{s2}, type:{type(s2)}')                

s1:1.1, type:<class 'str'>

s2:[1, 2, 3], type:<class 'str'>

簡單講一下 r 的作用,你輸出的時候要換行就輸入\n 是吧,可是如果你要輸出的字元串内容之中有 \n呢,這個時候就需要在字元串前面加上一個 r ,使他變為原生字元串。

1.1優先掌握的方法

優先掌握麼就是很重要啦,靓仔。

  1. 按索引取值
  2. 切片
  3. 長度len
  4. 成員運算in|not in
  5. 移除空白strip
  6. 切分split
  7. 循環

CV大法好啊!!!!!!

Day7之資料類型的内置方法數字類型内置方法字元串類型内置方法

1.按索引取值(隻可取不可改變)

# str索引取值
msg = 'hello nick'
#      0123456789  # 索引序号

print(f'索引為6: {msg[6]}')
print(f'索引為-3: {msg[-3]}')
索引為6: n
索引為-3: i                

2.切片(顧頭不顧尾,步長)

# 索引切片
msg = 'hello nick'
#      0123456789  # 索引序号

print(f'切片3-最後: {msg[3:]}')
print(f'切片3-8: {msg[3:8]}')
print(f'切片3-8,步長為2: {msg[3:8:2]}')
print(f'切片3-最後,步長為2: {msg[3::2]}')

# 了解,步長為正從左到右;步長為負從右到左
print('\n**了解知識點**')
print(f'切片所有: {msg[:]}')
print(f'反轉所有: {msg[::-1]}')
print(f'切片-5--2: {msg[-5:-2:1]}')
print(f'切片-2--5: {msg[-2:-5:-1]}')
切片3-最後: lo nick
切片3-8: lo ni
切片3-8,步長為2: l i
切片3-最後,步長為2: l ik

**了解知識點**
切片所有: hello nick
反轉所有: kcin olleh
切片-5--2:  ni
切片-2--5: cin                

3.長度len

# str長度
msg = 'hello nick'

print(len(msg))
10                

4.成員運算in和not in

# str成員運算
msg = 'my name is nick, nick handsome'

print(f"'nick' in msg: {'nick' in msg}")
print(f"'jason' not in msg: {'jason' not in msg}")
print(f"not 'jason' in msg: {not 'jason' in msg}")
'nick' in msg: True
'jason' not in msg: True
not 'jason' in msg: True                

5.移除空白strip()

# str移除空白strip()
name = '&&&n ick'

print(f"name.strip('&'): {name.strip('&')}")  # strip()預設為‘ ’,并且不修改原值,新建立空間
print(f"name: {name}")

# strip()應用場景
pwd = input('password: ')  # 使用者可能會手抖輸入空格
if pwd.strip() == '123':
    print('密碼輸入成功')

print(f"'*-& nick+'.strip('*-& +'): {'*-& nick+'.strip('*-& +')}")
name.strip('&'): n ick
name: &&&n ick
password: 123   
密碼輸入成功
'*-& nick+'.strip('*-& +'): nick                

我前幾天在預習的時候,看到切片和split()方法,踩了一些坑,不過今天學了以後發現大部分都是自己問題,可以看一下這一片部落格體會一下我當時的體驗。

部落格傳送門

6.切分split

# str切分split
info = 'nick:male:19'
info_list1 = info.split(':')
info_list2 = info.split(':', 1)

print(f'info_list1:{info_list1}')
print(f'info_list2:{info_list2}')
info_list1:['nick', 'male', '19']
info_list2:['nick', 'male:19']                

7.循環

msg = 'hello nick'

for i in msg:
    print(i)
h
e
l
l
o
 
n
i
c
k                

1.2 需要掌握(**)

1.lstrip()和rstrip()

# str之lstrip()和rstrip()
name = '&&nick&&'

print(f"nick.lstrip('&'): {name.lstrip('&')}")
print(f"nick.rstrip('&'): {name.rstrip('&')}")
nick.lstrip('&'): nick&&
nick.rstrip('&'): &&nick                

2.lower()和upper()

# str之lower()和upper()
name = 'Nick Chen'

print(f"name.upper(): {name.lower()}")
print(f"name.upper(): {name.upper()}")
name.upper(): nick chen
name.upper(): NICK CHEN                

3.startswith()和endswith()

# str之startswith()和endswith()
name = 'Nick Chen'

print(f"name.startswith('Nick'): {name.startswith('Nick')}")
print(f"name.endswith('chen'): {name.endswith('chen')}")
name.startswith('Nick'): True
name.endswith('chen'): False                

4.rsplit()

# str之rsplit()
info = 'nick:male:19'

print(f"info.rsplit(':', 1): {info.rsplit(':', 1)}")  # 從右開始切割
info.rsplit(':', 1): ['nick:male', '19']                

5.join()

lis = [1,2,'19']
print(f"':'.join(lis): {':'.join(lis)}")  # 報錯,數字不可和字元串拼接
# str之join()
lis = ['nick', 'male', '19']

print(f"':'.join(lis): {':'.join(lis)}")
':'.join(lis): nick:male:19                

6.replace()

# str值replace()
name = 'nick shuai'

print(f"name.replace('shuai','handsome'): {name.replace('shuai','handsome')}")
name.replace('shuai','handsome'): nick handsome                

7.isdigit()

# str值isdigit()
salary = '111'
print(salary.isdigit())  # True

salary = '111.1'
print(salary.isdigit())  # False
True
False
# str之isdigit()應用場景
age = input('age: ')
if age.isdigit():
    age = int(age)

    if age < 18:
        print('小姐姐')
    else:
        print('阿姨好')
else:
    print(f'你的年齡能是這個{age}?')
age: 逗你玩?
你的年齡能是這個逗你玩??                

**1.3 其他操作(**)**

這些隻需要了解一下就好了,不用去死磕,前面的那些方法才是需要死磕的,别搞錯了,到時候舍本逐末損失最大的還是你哦。

1.find()、rfind()、index()、rindex()、count()

# str之find()、rfind()、index()、rindex()、count()
msg = 'my name is tank, tank shi sb, hha'

print(f"msg.find('tank'): {msg.find('tank')}")  # 找不到傳回-1
print(f"msg.find('tank',0,3): {msg.find('tank',0,3)}")
print(f"msg.rfind('tank'): {msg.rfind('tank')}")  # 找不到傳回-1
print(f"msg.index('tank'): {msg.index('tank')}")  # 找不到報錯
print(f"msg.rindex('tank'): {msg.rindex('tank')}")  # 找不到報錯
      

print(f"msg.count('tank'): {msg.count('tank')}")
msg.find('tank'): 11
msg.find('tank',0,3): -1
msg.rfind('tank'): 17
msg.index('tank'): 11
msg.rindex('tank'): 17
msg.count('tank'): 2                

2.center()、ljust()、rjust()、zfill()

# str之center()、ljust()、rjust()、zfill()
print(f"'info nick'.center(50,'*'): {'info nick'.center(50,'*')}")
print(f"'info nick'.ljust(50,'*'): {'info nick'.ljust(50,'*')}")
print(f"'info nick'.rjust(50,'*'): {'info nick'.rjust(50,'*')}")
print(f"'info nick'.zfill(50): {'info nick'.zfill(50)}")  # 預設用0填充
'info nick'.center(50,'*'): ********************info nick*********************
'info nick'.ljust(50,'*'): info nick*****************************************
'info nick'.rjust(50,'*'): *****************************************info nick
'info nick'.zfill(50): 00000000000000000000000000000000000000000info nick                

3.expandtabs()

# str之expandtabs()
print(f"a\\tb\\tc: %s"%('a\tb\tc\t'))  # 預設制表符8個空格
print(f"'a\\tb\\tc'.expandtabs(32): %s"%('a\tb\tc\t'.expandtabs(32)))
a\tb\tc: a  b   c   
'a\tb\tc'.expandtabs(32): a                               b                               c                                               

4.captalize()、swapcase()、title()

# str之captalize()、swapcase()、title()
name = 'nick handsome sWAPCASE'

print(f"name.capitalize(): {name.capitalize()}")
print(f"name.swapcase(): {name.swapcase()}")  # 大小寫互轉
print(f"name.title(): {name.title()}")
name.capitalize(): Nick handsome swapcase
name.swapcase(): NICK HANDSOME Swapcase
name.title(): Nick Handsome Swapcase                

5.is數字系列(隻是為了告訴你,判斷是否為數字時除了中文數字以後使用isdigit()即可)

  • isdecimal(): 檢查字元串是否值包含十進制字元,如果是傳回True,否則傳回False。
  • isdigit(): 如果字元串隻包含數字則傳回True,否則傳回False。
  • isnumeric(): 如果字元串中隻包含數字字元,則傳回True,否則傳回False。
num = "1"  #unicode
num.isdigit()   # True
num.isdecimal() # True
num.isnumeric() # True

num = "1" # 全角
num.isdigit()   # True
num.isdecimal() # True
num.isnumeric() # True

num = b"1" # byte
num.isdigit()   # True
num.isdecimal() # AttributeError 'bytes' object has no attribute 'isdecimal'
num.isnumeric() # AttributeError 'bytes' object has no attribute 'isnumeric'

num = "IV" # 羅馬數字
num.isdigit()   # True
num.isdecimal() # False
num.isnumeric() # True

num = "四" # 漢字
num.isdigit()   # False
num.isdecimal() # False
num.isnumeric() # True

===================
isdigit()
True: Unicode數字,byte數字(單位元組),全角數字(雙位元組),羅馬數字
False: 漢字數字
Error: 無

isdecimal()
True: Unicode數字,全角數字(雙位元組)
False: 羅馬數字,漢字數字
Error: byte數字(單位元組)

isnumeric()
True: Unicode數字,全角數字(雙位元組),羅馬數字,漢字數字
False: 無
Error: byte數字(單位元組)

================
import unicodedata

unicodedata.digit("2")   # 2
unicodedata.decimal("2") # 2
unicodedata.numeric("2") # 2.0

unicodedata.digit("2")   # 2
unicodedata.decimal("2") # 2
unicodedata.numeric("2") # 2.0

unicodedata.digit(b"3")   # TypeError: must be str, not bytes
unicodedata.decimal(b"3") # TypeError: must be str, not bytes
unicodedata.numeric(b"3") # TypeError: must be str, not bytes

unicodedata.digit("Ⅷ")   # ValueError: not a digit
unicodedata.decimal("Ⅷ") # ValueError: not a decimal
unicodedata.numeric("Ⅷ") # 8.0

unicodedata.digit("四")   # ValueError: not a digit
unicodedata.decimal("四") # ValueError: not a decimal
unicodedata.numeric("四") # 4.0

#"〇","零","一","壱","二","弐","三","參","四","五","六","七","八","九","十","廿","卅","卌","百","千","萬","萬","億"                

6.is其他

  • isalnum(): 如果字元串至少有一個字元并且所有字元都是字母或數字則傳回True,否則傳回False。
  • isalpha(): 如果字元串至少有一個字元并且所有字元都是字母則傳回True,否則傳回False。
  • islower(): 如果字元串中隻包含至少一個區分大小寫的字元,并且所有這些(區分大小寫的)字元都是小寫,則傳回True,否則傳回False。
  • isspace(): 如果字元串中隻包含空白,則傳回True,否則傳回False
  • isupper(): 如果字元串中包含至少一個區分大小寫的字元,并且所有這些(區分大小寫的)字元都是大寫,則傳回True,否則傳回False。
  • istitle(): 如果字元串是标題類型的(見title()),則傳回True,否則傳回False。

4.存一個值or多個值:一個值

5.有序or無序:隻要是有索引的,都是有序的,是以字元串是有序的。

name = 'nick'
print(f'first:{id(name)}')
name = 'nick handsome'
print(f'second:{id(name)}')
first:4377100160
second:4377841264                

6.可變or不可變:不可變資料類型

CV一時爽,一直CV一直爽!

好了好了,今天的内容就這麼多了,就講到這裡了。

Day7之資料類型的内置方法數字類型内置方法字元串類型内置方法

轉載于:https://www.cnblogs.com/chanyuli/p/11290540.html