數(shù)據(jù)類型
計(jì)算機(jī)其實(shí)就是一個(gè)做數(shù)學(xué)運(yùn)算的機(jī)器尾抑,所以計(jì)算機(jī)程序的主要任務(wù)就是處理各種數(shù)值歇父。但是計(jì)算機(jī)要處理的數(shù)值蒂培,可不僅僅只是數(shù)值再愈,計(jì)算機(jī)還可以處理文本榜苫、音頻、視頻翎冲、圖像等數(shù)據(jù)垂睬。
Python中可以直接處理的比較簡(jiǎn)單的數(shù)據(jù)類型,例如字符串抗悍、整數(shù)驹饺、浮點(diǎn)數(shù),還有幾個(gè)和它們相關(guān)的函數(shù):str()缴渊,int()赏壹,float(),type()衔沼,len()蝌借。
字符串的英文是string,計(jì)算機(jī)中一般簡(jiǎn)寫(xiě)為str指蚁。
字符串的呈現(xiàn)方式一般是用單引號(hào)或者雙引號(hào)括起來(lái)的文本菩佑,比如 '長(zhǎng)安'。
print('長(zhǎng)安')
print("長(zhǎng)安")
第一行被打印出來(lái)的字符串長(zhǎng)安凝化,和第二行被打印出來(lái)的字符串長(zhǎng)安稍坯,沒(méi)有任何的不一樣。所以單引號(hào)和雙引號(hào)的效果是一樣的搓劫。
需要注意的是單引號(hào)和雙引號(hào)只是一種表達(dá)方式瞧哟,不是字符串的一部分。例如字符串 'ABC'枪向, 就是A 勤揩、B、C這三個(gè)字符而已遣疯。
疑問(wèn):如果字符串內(nèi)部包含了單引號(hào)【''】和雙引號(hào)【""】的話雄可,腫么辦?
答案:利用【轉(zhuǎn)義字符\】來(lái)標(biāo)識(shí)缠犀。
a1 ='Let's go'
print(a1)
這樣運(yùn)行的話数苫,Python會(huì)報(bào)錯(cuò): SyntaxError: invalid syntax,意思是“語(yǔ)法錯(cuò)誤”辨液,因?yàn)樗话亚皟蓚€(gè)單引號(hào)中的Let當(dāng)成了字符串虐急。
Python是從左往右匹配單(雙)引號(hào)的——當(dāng)它讀到一個(gè)引號(hào)時(shí),會(huì)在心里嘀咕:呀滔迈,這是字符串止吁。當(dāng)它再讀到下一個(gè)引號(hào)時(shí)被辑,會(huì)在心里嘀咕:好!字符串結(jié)束了敬惦!所以在計(jì)算機(jī)眼里盼理,上面的'Let'是字符串,而后面的東西呢俄删,它并不能讀懂宏怔,于是產(chǎn)生一個(gè)報(bào)錯(cuò)。
這時(shí)畴椰,就需要使用轉(zhuǎn)義字符【\】臊诊,把字符串中的單引號(hào)轉(zhuǎn)義一下,此時(shí)【' Let's go '】就變成了【' Let\'s go '】
a2 ='Let\'s go'
print(a2)
轉(zhuǎn)義字符【\】就是改變連接在它后面的字符本意斜脂,這樣字符串【Let's go】?jī)?nèi)部的單引號(hào)【'】就不再具備標(biāo)記字符串的意思了抓艳,所以代碼運(yùn)行時(shí)自動(dòng)跳過(guò),去匹配后面的單引號(hào)帚戳。
字符串中玷或,單引號(hào)和雙引號(hào)的交替使用。
除此之外销斟,還有一個(gè)辦法可以解決這個(gè)問(wèn)題庐椒,就是用雙引號(hào)來(lái)標(biāo)識(shí)字符串,像這樣:
a3 ="Let's go"
print(a3)
由于你用了雙引號(hào)作為標(biāo)識(shí)符蚂踊,而內(nèi)部使用的是單引號(hào)约谈,Python就能區(qū)分開(kāi)來(lái),正常運(yùn)行了犁钟。
還可以反過(guò)來(lái)干棱诱,比如說(shuō)外部用單引號(hào),然后內(nèi)部的文本含有雙引號(hào)涝动,也可以的迈勋。
a = input('孔子曾說(shuō)過(guò)哪句名言?')
print('子曰:"'+a+'醋粟。"')
在這行代碼里靡菇,我們能看到最后打印的字符串由三部分組成。第0部分是【子曰:"】米愿,第1部分是變量【a】厦凤,第2部分是【。"】育苟,這三部分用加號(hào)【+】連接起來(lái)了较鼓。
另一種轉(zhuǎn)義字符【\n】,它的作用是換行。
poem ='說(shuō)是悲哀也可以吧博烂。\n事物的滋味香椎。\n我嘗得太早了。'
print(poem)
這是一首只有三行的短詩(shī)禽篱,如果你想要把每一句換行呈現(xiàn)的話畜伐。可以在每一句后面加【\n】谆级。
轉(zhuǎn)義字符還有很多烤礁,它們各有不同的功能讼积,下面的轉(zhuǎn)義字符表可以收藏以便查看肥照,不需要記住勤众!你只需要在用到時(shí)查閱一下即可舆绎。
type()函數(shù)
主要用于獲取數(shù)據(jù)的數(shù)據(jù)類型
a ='吳承恩'
b = type(a)
print(b)
第1行:定義了變量a,并為其賦值们颜。
第2行:用type() 函數(shù)獲取到了 a 的數(shù)據(jù)類型吕朵,并放在變量 b 里面。
第3行:為了顯示在屏幕上窥突,使用print() 函數(shù)讓我們看到努溃。
為了簡(jiǎn)潔方便,我們會(huì)這樣寫(xiě):
a ='吳承恩'
print(type(a))
終端顯示了<class 'str'>阻问,class代表類梧税,而str代表字符串,所以這是一個(gè)字符串的類称近。(更具體的關(guān)于類的概念會(huì)在后面的課程談到)
type()函數(shù)會(huì)在我們后期的爬蟲(chóng)學(xué)習(xí)中發(fā)揮很大的作用第队,先打牢基礎(chǔ)。
舉個(gè)栗子刨秆,當(dāng)我們想下載一本小說(shuō)的時(shí)候凳谦,我們通過(guò)某種方法,獲得了一個(gè)變量衡未,里面放了數(shù)據(jù)尸执,我們期望里面放的就是小說(shuō)內(nèi)容(即字符串類型的數(shù)據(jù))。當(dāng)我們不確定里面放的是不是字符串缓醋,這時(shí)如失,type() 函數(shù)就能幫你確認(rèn)了。
len()函數(shù)
能幫你獲取到數(shù)據(jù)的長(zhǎng)度改衩。
它的用法和type() 非常相似后豫。請(qǐng)看下面的代碼和解釋。
a ='吳承恩'
b = len(a)
print(b)
第1行:定義了變量a敛苇,并為其賦值。
第2行:用len() 函數(shù)獲取到了 a 的長(zhǎng)度板惑,并放在變量 b 里面。
第3行:為了顯示在屏幕上偎快,使用print() 函數(shù)讓我們看到冯乘。
一般來(lái)說(shuō),為了簡(jiǎn)潔方便晒夹,我們會(huì)這樣寫(xiě):
a ='吳承恩'
print(len(a))
運(yùn)行結(jié)果是3
終端顯示了3裆馒,代表這個(gè)字符串的長(zhǎng)度為3。
s ='egg'
print(len(s))
終端顯示了3丐怯,代表這個(gè)字符串的長(zhǎng)度為3喷好。
整數(shù)長(zhǎng)啥樣子,跟普通的數(shù)字沒(méi)啥區(qū)別啦读跷。1梗搅,23,456
Python可以處理任意大小的整數(shù)效览,也包括負(fù)整數(shù)无切,在程序中的表示方法和數(shù)學(xué)上的寫(xiě)法一模一樣。下面是Python中整數(shù)能做的運(yùn)算類型丐枉。你只需要了解就好哆键,需要時(shí)再來(lái)查看即可。
print(type(5))
print(type('5'))
終端
user1009@python-class:~/lesson/3-1/93$ python ~/lesson/3-1/93/main.py
<class 'int'>
<class 'str'>
5 和 '5' 是不一樣的了吧瘦锹?一個(gè)是整數(shù)籍嘹,一個(gè)是字符串。
print(len(5))
請(qǐng)看圖中的紅框部分沼本,line1表示第一行代碼出了錯(cuò)噩峦,然后圖片中最后一行寫(xiě)著:TypeError: object of type 'int' has no len() 。意思是類型錯(cuò)誤:整數(shù)這個(gè)類型沒(méi)有l(wèi)en() 函數(shù)抽兆∈恫梗可見(jiàn),整數(shù)是不能使用len() 的辫红。
浮點(diǎn)數(shù)就是帶小數(shù)的數(shù)字凭涂。1.0,3.14159贴妻,-0.33
浮點(diǎn)數(shù)的英文是float切油,沒(méi)有簡(jiǎn)寫(xiě)
整數(shù)運(yùn)算永遠(yuǎn)是精確的(除法難道也是精確的?是的C汀)澎胡,而浮點(diǎn)數(shù)運(yùn)算則可能會(huì)有四舍五入的誤差。
print(type(1.0))
print(type(3.14159))
print(type(-0.33))
終端
user1009@python-class:~/lesson/3-1/116$ python ~/lesson/3-1/116/main.py
<class 'float'>
<class 'float'>
<class 'float'>
print(len(1.0))
print(len(3.14159))
print(len(-0.33))
看圖片中倒數(shù)第三行,寫(xiě)了問(wèn)題出在 line1攻谁,所以第一行代碼就執(zhí)行不下去稚伍。終端顯示TypeError: object of type 'float' has no len()。意思是類型錯(cuò)誤:浮點(diǎn)數(shù)這個(gè)類型沒(méi)有長(zhǎng)度戚宦。
計(jì)算機(jī)是在跟你說(shuō):浮點(diǎn)數(shù)沒(méi)有l(wèi)en()函數(shù)个曙。所以啊,整數(shù)和浮點(diǎn)數(shù)都不能使用len() 函數(shù)受楼。
如何連接一個(gè)整數(shù)和字符串垦搬,再讓print()函數(shù)打印出來(lái)?( 轉(zhuǎn)換數(shù)據(jù)類型, 即str()、int()和float()函數(shù))
t =3
print('我談過(guò)'+t+'次戀愛(ài)艳汽。')
看倒數(shù)第三行猴贰,是line2有問(wèn)題;再看最后一行寫(xiě)著TypeError: must be str, not int 意思是——類型錯(cuò)誤:必須是字符串骚灸,而不是整數(shù)糟趾。
也就是說(shuō),整數(shù)和字符串甚牲,用加號(hào)是拼接不起來(lái)的。
a = input('隨便輸入一個(gè)數(shù)字')
b =1
print(a+b)
隨便輸入一個(gè)數(shù)字3后蝶柿,終端報(bào)錯(cuò)了丈钙。
問(wèn)題出在line3,再看圖片中的最后一行交汤,還是同樣的TypeError(類型錯(cuò)誤)雏赦。因?yàn)閕nput() 函數(shù)接受的內(nèi)容都是字符串的數(shù)據(jù)類型,雖然你輸入了一個(gè)數(shù)字芙扎,但放在變量a里面的星岗,是字符串'3',整數(shù)和字符串無(wú)法相加戒洼,所以終端又會(huì)報(bào)錯(cuò)俏橘。
這兩段代碼,終端都報(bào)錯(cuò)了圈浇。而它們倆的錯(cuò)誤原因都是一樣的——不同的數(shù)據(jù)類型寥掐,沒(méi)辦法拼接在一起。
這不同的數(shù)據(jù)類型磷蜀,怎么連在一起呢召耘?就是轉(zhuǎn)換數(shù)據(jù)類型,有3個(gè)函數(shù)可以實(shí)現(xiàn)這個(gè)功能褐隆,即str()污它、int()和float()函數(shù)。
想連接字符串和整數(shù),可以用str() 函數(shù)把t這一整數(shù)變?yōu)樽址?/b>
t =3
print('我談過(guò)'+str(t)+'次戀愛(ài)衫贬。')
終端
user1009@python-class:~/lesson/3-1/153$ python ~/lesson/3-1/153/main.py我談過(guò)3次戀愛(ài)蜜宪。
a = input('隨便輸入一個(gè)數(shù)字')
b =1
print(int(a)+b)
終端
user1009@python-class:~/lesson/3-1/158$ python ~/lesson/3-1/158/main.py隨便輸入一個(gè)數(shù)字1
2
我一開(kāi)始還擔(dān)心學(xué)不會(huì),開(kāi)課之后發(fā)現(xiàn)一點(diǎn)都不難祥山,非常適合入門(mén)圃验,寫(xiě)出第一行代碼的時(shí)候超級(jí)自豪。想捉住人工智能機(jī)遇的人推薦來(lái)報(bào)名缝呕!
課程最大的特點(diǎn)和優(yōu)點(diǎn)澳窑,就是操作性強(qiáng),并且能知道自己錯(cuò)在哪里供常,較快的掌握枯燥的理論知識(shí)摊聋,也是我最喜歡的地方。對(duì)于我這個(gè)小白來(lái)說(shuō)栈暇,真心良心產(chǎn)品麻裁,點(diǎn)贊點(diǎn)贊!T雌怼煎源!
知識(shí)點(diǎn)回顧
數(shù)據(jù)類型:1,計(jì)算機(jī)就是一個(gè)做數(shù)學(xué)運(yùn)算的機(jī)器香缺,計(jì)算機(jī)程序的主要任務(wù)就是處理各種數(shù)值手销。可不僅僅只是數(shù)值图张,計(jì)算機(jī)還可以處理文本锋拖、音頻、視頻祸轮、圖像等數(shù)據(jù),2兽埃,簡(jiǎn)單的數(shù)據(jù)類型有字符串、整數(shù)适袜、浮點(diǎn)數(shù)柄错。
單引號(hào)和雙引號(hào):是一種表達(dá)方式,不是字符串的一部分痪蝇。單引號(hào)和雙引號(hào)的效果是一樣的鄙陡。
字符串?dāng)?shù)據(jù)類型:字符串的呈現(xiàn)方式一般是用單引號(hào)或者雙引號(hào)括起來(lái)的文本,比如 '長(zhǎng)安'躏啰。字符串的英文是string趁矾,計(jì)算機(jī)中一般簡(jiǎn)寫(xiě)為str。
字符串內(nèi)部包含了單引號(hào)【''】和雙引號(hào)【""】:利用【轉(zhuǎn)義字符\】來(lái)標(biāo)識(shí)给僵。轉(zhuǎn)義字符【\】就是改變連接在它后面的字符本意毫捣,內(nèi)部的單引號(hào)【'】就不再具備標(biāo)記字符串的意思了详拙,所以代碼運(yùn)行時(shí)自動(dòng)跳過(guò),去匹配后面的單引號(hào)蔓同。除此之外饶辙,還有一個(gè)辦法可以解決這個(gè)問(wèn)題,就是用雙引號(hào)來(lái)標(biāo)識(shí)字符串斑粱。用了雙引號(hào)作為標(biāo)識(shí)符弃揽,而內(nèi)部使用的是單引號(hào),Python就能區(qū)分開(kāi)來(lái)则北,正常運(yùn)行了矿微。還可以反過(guò)來(lái)干,比如說(shuō)外部用單引號(hào)尚揣,然后內(nèi)部的文本含有雙引號(hào)涌矢。
轉(zhuǎn)義字符\【\】:不標(biāo)記連接在它后面的字符本意,代碼運(yùn)行時(shí)自動(dòng)跳過(guò)快骗。
轉(zhuǎn)義字符【\n】:作用是換行娜庇。三行的短詩(shī),如果想要把每一句換行呈現(xiàn)的話方篮∶悖可以在每一句后面加【\n】。
整數(shù)數(shù)據(jù)類型:整數(shù)跟普通的數(shù)字沒(méi)啥區(qū)別恭取,Python可以處理任意大小的整數(shù)泰偿,也包括負(fù)整數(shù),在程序中的表示方法和數(shù)學(xué)上的寫(xiě)法一模一樣蜈垮。整數(shù)的英文是integer,簡(jiǎn)寫(xiě)為int裕照。
浮點(diǎn)數(shù)數(shù)據(jù)類型:1攒发,凡是帶有小數(shù)點(diǎn)的數(shù)字,就都是浮點(diǎn)數(shù)晋南。浮點(diǎn)數(shù)的英文是float惠猿,沒(méi)有簡(jiǎn)寫(xiě)。2负间,整數(shù)運(yùn)算永遠(yuǎn)是精確的(除法難道也是精確的偶妖?是的!)政溃,而浮點(diǎn)數(shù)運(yùn)算則可能會(huì)有四舍五入的誤差趾访。
獲取數(shù)據(jù)類型函數(shù)type():例如,終端顯示了董虱,class代表類扼鞋,而str代表字符串申鱼,所以這是一個(gè)字符串的類。type()函數(shù)會(huì)在后期的爬蟲(chóng)學(xué)習(xí)中發(fā)揮很大的作用云头,先打牢基礎(chǔ)捐友。
獲取數(shù)據(jù)長(zhǎng)度的函數(shù)len():例如,終端顯示了3溃槐,代表這個(gè)字符串的長(zhǎng)度為3匣砖。,整數(shù)和浮點(diǎn)數(shù)都不能使用len() 函數(shù)。字串符則可以昏滴。
數(shù)據(jù)類型【彼此轉(zhuǎn)換】:整數(shù)和字符串猴鲫,用加號(hào)是拼接不起來(lái)的。不同的數(shù)據(jù)類型影涉,沒(méi)辦法拼接在一起变隔。要連在一起,就要轉(zhuǎn)換數(shù)據(jù)類型蟹倾。有3個(gè)函數(shù)可以實(shí)現(xiàn)這個(gè)功能匣缘,即str()、int()和float()函數(shù)鲜棠。要想連接字符串和整數(shù)肌厨,可以用str() 函數(shù)把t這一整數(shù)變?yōu)樽址?/p>