曾經的我意氣風發,做事放蕩不羁,常常把人看扁,現在不一樣了,長大了,已經根本不把别人放在眼裡了。
開個玩笑,其實是被社會磨平了棱角,外加上海高溫每天抛光。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5SNxEWO2MjM1MWO0cTNhNGMxADdGJTJt92YuUWbpRnYu4GZj5CbzNnLzAnRyUiRyUSQzUCc0RHa9MmczZCM9UGc5R3ZtlmJ1cjN1AzY1EWY0MWN5cTZ0YjY3IzMlhTO4UjZ5QzNhlTPpRmJ1ITN1ETN1QzN0YTNx0zYlNnJwADMwEzX5kTO5IWPlpXazZCM40Te0lGbhVXcmU2Zh1Wa-cWbpR3Lc12bj5SdklWYi5SYzdWbpR3Lc9CX6MHc0RHaiojIsJye.jpg)
故事還是得從教室的空調說起啊,空調不争氣,而我又每節課都站着上的,好熱,是以一下課我比老師跑的還快,直接就沖進辦公室裡納涼
坐在辦公室門口每天就這個狀态
像個卷簾大将一樣。
直到後來,egon下達了逐客令,于是我就不敢在随便進辦公室了。。。。。egon我還是不敢惹的。
好的那就開始今天的打氣流程!
今日洗腦金句: 學習就像人生,要好好經曆,加油,你要保持善良,也要帶點鋒芒!
數字類型内置方法
like 大家都 know 的,數字類型又分為整型和浮點型。
來我先帶各位憨憨回顧一下整型和浮點型的用途以及定義 ↓
一、整型内置方法(int)
1.用途:年齡、号碼、等級
2.定義:可以使用 int() 方法将純數字的字元串轉為十進制的整型
age = 19 # age = int(10)
print(type(age))
<class 'int'>
需要注意一下的是下面這個,因為我挂了一次
x = int('11.1') # 報錯
print(x)
注意哦,這裡會報錯,這究竟是為什麼呢???
我是這麼了解的,裡面确實是個數字是吧,但是!
這是個字元串類型的資料,你讓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優先掌握的方法
優先掌握麼就是很重要啦,靓仔。
- 按索引取值
- 切片
- 長度len
- 成員運算in|not in
- 移除空白strip
- 切分split
- 循環
CV大法好啊!!!!!!
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一直爽!
好了好了,今天的内容就這麼多了,就講到這裡了。
轉載于:https://www.cnblogs.com/chanyuli/p/11290540.html