print 語句
學(xué)習(xí)編程堤尾,你最急于什么?答案肯定是上手寫點(diǎn)小程序媒殉,這樣也能滿足自己小小的學(xué)習(xí)成就感担敌。那么,print語句就來了廷蓉。print語句可以向屏幕上輸出指定的文字全封。比如輸出’hello, python’,或者"hello桃犬,world"(單引號(hào)和雙引號(hào)是等價(jià)的)用代碼實(shí)現(xiàn)如下:
注意:
1.當(dāng)我們?cè)赑ython交互式環(huán)境下編寫代碼時(shí)刹悴,>>>是Python解釋器的提示符,不是代碼的一部分攒暇。
2.當(dāng)我們?cè)谖谋揪庉嬈髦芯帉懘a時(shí)土匀,千萬不要自己添加 >>>。
print語句也可以跟上多個(gè)字符串形用,用逗號(hào)“,”(逗號(hào))隔開就轧,就可以連成一串輸出:
print會(huì)依次打印每個(gè)字符串,遇到逗號(hào)“,”會(huì)輸出一個(gè)空格田度,因此妒御,輸出的字符串是這樣拼起來的:
print也可以打印整數(shù),或者計(jì)算結(jié)果:
因此每币,我們可以把計(jì)算100 + 200的結(jié)果打印得更漂亮一點(diǎn):
注意: 對(duì)于100 + 200携丁,Python解釋器自動(dòng)計(jì)算出結(jié)果300,但是兰怠,’100 + 200 =’是字符串而非數(shù)學(xué)公式梦鉴,Python把它視為字符串,請(qǐng)自行解釋上述打印結(jié)果揭保。
Python的注釋
任何時(shí)候肥橙,我們都可以給程序加上注釋。注釋是用來說明代碼的秸侣,給自己或別人看存筏,而程序運(yùn)行的時(shí)候,Python解釋器會(huì)直接忽略掉注釋味榛,所以椭坚,有沒有注釋不影響程序的執(zhí)行結(jié)果,但是影響到別人能不能看懂你的代碼搏色。
Python的注釋以#開頭善茎,后面的文字直到行尾都算注釋。#號(hào)是單行注釋
注釋還有一個(gè)巧妙的用途频轿,就是一些代碼我們不想運(yùn)行垂涯,但又不想刪除烁焙,就可以用注釋暫時(shí)屏蔽掉:
變量
在Python中,變量的概念基本上和初中代數(shù)的方程變量是一致的耕赘。
例如骄蝇,對(duì)于方程式y(tǒng)=x*x,x就是變量操骡。當(dāng)x=2時(shí)九火,計(jì)算結(jié)果是4,當(dāng)x=5時(shí)册招,計(jì)算結(jié)果是25吃既。
只是在計(jì)算機(jī)程序中,變量不僅可以是數(shù)字跨细,還可以是任意數(shù)據(jù)類型鹦倚。
在Python程序中,變量是用一個(gè)變量名表示冀惭,變量名必須是 大小寫英文震叙、數(shù)字和下劃線(_)的組合,且不能用數(shù)字開頭 散休,比如:
變量a是一個(gè)整數(shù)媒楼。
變量t_007是一個(gè)字符串。
在Python中戚丸,等號(hào)"="是賦值語句划址,可以把任意數(shù)據(jù)類型賦值給變量,同一個(gè)變量可以反復(fù)賦值限府,而且可以是不同類型的變量夺颤,例如:
這種變量本身類型不固定的語言稱之為動(dòng)態(tài)語言,與之對(duì)應(yīng)的是靜態(tài)語言胁勺。
靜態(tài)語言在定義變量時(shí)必須指定變量類型世澜,如果賦值的時(shí)候類型不匹配,就會(huì)報(bào)錯(cuò)署穗。例如Java是靜態(tài)語言寥裂,賦值語句如下(// 表示注釋):
和靜態(tài)語言相比,動(dòng)態(tài)語言更靈活案疲,就是這個(gè)原因封恰。
請(qǐng)不要把賦值語句的等號(hào)等同于數(shù)學(xué)的等號(hào)。比如下面的代碼:
如果從數(shù)學(xué)上理解x=x+2那無論如何是不成立的褐啡,在程序中诺舔,賦值語句先計(jì)算右側(cè)的表達(dá)式x+2,得到結(jié)果12,再賦給變量x混萝。由于x之前的值是10,重新賦值后萍恕,x的值變成12逸嘀。
最后,理解變量在計(jì)算機(jī)內(nèi)存中的表示也非常重要允粤。當(dāng)我們寫:a='ABC'時(shí)崭倘,Python解釋器干了兩件事情:
在內(nèi)存中創(chuàng)建了一個(gè)’ABC’的字符串;
在內(nèi)存中創(chuàng)建了一個(gè)名為a的變量类垫,并把它指向’ABC’這個(gè)字符串司光。
也可以把一個(gè)變量a賦值給另一個(gè)變量b,這個(gè)操作實(shí)際上是把變量b指向變量a所指向的數(shù)據(jù)悉患,例如下面的代碼:
最后一行打印出變量b的內(nèi)容到底是'ABC'呢還是'XYZ'残家?如果從數(shù)學(xué)意義上理解,就會(huì)錯(cuò)誤地得出b和a相同售躁,也應(yīng)該是'XYZ'坞淮,但實(shí)際上b的值是'ABC',讓我們一行一行地執(zhí)行代碼陪捷,就可以看到到底發(fā)生了什么事:
執(zhí)行a='ABC'回窘,解釋器創(chuàng)建了字符串'ABC'和變量a,并把a(bǔ)指向'ABC':
執(zhí)行b=a市袖,解釋器創(chuàng)建了變量 b啡直,并把b指向 a 指向的字符串'ABC':
執(zhí)行a='XYZ',解釋器創(chuàng)建了字符串'XYZ'苍碟,并把a(bǔ)的指向改為'XYZ'酒觅,但b并沒有更改:
所以,最后打印變量b的結(jié)果自然是'ABC'了微峰。
字符串
定義字符串
前面我們講解了什么是字符串阐滩。字符串可以用''(單引號(hào))或者""(雙引號(hào))括起來表示。
如果字符串本身包含’怎么辦县忌?比如我們要表示字符串I'm OK掂榔,這時(shí),可以用" "(雙引號(hào))括起來表示:
類似的症杏,如果字符串包含”装获,我們就可以用''(單引號(hào))括起來表示:
如果字符串既包含’又包含”怎么辦?
這個(gè)時(shí)候厉颤,就需要對(duì)字符串的某些特殊字符進(jìn)行“轉(zhuǎn)義”穴豫,Python字符串用\進(jìn)行轉(zhuǎn)義。
要表示字符串Bobsaid"I'm OK".
由于 ‘ 和 “ 會(huì)引起歧義,因此精肃,我們?cè)谒懊娌迦胍粋€(gè)\表示這是一個(gè)普通字符秤涩,不代表字符串的起始,因此司抱,這個(gè)字符串又可以表示為
注意:轉(zhuǎn)義字符 \ 不計(jì)入字符串的內(nèi)容中筐眷。
常用的轉(zhuǎn)義字符還有:
raw字符串與多行字符串
如果一個(gè)字符串包含很多需要轉(zhuǎn)義的字符,對(duì)每一個(gè)字符都進(jìn)行轉(zhuǎn)義會(huì)很麻煩习柠。為了避免這種情況匀谣,我們可以在字符串前面加個(gè)前綴r,表示這是一個(gè) raw 字符串资溃,里面的字符就不需要轉(zhuǎn)義了武翎。例如:
但是r'...'表示法不能表示多行字符串,也不能表示包含'和"的字符串(為什么溶锭?)
如果要表示多行字符串宝恶,可以用'''...'''表示:
上面這個(gè)字符串的表示方法和下面的是完全一樣的:
還可以在多行字符串前面添加r,把這個(gè)多行字符串也變成一個(gè)raw字符串:
Unicode字符串
字符串還有一個(gè)編碼問題趴捅。
因?yàn)橛?jì)算機(jī)只能處理數(shù)字卑惜,如果要處理文本,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理驻售。最早的計(jì)算機(jī)在設(shè)計(jì)時(shí)采用8個(gè)比特(bit)作為一個(gè)字節(jié)(byte)露久,所以,一個(gè)字節(jié)能表示的最大的整數(shù)就是255(二進(jìn)制11111111=十進(jìn)制255)欺栗,0 –255被用來表示大小寫英文字母毫痕、數(shù)字和一些符號(hào),這個(gè)編碼表被稱為ASCII編碼迟几,比如大寫字母 A 的編碼是65消请,小寫字母 z 的編碼是122。
如果要表示中文类腮,顯然一個(gè)字節(jié)是不夠的臊泰,至少需要兩個(gè)字節(jié),而且還不能和ASCII編碼沖突蚜枢,所以缸逃,中國(guó)制定了GB2312編碼,用來把中文編進(jìn)去厂抽。
類似的需频,日文和韓文等其他語言也有這個(gè)問題。為了統(tǒng)一所有文字的編碼筷凤,Unicode應(yīng)運(yùn)而生昭殉。Unicode把所有語言都統(tǒng)一到一套編碼里,這樣就不會(huì)再有亂碼問題了。
Unicode通常用兩個(gè)字節(jié)表示一個(gè)字符挪丢,原有的英文編碼從單字節(jié)變成雙字節(jié)蹂风,只需要把高字節(jié)全部填為0就可以。
因?yàn)镻ython的誕生比Unicode標(biāo)準(zhǔn)發(fā)布的時(shí)間還要早乾蓬,所以最早的Python只支持ASCII編碼惠啄,普通的字符串’ABC’在Python內(nèi)部都是ASCII編碼的。
Python在后來添加了對(duì)Unicode的支持巢块,以Unicode表示的字符串用u’…’表示,比如:
注意: 不加 u 巧号,中文就不能正常顯示族奢。
Unicode字符串除了多了一個(gè) u 之外,與普通字符串沒啥區(qū)別丹鸿,轉(zhuǎn)義字符和多行表示法仍然有效:
轉(zhuǎn)義:
多行:
raw+多行:
如果中文字符串在Python環(huán)境下遇到UnicodeDecodeError越走,這是因?yàn)?py文件保存的格式有問題】炕叮可以在第一行添加注釋
目的是告訴Python解釋器廊敌,用UTF-8編碼讀取源代碼。然后用Notepad++ 另存為… 并選擇UTF-8格式保存门怪。