Python中數(shù)據(jù)類型:
計算機顧名思義就是可以做數(shù)學計算的機器捡需,因此办桨,計算機程序理所當然地可以處理各種數(shù)值。但是站辉,計算機能處理的遠不止數(shù)值呢撞,還可以處理文本、圖形饰剥、音頻殊霞、視頻、網(wǎng)頁等各種各樣的數(shù)據(jù)捐川,不同的數(shù)據(jù)脓鹃,需要定義不同的數(shù)據(jù)類型。在Python中古沥,能夠直接處理的數(shù)據(jù)類型有一下幾種:
一瘸右、整數(shù)
Python可以處理任意大小的整數(shù),當然包括負整數(shù)岩齿,在Python程序中太颤,整數(shù)的表示方法和數(shù)學上的寫法一模一樣,例如:1盹沈,100龄章,-800等等。
計算機由于使用二進制乞封,所以做裙,有時候用十六進制表示整數(shù)比較方便,十六進制用 0x 前綴和 0-9 肃晚, a-f 表示锚贱,例如0xff00,0xa5b4c3d3关串,等等拧廊。
二、浮點數(shù)
浮點數(shù)也就是小數(shù)晋修,之所以稱之為浮點數(shù)吧碾,是因為按照科學計數(shù)法表示時,一個浮點數(shù)的小數(shù)點未知是可變的墓卦,比如倦春,1.23x109和12.3x108是相等的。浮點數(shù)可以用數(shù)學寫法,如 1.23睁本,3.14山叮,-9.01,等等添履。但是對于很大或很小的浮點數(shù)屁倔,就必須用科學計算法表示,把10用e替代暮胧,1.23x10^9就是1.23e9锐借,或者12.3e8,0.000012可以寫成1.2e-5往衷,等等钞翔。
證書和浮點數(shù)在計算機內(nèi)部存儲的方式是不同的,證書運算永遠是精確的(出發(fā)難道也是精確的席舍?是的2冀巍),而浮點數(shù)運算則可能會有四舍五入的誤差来颤。
三汰扭、字符串
字符串是以 ‘’ 或 “” 括起來的任意文本,比如’abc’, “xyz”等等福铅。請注意萝毛,’’ 或 “” 本身只是一種表示方式,不是字符串的一部分滑黔。因此笆包,字符串’abc’只有a,b,c這3個字符。
四略荡、布爾值
布爾值和不二袋鼠的表示完全一致庵佣。一個布爾值只有True、False兩種值汛兜,要么是True巴粪,要么是False,在Python中序无,可以直接用True和False表示布爾值(注意大小寫)验毡,也可以通過不二運算計算出來衡创。
布爾值可以用and帝嗡、or和not運算。
And 運算是與運算璃氢,只有所有都為True哟玷,and運算結果才是True。
Or 運算時或運算,只要其中有一個為True巢寡,or運算結果就是True喉脖。
Not 運算是非運算,他是一個彈幕運算符抑月,吧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’。用代碼實現(xiàn)如下:
print 'Hello , world’
注意:
1绷跑、當我們在Python交互式環(huán)境下編寫代碼時蹄殃,>>> 是Python解釋器的提示符莫不是代碼的一部分
2、當我們在文本編輯器中編寫代碼時你踩,千萬不要自己添加 >>>
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ù),或者計算結果:
print 300
300 #運行結果
print 100 + 200
300 # 運行結果
因此膝藕,我們可以計算100 + 200 的結果打印得更漂亮一點
Print ‘100 + 200 = ’, 100 + 200
100 + 200 = 300
注意:對于100 + 200式廷,Python解釋器自動計算出結果300,但是芭挽,’100 + 200 = ’是字符串二位數(shù)學公式滑废,Python把它視為字符串,請自行解釋刪除打印結果袜爪。
Python的注釋
任何時候蠕趁,我們否可以給才程序加上注釋。注釋是用來說明代碼的辛馆,給自己或別人看俺陋,二程序運行的時候,Python解釋器會直接忽略掉注釋,所以腊状,有沒有注釋不影響程序的執(zhí)行結果诱咏,但是影響到別人能不能看懂你的代碼。
Python的注釋以 # 開頭缴挖,后面的文字知道行尾都算注釋
// # 這一行全部都是注釋
注釋還有一個巧妙的用途袋狞,就是一些代碼我們不想運行,但又不想刪除映屋,就可以用注釋暫時屏蔽掉硕并。
Python中什么是變量
在Python中,變量的概念基本上和初中代數(shù)的方程變量是一致的秧荆。
例如倔毙,對于方程式 y = x * x, x 就是變量。當 x = 2 時乙濒,計算結果是 4 陕赃,當 x = 5 時,計算結果是25.
只是在計算機程序中颁股,變量不僅可以是數(shù)字么库,還可以是任意數(shù)據(jù)類型。
在Python程序中甘有,變量是用一個變量名表示诉儒,變量名必須是大小寫英文、數(shù)字和下劃線的組合亏掀,且不能用數(shù)字開頭忱反,比如:a = 1
變量a是一個整數(shù)。
T_007 = ’T007’
變量T_007是一個字符串
在Python中滤愕,等號 = 是復制語句温算,可以把任意數(shù)據(jù)類型賦值給變量,同一個變量可以反復復制间影,而且可以是不同類型的變量注竿,例如:
a = 123 # a是整數(shù)
Print a
a = ‘imooc’ # a變?yōu)樽址?br>
Print a
這種變量本身類型不固定的語言稱之為動態(tài)語言,與之對應的是靜態(tài)語言魂贬。
靜態(tài)語言在定義變量時必須制定變量類型巩割,如果賦值的時候類型不匹配,就會報錯付燥。例如Java是靜態(tài)語言宣谈,賦值語句下(// 表示注釋):
Int a = 123; // a 是整數(shù)類型變量
a = “mooc”; // 錯誤:不能把字符串賦值給整型變量
和靜態(tài)變量相比,動態(tài)語言更靈活机蔗,就是這個原因蒲祈。
請不要把賦值語句的等號等同于數(shù)學的等號。比如下面的代碼:
x = 10
x = x + 2
如果從數(shù)學上理解x = x + 2那無論如何是不成立的萝嘁,在程序中梆掸,賦值語句先計算右側(cè)的表達式x + 2,得到結果12牙言,在賦值給變量酸钦。由于x之前的值是10,重新復制后咱枉,x的值變成12
最后卑硫,理解變量在計算機內(nèi)存中的表示也非常重要。當我們寫:a = ‘ABC’時蚕断,Python解釋器干了兩件事:
1欢伏、在內(nèi)存中創(chuàng)建了一個’ABC’的字符串;
2亿乳、在內(nèi)存中創(chuàng)建了一個名為 a 的變量硝拧,并把它指向’ABC’。
也可以把一個變量a賦值給另一個變量b葛假,這個操作實際上是把變量b只想變量a所指向的數(shù)據(jù)障陶,例如下面的代碼:
a = ‘ABC’
b = a
a = ‘XYZ’
Print b
最后一行打印出變量b的內(nèi)容到底是’ABC’呢還是’XYZ’?如果從數(shù)學意義上理解就會錯誤地得出b和a相同,也應該是’XYZ’,但實際上b的值是’ABC’聊训。
Python 中定義字符串
字符串轉(zhuǎn)譯
\n 表示換行
\t 表示一個制表符
\ 表示 \ 字符本身
Python 中raw字符串與多行字符串
如果一個字符串包含很多需要轉(zhuǎ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字符串
字符串還有一個編碼問題州丹。
因為計算機只能處理數(shù)字,如果要處理文本杂彭,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理墓毒。最早的計算機在設計時采用8個比特(bit)作為一個字節(jié)(byte),所以亲怠,一個字節(jié)能表示的最帶的整數(shù)就是255(二進制11111111 = 十進制255)所计,0 - 255被用來表示大小寫引文字母、數(shù)字和一些符號团秽,這個編碼表被稱為ASCII編碼主胧,比如大寫字母A 的編碼是65叭首,小寫字母z的編碼是122。
如果要表示中文踪栋,顯然一個字節(jié)是不夠的焙格,至少需要兩個字節(jié),而且還不能和ASCII編碼沖突夷都,所以眷唉,中國制定了GB3212編碼,用來把中文編進去囤官。
類似的冬阳,日文和韓文等其他語言也有這個問題。為了統(tǒng)一所有文字的編碼党饮,Unicode就應運而生肝陪。Unicode把所有語言都統(tǒng)一到一套編碼里,這樣就不會再有亂碼問題了刑顺。
Unicode通常用兩個字節(jié)表示一個字符见坑,原有的英文編碼從單字節(jié)變成雙字節(jié),只需要把高字節(jié)全部填為0就可以捏检。
因為Python的誕生比Unicode標準發(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格式保存。