Python中數(shù)據(jù)類型:
計算機(jī)顧名思義就是可以做數(shù)學(xué)計算的機(jī)器,因此,計算機(jī)程序理所當(dāng)然地可以處理各種數(shù)值。但是,計算機(jī)能處理的遠(yuǎn)不止數(shù)值,還可以處理文本、圖形、音頻、視頻、網(wǎng)頁等各種各樣的數(shù)據(jù),不同的數(shù)據(jù),需要定義不同的數(shù)據(jù)類型。在Python中,能夠直接處理的數(shù)據(jù)類型有一下幾種:
一、整數(shù)
Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù),在Python程序中,整數(shù)的表示方法和數(shù)學(xué)上的寫法一模一樣,例如:1,100,-800等等。
計算機(jī)由于使用二進(jìn)制,所以,有時候用十六進(jìn)制表示整數(shù)比較方便,十六進(jìn)制用 0x 前綴和 0-9 , a-f 表示,例如0xff00,0xa5b4c3d3,等等。
二、浮點(diǎn)數(shù)
浮點(diǎn)數(shù)也就是小數(shù),之所以稱之為浮點(diǎn)數(shù),是因為按照科學(xué)計數(shù)法表示時,一個浮點(diǎn)數(shù)的小數(shù)點(diǎn)未知是可變的,比如,1.23x109和12.3x108是相等的。浮點(diǎn)數(shù)可以用數(shù)學(xué)寫法,如 1.23,3.14,-9.01,等等。但是對于很大或很小的浮點(diǎn)數(shù),就必須用科學(xué)計算法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
證書和浮點(diǎn)數(shù)在計算機(jī)內(nèi)部存儲的方式是不同的,證書運(yùn)算永遠(yuǎn)是精確的(出發(fā)難道也是精確的?是的?。↑c(diǎn)數(shù)運(yùn)算則可能會有四舍五入的誤差。
三、字符串
字符串是以 ‘’ 或 “” 括起來的任意文本,比如’abc’, “xyz”等等。請注意,’’ 或 “” 本身只是一種表示方式,不是字符串的一部分。因此,字符串’abc’只有a,b,c這3個字符。
四、布爾值
布爾值和不二袋鼠的表示完全一致。一個布爾值只有True、False兩種值,要么是True,要么是False,在Python中,可以直接用True和False表示布爾值(注意大小寫),也可以通過不二運(yùn)算計算出來。
布爾值可以用and、or和not運(yùn)算。
And 運(yùn)算是與運(yùn)算,只有所有都為True,and運(yùn)算結(jié)果才是True。
Or 運(yùn)算時或運(yùn)算,只要其中有一個為True,or運(yùn)算結(jié)果就是True。
Not 運(yùn)算是非運(yùn)算,他是一個彈幕運(yùn)算符,吧True變成False,F(xiàn)alse變成True。
五、空值
空值是Python中一個特殊的值,用None表示。None不能理解為0,因為0 是有意義的,而None是一個特殊的空值。
此外,Python還提供了列表、字典等多種數(shù)據(jù)類型,還允許創(chuàng)建自定義數(shù)據(jù)類型。
Python之print語句
print可以向屏幕上輸出指定的位子。比如輸出’Hello , world’。用代碼實(shí)現(xiàn)如下:
print 'Hello , world’
注意:
1、當(dāng)我們在Python交互式環(huán)境下編寫代碼時,>>> 是Python解釋器的提示符莫不是代碼的一部分
2、當(dāng)我們在文本編輯器中編寫代碼時,千萬不要自己添加 >>>
print語句也可以跟上多個字符串,用逗號’,’隔開,就可以連成一串輸出:
print ’The quick brown fox’, ‘jumps over’, ’the lazy dog’
The quick brown fox jumps over the lazy dog
print會一次打印每個字符串,遇到逗號會輸出一個空格,因此輸出的字符串拼接起來就是上面的內(nèi)容
print也可以打印整數(shù),或者計算結(jié)果:
print 300
300 #運(yùn)行結(jié)果
print 100 + 200
300 # 運(yùn)行結(jié)果
因此,我們可以計算100 + 200 的結(jié)果打印得更漂亮一點(diǎn)
Print ‘100 + 200 = ’, 100 + 200
100 + 200 = 300
注意:對于100 + 200,Python解釋器自動計算出結(jié)果300,但是,’100 + 200 = ’是字符串二位數(shù)學(xué)公式,Python把它視為字符串,請自行解釋刪除打印結(jié)果。
Python的注釋
任何時候,我們否可以給才程序加上注釋。注釋是用來說明代碼的,給自己或別人看,二程序運(yùn)行的時候,Python解釋器會直接忽略掉注釋,所以,有沒有注釋不影響程序的執(zhí)行結(jié)果,但是影響到別人能不能看懂你的代碼。
Python的注釋以 # 開頭,后面的文字知道行尾都算注釋
// # 這一行全部都是注釋
注釋還有一個巧妙的用途,就是一些代碼我們不想運(yùn)行,但又不想刪除,就可以用注釋暫時屏蔽掉。
Python中什么是變量
在Python中,變量的概念基本上和初中代數(shù)的方程變量是一致的。
例如,對于方程式 y = x * x, x 就是變量。當(dāng) x = 2 時,計算結(jié)果是 4 ,當(dāng) x = 5 時,計算結(jié)果是25.
只是在計算機(jī)程序中,變量不僅可以是數(shù)字,還可以是任意數(shù)據(jù)類型。
在Python程序中,變量是用一個變量名表示,變量名必須是大小寫英文、數(shù)字和下劃線的組合,且不能用數(shù)字開頭,比如:a = 1
變量a是一個整數(shù)。
T_007 = ’T007’
變量T_007是一個字符串
在Python中,等號 = 是復(fù)制語句,可以把任意數(shù)據(jù)類型賦值給變量,同一個變量可以反復(fù)復(fù)制,而且可以是不同類型的變量,例如:
a = 123 # a是整數(shù)
Print a
a = ‘imooc’ # a變?yōu)樽址?br>
Print a
這種變量本身類型不固定的語言稱之為動態(tài)語言,與之對應(yīng)的是靜態(tài)語言。
靜態(tài)語言在定義變量時必須制定變量類型,如果賦值的時候類型不匹配,就會報錯。例如Java是靜態(tài)語言,賦值語句下(// 表示注釋):
Int a = 123; // a 是整數(shù)類型變量
a = “mooc”; // 錯誤:不能把字符串賦值給整型變量
和靜態(tài)變量相比,動態(tài)語言更靈活,就是這個原因。
請不要把賦值語句的等號等同于數(shù)學(xué)的等號。比如下面的代碼:
x = 10
x = x + 2
如果從數(shù)學(xué)上理解x = x + 2那無論如何是不成立的,在程序中,賦值語句先計算右側(cè)的表達(dá)式x + 2,得到結(jié)果12,在賦值給變量。由于x之前的值是10,重新復(fù)制后,x的值變成12
最后,理解變量在計算機(jī)內(nèi)存中的表示也非常重要。當(dāng)我們寫:a = ‘ABC’時,Python解釋器干了兩件事:
1、在內(nèi)存中創(chuàng)建了一個’ABC’的字符串;
2、在內(nèi)存中創(chuàng)建了一個名為 a 的變量,并把它指向’ABC’。
也可以把一個變量a賦值給另一個變量b,這個操作實(shí)際上是把變量b只想變量a所指向的數(shù)據(jù),例如下面的代碼:
a = ‘ABC’
b = a
a = ‘XYZ’
Print b
最后一行打印出變量b的內(nèi)容到底是’ABC’呢還是’XYZ’?如果從數(shù)學(xué)意義上理解就會錯誤地得出b和a相同,也應(yīng)該是’XYZ’,但實(shí)際上b的值是’ABC’。
Python 中定義字符串
字符串轉(zhuǎn)譯
\n 表示換行
\t 表示一個制表符
\ 表示 \ 字符本身
Python 中raw字符串與多行字符串
如果一個字符串包含很多需要轉(zhuǎn)譯的字符,對每一個字符都進(jìn)行轉(zhuǎn)譯會很麻煩。為了避免這種情況,我們可以在字符串前面加個前綴 r ,表示這是一個raw字符串,里面的字符就不需要轉(zhuǎn)譯了。例如:
r ‘(_)/(_)/‘
但是r ‘…’表示法不能表示多行字符串,也不能表示包含 ’ 和 “” 的字符串。
如果要表示多行字符串,可以用’’’…’’’表示:
‘'' Line 1
Line 2
Line 3 ‘''
上面這個字符串的表示方法和下面的是完全一樣的:
‘Line 1 \nLine 2\nLine 3’
還可以在多行字符串前面添加 r ,把的這個多行字符串頁面城一個raw字符串:
r ‘’’Python is created by “Guido”.
It is free and easy to learn.
Let’s start learn Python in imooc!’’'
Python 中Unicode字符串
字符串還有一個編碼問題。
因為計算機(jī)只能處理數(shù)字,如果要處理文本,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理。最早的計算機(jī)在設(shè)計時采用8個比特(bit)作為一個字節(jié)(byte),所以,一個字節(jié)能表示的最帶的整數(shù)就是255(二進(jìn)制11111111 = 十進(jìn)制255),0 - 255被用來表示大小寫引文字母、數(shù)字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A 的編碼是65,小寫字母z的編碼是122。
如果要表示中文,顯然一個字節(jié)是不夠的,至少需要兩個字節(jié),而且還不能和ASCII編碼沖突,所以,中國制定了GB3212編碼,用來把中文編進(jìn)去。
類似的,日文和韓文等其他語言也有這個問題。為了統(tǒng)一所有文字的編碼,Unicode就應(yīng)運(yùn)而生。Unicode把所有語言都統(tǒng)一到一套編碼里,這樣就不會再有亂碼問題了。
Unicode通常用兩個字節(jié)表示一個字符,原有的英文編碼從單字節(jié)變成雙字節(jié),只需要把高字節(jié)全部填為0就可以。
因為Python的誕生比Unicode標(biāo)準(zhǔn)發(fā)布的時間還要早,所以最早的Python只支持ASCII編碼,普通的字符串’ABC’在Python呢哦不都是ASCII編碼的。
Python在后來添加了對Unicode的支持,以Unicode表示的字符串用 u’…’ 表示。比如:
print u’中文'
中文
注意:不加 u ,中文就不能正常顯示。
Unicode字符串除了多了一個 u 之外,與普通的字符串沒啥區(qū)別,轉(zhuǎn)譯字符串和多行表示法仍然有效:
轉(zhuǎn)義:
u ‘中文\n日文\n韓文’
多行:
u ‘’’ 第一行
第二行’’'
raw + 多行:
ur ‘’’Python的Unicode字符串支持“中文”,
“日文”,
“韓文”等多種語言’’'
如果中文字符串在Python環(huán)境下遇到UnicodeDecodeError,這是因為.py文件保存的格式有問題。可以在第一行添加注釋
-#- coding: utf-8 -#-
目的是告訴Python解釋器,用utf-8編碼讀取源代碼。然后用Notepad++ 另存為utf-8格式保存。