菜鳥Python筆記-基礎(chǔ)篇02:Python基礎(chǔ)知識(shí)

一粤攒、 簡單認(rèn)識(shí)python

1. Python發(fā)展背景

  • Python的作者肠骆,Guido von Rossum(吉多·范·羅蘇姆加矛,中國Python程序員都叫他 龜叔),荷蘭人儡羔。1982年宣羊,龜叔從阿姆斯特丹大學(xué)獲得了數(shù)學(xué)和計(jì)算機(jī)碩士學(xué)位璧诵。然而,盡管他算得上是一位數(shù)學(xué)家仇冯,但他更加享受計(jì)算機(jī)帶來的樂趣之宿。用他的話說,雖然擁有數(shù)學(xué)和計(jì)算機(jī)雙料資質(zhì)苛坚,他總趨向于做計(jì)算機(jī)相關(guān)的工作比被,并熱衷于做任何和編程相關(guān)的事情。

  • 在那個(gè)時(shí)候泼舱,龜叔接觸并使用過諸如Pascal等缀、C、Fortran等語言娇昙。這些語言的基本設(shè)計(jì)原則是讓機(jī)器能更快運(yùn)行尺迂。在80年代,雖然IBM和蘋果已經(jīng)掀起了個(gè)人電腦浪潮冒掌,但這些個(gè)人電腦的配置很低噪裕。比如早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM宋渔,一個(gè)大的數(shù)組就能占滿內(nèi)存州疾。所有的編譯器的核心是做優(yōu)化,以便讓程序能夠運(yùn)行皇拣。為了增進(jìn)效率严蓖,語言也迫使程序員像計(jì)算機(jī)一樣思考,以便能寫出更符合機(jī)器口味的程序氧急。在那個(gè)時(shí)代颗胡,程序員恨不得用手榨取計(jì)算機(jī)每一寸的能力。有人甚至認(rèn)為C語言的指針是在浪費(fèi)內(nèi)存吩坝。至于動(dòng)態(tài)類型毒姨,內(nèi)存自動(dòng)管理,面向?qū)ο蟆?別想了钉寝,那會(huì)讓你的電腦陷入癱瘓弧呐。

  • 這種編程方式讓龜叔感到苦惱。龜叔知道如何用C語言寫出一個(gè)功能嵌纲,但整個(gè)編寫過程需要耗費(fèi)大量的時(shí)間俘枫,即使他已經(jīng)準(zhǔn)確的知道了如何實(shí)現(xiàn)。他的另一個(gè)選擇是shell逮走。Bourne Shell作為UNIX系統(tǒng)的解釋器已經(jīng)長期存在鸠蚪。UNIX的管理員們常常用shell去寫一些簡單的腳本,以進(jìn)行一些系統(tǒng)維護(hù)的工作,比如定期備份茅信、文件系統(tǒng)管理等等盾舌。shell可以像膠水一樣,將UNIX下的許多功能連接在一起蘸鲸。許多C語言下上百行的程序妖谴,在shell下只用幾行就可以完成。然而棚贾,shell的本質(zhì)是調(diào)用命令说贝。它并不是一個(gè)真正的語言祈纯。比如說,shell沒有數(shù)值型的數(shù)據(jù)類型庐橙,加法運(yùn)算都很復(fù)雜鼻疮∏右粒總之,shell不能全面的調(diào)動(dòng)計(jì)算機(jī)的功能判沟。

  • 龜叔希望有一種語言耿芹,這種語言能夠像C語言那樣,能夠全面調(diào)用計(jì)算機(jī)的功能接口挪哄,又可以像shell那樣吧秕,可以輕松的編程。

  • 1989年迹炼,為了打發(fā)圣誕節(jié)假期砸彬,龜叔開始寫Python語言的編譯器。Python這個(gè)名字斯入,來自龜叔所摯愛的電視劇Monty Python's Flying Circus砂碉。他希望這個(gè)新的叫做Python的語言,能符合他的理想:創(chuàng)造一種C和shell之間刻两,功能全面增蹭,易學(xué)易用,可拓展的語言磅摹。龜叔作為一個(gè)語言設(shè)計(jì)愛好者滋迈,已經(jīng)有過設(shè)計(jì)語言的嘗試。這一次户誓,也不過是一次純粹的hacking行為饼灿。

2. Python語言的誕生

  • 1991年,第一個(gè)Python編譯器誕生厅克。它是用C語言實(shí)現(xiàn)的赔退,并能夠調(diào)用C語言的庫文件。從一出生,Python已經(jīng)具有了 :類硕旗,函數(shù)窗骑,異常處理,包含表和詞典在內(nèi)的核心數(shù)據(jù)類型漆枚,以及模塊為基礎(chǔ)的拓展系統(tǒng)创译。

  • Python語法很多來自C,但又受到ABC語言的強(qiáng)烈影響墙基。來自ABC語言的一些規(guī)定直到今天還富有爭議软族,比如強(qiáng)制縮進(jìn)。 但這些語法規(guī)定讓Python容易讀残制。另一方面立砸,Python聰明的選擇服從一些慣例,特別是C語言的慣例初茶,比如回歸等號(hào)賦值颗祝。龜叔認(rèn)為,如果“常識(shí)”上確立的東西恼布,沒有必要過度糾結(jié)螺戳。

  • Python從一開始就特別在意可拓展性。Python可以在多個(gè)層次上拓展折汞。從高層上倔幼,你可以直接引入.py文件。在底層爽待,你可以引用C語言的庫损同。Python程序員可以快速的使用Python寫. py文件作為拓展模塊。但當(dāng)性能是考慮的重要因素時(shí)堕伪,Python程序員可以深入底層揖庄,寫C程序,編譯為.so文件引入到Python中使用欠雌。Python就好像是使用鋼構(gòu)建房一樣蹄梢,先規(guī)定好大的框架。而程序員可以在此框架下相當(dāng)自由的拓展或更改富俄。

  • 最初的Python完全由龜叔本人開發(fā)禁炒。Python得到龜叔同事的歡迎。他們迅速的反饋使用意見霍比,并參與到Python的改進(jìn)幕袱。龜叔和一些同事構(gòu)成Python的核心團(tuán)隊(duì)。他們將自己大部分的業(yè)余時(shí)間用于hack Python悠瞬。隨后们豌,Python拓 展到研究所之外涯捻。Python將許多機(jī)器層面上的細(xì)節(jié)隱藏,交給編譯器處理望迎,并凸顯出邏輯層面的編程思考障癌。Python程 序員可以花更多的時(shí)間用于思考程序的邏輯,而不是具體的實(shí)現(xiàn)細(xì)節(jié)辩尊。這一特征吸引了廣大的程序員涛浙。Python開始流行。

人生苦短摄欲,我用python

3. 關(guān)鍵點(diǎn)常識(shí)

  • Python的發(fā)音與拼寫
  • Python的作者是Guido van Rossum(龜叔)
  • Python正式誕生于1991年
  • Python的解釋器如今有多個(gè)語言實(shí)現(xiàn)轿亮,我們常用的是CPython(官方版本的C語言實(shí)現(xiàn)),其他還有Jython(可以運(yùn)行在Java平臺(tái))胸墙、IronPython(可以運(yùn)行在.NET和Mono平臺(tái))我注、PyPy(Python實(shí)現(xiàn)的,支持JIT即時(shí)編譯)
  • Python目前有兩個(gè)版本劳秋,Python2和Python3仓手,最新版分別為2.7.15和3.7.0
  • Life is shot, you need Python. 人生苦短胖齐,我用Python玻淑。

4. Python優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 簡單:Python是一種代表簡單主義思想的語言。閱讀一個(gè)良好的Python程序就感覺像是在讀英語一樣呀伙,盡管這個(gè)英語的要求非常嚴(yán)格补履!Python的這種偽代碼本質(zhì)是它最大的優(yōu)點(diǎn)之一。它使你能夠?qū)W⒂诮鉀Q問題而不是去搞明白語言本身剿另。

  • 易學(xué):Python極其容易上手箫锤。

  • 免費(fèi)、開源:Python是FLOSS(自由/開放源碼軟件)之一雨女。簡單地說谚攒,你可以自由地發(fā)布這個(gè)軟件的拷貝、閱讀它的源代碼氛堕、對它做改動(dòng)馏臭、把它的一部分用于新的自由軟件中。FLOSS是基于一個(gè)團(tuán)體分享知識(shí)的概念讼稚。

  • 高層語言:當(dāng)你用Python語言編寫程序的時(shí)候括儒,你無需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)。

  • 可移植性:由于它的開源本質(zhì)锐想,Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過改動(dòng)使它能夠工作在不同平臺(tái)上)帮寻。如果你小心地避免使用依賴于系統(tǒng)的特性,那么你的所有Python程序無需修改就可以在下述任何平臺(tái)上面運(yùn)行赠摇。這些平臺(tái)包括Linux固逗、Windows浅蚪、FreeBSD、Macintosh烫罩、Solaris掘鄙、OS/2、Amiga嗡髓、AROS操漠、AS/400、BeOS饿这、OS/390浊伙、z/OS、Palm OS长捧、QNX嚣鄙、VMS、Psion串结、Acom RISC OS哑子、VxWorks、PlayStation肌割、Sharp Zaurus卧蜓、Windows CE甚至還有PocketPC、Symbian以及Google基于linux開發(fā)的Android平臺(tái)把敞!

  • 解釋型語言:Python語言寫的程序不需要編譯成二進(jìn)制代碼弥奸。你可以直接從源代碼運(yùn)行程序。在計(jì)算機(jī)內(nèi)部奋早,Python解釋器把源代碼轉(zhuǎn)換成稱為字節(jié)碼的中間形式盛霎,然后再把它翻譯成計(jì)算機(jī)使用的機(jī)器語言并運(yùn)行。事實(shí)上耽装,由于你不再需要擔(dān)心如何編譯程序愤炸,如何確保連接轉(zhuǎn)載正確的庫等等,所有這一切使得使用Python更加簡單掉奄。

  • 面向?qū)ο螅篜ython既支持面向過程的編程也支持面向?qū)ο蟮木幊坦娓觥T凇懊嫦蜻^程”的語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構(gòu)建起來的挥萌。在“面向?qū)ο蟆钡恼Z言中绰姻,程序是由數(shù)據(jù)和功能組合而成的對象構(gòu)建起來的。

  • 可擴(kuò)展性:如果你需要你的一段關(guān)鍵代碼運(yùn)行得更快或者希望某些算法不公開引瀑,你可以把你的部分程序用C或C++編寫狂芋,然后在你的Python程序中使用它們。

  • 豐富的庫:Python標(biāo)準(zhǔn)庫確實(shí)很龐大憨栽。它可以幫助你處理各種工作帜矾,包括正則表達(dá)式翼虫、文檔生成、單元測試屡萤、線程珍剑、數(shù)據(jù)庫、網(wǎng)頁瀏覽器死陆、CGI招拙、FTP、電子郵件措译、XML别凤、XML-RPC、HTML领虹、WAV文件规哪、密碼系統(tǒng)、GUI(圖形用戶界面)塌衰、Tk和其他與系統(tǒng)有關(guān)的操作诉稍。

  • 規(guī)范的代碼:Python采用強(qiáng)制縮進(jìn)的方式使得代碼具有極佳的可讀性。

缺點(diǎn)

  • Python語言非常完善最疆,沒有明顯的短板和缺點(diǎn)杯巨,唯一的缺點(diǎn)就是執(zhí)行效率慢,這個(gè)是解釋型語言所通有的肚菠,同時(shí)這個(gè)缺點(diǎn)也將被計(jì)算機(jī)越來越強(qiáng)大的性能所彌補(bǔ)舔箭。

5. Python應(yīng)用場景

  • Web應(yīng)用開發(fā)
    Python經(jīng)常被用于Web開發(fā)。比如蚊逢,通過mod_wsgi模塊,Apache可以運(yùn)行用Python編寫的Web程序箫章。Python定義了WSGI標(biāo)準(zhǔn)應(yīng)用接口來協(xié)調(diào)Http服務(wù)器與基于Python的Web程序之間的通信烙荷。一些Web框架,如Django,TurboGears,web2py,Zope等檬寂,可以讓程序員輕松地開發(fā)和管理復(fù)雜的Web程序终抽。

  • 操作系統(tǒng)管理、服務(wù)器運(yùn)維的自動(dòng)化腳本
    在很多操作系統(tǒng)里桶至,Python是標(biāo)準(zhǔn)的系統(tǒng)組件昼伴。 大多數(shù)Linux發(fā)行版以及NetBSD、OpenBSD和Mac OS X都集成了Python镣屹,可以在終端下直接運(yùn)行Python圃郊。有一些Linux發(fā)行版的安裝器使用Python語言編寫,比如Ubuntu的Ubiquity安裝器,Red Hat Linux和Fedora的Anaconda安裝器女蜈。Gentoo Linux使用Python來編寫它的Portage包管理系統(tǒng)持舆。Python標(biāo)準(zhǔn)庫包含了多個(gè)調(diào)用操作系統(tǒng)功能的庫色瘩。通過pywin32這個(gè)第三方軟件 包,Python能夠訪問Windows的COM服務(wù)及其它Windows API逸寓。使用IronPython居兆,Python程序能夠直接調(diào)用.Net Framework。一般說來竹伸,Python編寫的系統(tǒng)管理腳本在可讀性泥栖、性能、代碼重用度勋篓、擴(kuò)展性幾方面都優(yōu)于普通的shell腳本聊倔。

  • 網(wǎng)絡(luò)爬蟲
    Python有大量的HTTP請求處理庫和HTML解析庫,并且有成熟高效的爬蟲框架Scrapy和分布式解決方案scrapy-redis生巡,在爬蟲的應(yīng)用方面非常廣泛耙蔑。

  • 科學(xué)計(jì)算
    NumPy、SciPy孤荣、Pandas甸陌、Matplotlib可以讓Python程序員編寫科學(xué)計(jì)算程序。

  • 桌面軟件
    PyQt盐股、PySide钱豁、wxPython、PyGTK是Python快速開發(fā)桌面應(yīng)用程序的利器疯汁。

  • 服務(wù)器軟件(網(wǎng)絡(luò)軟件)
    Python對于各種網(wǎng)絡(luò)協(xié)議的支持很完善牲尺,因此經(jīng)常被用于編寫服務(wù)器軟件、網(wǎng)絡(luò)爬蟲幌蚊。第三方庫Twisted支持異步網(wǎng)絡(luò)編程和多數(shù)標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議(包含客戶端和服務(wù)器)谤碳,并且提供了多種工具,被廣泛用于編寫高性能的服務(wù)器軟件溢豆。

  • 游戲
    很多游戲使用C++編寫圖形顯示等高性能模塊蜒简,而使用Python或者Lua編寫游戲的邏輯、服務(wù)器漩仙。相較于Python搓茬,Lua的功能更簡單、體積更卸铀卷仑;而Python則支持更多的特性和數(shù)據(jù)類型。

  • 構(gòu)思實(shí)現(xiàn)麸折,產(chǎn)品早期原型和迭代
    Google锡凝、NASA、Facebook都在內(nèi)部大量地使用Python磕谅。

二私爷、第一個(gè)Python程序

  1. 打開 Pycharm雾棺,選擇 Create New Project,創(chuàng)建一個(gè)新項(xiàng)目衬浑。

    打開Python

  2. 選擇 Pure Python 表示創(chuàng)建一個(gè)純Python程序項(xiàng)目, Location 表示該項(xiàng)目保存的路徑捌浩,Interpreter 表示使用的Python解釋器版本,最后點(diǎn)擊 Create 創(chuàng)建項(xiàng)目工秩。

    創(chuàng)建程序

  3. 右擊項(xiàng)目尸饺,選擇New,再選擇Python File助币。

    創(chuàng)建程序

  4. 在彈出的對話框中輸入的文件名HelloPython浪听,點(diǎn)擊OK,表示創(chuàng)建一個(gè)Python程序的文本文件眉菱,文本文件后綴名默認(rèn).py迹栓。

    輸入字符串

  5. 輸入以下代碼,并右擊空白處俭缓,選擇Run運(yùn)行克伊,表示打印一個(gè)字符串"Hello World!"

print("Hello World!")
運(yùn)行py文件
  1. 運(yùn)行成功后华坦,Pycharm Console窗口將顯示我們的輸出結(jié)果愿吹。
    顯示結(jié)果

三、注釋

1. 注釋的引入

  • 看以下程序示例(未使用注釋)

    未使用注釋

  • 看以下程序示例(使用注釋)

    使用注釋

  • 總結(jié)
    注釋的作用:通過用自己熟悉的語言惜姐,在程序中對某些代碼進(jìn)行標(biāo)注說明犁跪,這就是注釋的作用,能夠大大增強(qiáng)程序的可讀性歹袁。

2. 注釋的分類

單行注釋

以#開頭坷衍,#右邊的所有東西當(dāng)做說明,而不是真正要執(zhí)行的程序宇攻,起輔助說明作用

# 我是注釋惫叛,可以在里寫一些功能說明
print('hello world')

多行注釋

'''
我是多行注釋,可以寫很多很多行的功能說明
下面的代碼完成 逞刷,打印一首詩
名字叫做:XXXXXX
'''

python程序中,中文支持

python3中妻熊,是默認(rèn)支持中文的夸浅,但是在python2中就需要一定的額外操作才可以。

python2中扔役,如果直接在程序中用到了中文帆喇,比如:

print('你好')

如果直接運(yùn)行輸出,程序會(huì)出錯(cuò):


error

解決的辦法為:在程序的開頭寫入如下代碼亿胸,這就是中文注釋:

#coding=utf-8

修改之后的程序:

#coding=utf-8
print('你好')

運(yùn)行結(jié)果:

你好

注意:
在python的語法規(guī)范中推薦使用的方式:

# -*- coding:utf-8 -*-

四坯钦、變量以及類型

1. 變量的定義

在程序中预皇,需要把2個(gè)數(shù)據(jù),或者多個(gè)數(shù)據(jù)進(jìn)行求和的話婉刀,那么就需要把這些數(shù)據(jù)先存儲(chǔ)起來吟温,然后把它們累加起來即可。

在Python中突颊,存儲(chǔ)一個(gè)數(shù)據(jù)鲁豪,需要一個(gè)叫做變量的東西,如下示例:

num1 = 100 #num1就是一個(gè)變量律秃,就好一個(gè)小菜籃子

num2 = 87  #num2也是一個(gè)變量

result = num1 + num2 #把num1和num2這兩個(gè)"菜籃子"中的數(shù)據(jù)進(jìn)行累加爬橡,然后放到 result變量中
  • 說明:
    • 所謂變量,可以理解為菜籃子棒动,如果需要存儲(chǔ)多個(gè)數(shù)據(jù)糙申,最簡單的方式是有多個(gè)變量,當(dāng)然了也可以使用一個(gè)船惨。
    • 程序就是用來處理數(shù)據(jù)的柜裸,而變量就是用來存儲(chǔ)數(shù)據(jù)的。

2. 變量的類型

為了更充分的利用內(nèi)存空間以及更有效率的管理內(nèi)存掷漱,變量是有不同的類型的粘室,如下所示:

  • Numbers (數(shù)字)
    • int (有符號(hào)整型)
    • long (長整型)
    • float (浮點(diǎn)型)
    • complex (復(fù)數(shù))
  • 布爾類型
    • True
    • False
  • String (字符串)
  • List (列表)
  • Tuple (元組)
  • Dictinary (字典)

怎樣知道一個(gè)變量的類型呢?

  • 在python中卜范,只要定義了一個(gè)變量衔统,而且它有數(shù)據(jù),那么它的類型就已經(jīng)確定了海雪,不需要咱們開發(fā)者主動(dòng)的去說明它的類型锦爵,系統(tǒng)會(huì)自動(dòng)辨別。
  • 可以使用type(變量的名字)奥裸,來查看變量的類型险掀。

五、標(biāo)識(shí)符和關(guān)鍵字

1. 標(biāo)識(shí)符

什么是標(biāo)識(shí)符湾宙?

開發(fā)人員在程序中自定義的一些符號(hào)和名稱
標(biāo)識(shí)符是自己定義的,如變量名樟氢、函數(shù)名等

2. 標(biāo)識(shí)符的規(guī)則

  • 標(biāo)識(shí)符由字母、下劃線和數(shù)字組成侠鳄,且數(shù)字不能開頭
  • python中的標(biāo)識(shí)符是區(qū)分大小寫的


    區(qū)分大小寫

3. 命名規(guī)則

見名知意

起一個(gè)有意義的名字埠啃,盡量做到看一眼就知道是什么意思(提高代碼可讀性) 比如: 名字 就定義為 name , 定義學(xué)生 用 student。

駝峰命名法

  • 小駝峰式命名法(lower camel case): 第一個(gè)單詞以小寫字母開始伟恶;第二個(gè)單詞的首字母大寫碴开,例如:myName、aDog
  • 大駝峰式命名法(upper camel case): 每一個(gè)單字的首字母都采用大寫字母,例如:FirstName潦牛、LastName
  • 還有一種命名法是用下劃線“_”來連接所有的單詞眶掌,比如send_buf

4. 關(guān)鍵字

什么是關(guān)鍵字

python一些具有特殊功能的標(biāo)識(shí)符,這就是所謂的關(guān)鍵字巴碗。
關(guān)鍵字朴爬,是python已經(jīng)使用的了,所以不允許開發(fā)者自己定義和關(guān)鍵字相同的名字的標(biāo)識(shí)符良价。

查看關(guān)鍵字:

可以在Python Shell通過以下命令進(jìn)行查看當(dāng)前系統(tǒng)中python的關(guān)鍵字:

>>> import keyword
>>> keyword.kwlist

關(guān)鍵字不需要記寝殴,隨著以后的使用自然會(huì)記住。

六明垢、輸出

1. 普通的輸出

python中變量的輸出

# 打印提示
print('hello world')
print('薩瓦迪卡---泰語蚣常,你好的意思')

2. 格式化輸出

格式化操作的目的

比如有以下代碼:

pirnt("我今年10歲")
pirnt("我今年11歲")
pirnt("我今年12歲")
    ...

在輸出年齡的時(shí)候,用了多次"我今年xx歲"痊银,能否簡化一下程序呢抵蚊??溯革?

字符串格式化

什么是格式化

看如下代碼:

age = 10
print("我今年%d歲" % age)

age += 1
print("我今年%d歲" % age)

age += 1
print("我今年%d歲" % age)

...

在程序中贞绳,看到了%這樣的操作符,這就是Python中格式化輸出致稀。

age = 18
name = "xiaohua"
print("我的姓名是%s, 年齡是%d" % (name, age))

常用的格式符號(hào)

格式符號(hào) 轉(zhuǎn)換
%c 字符
%s 字符串
%d 有符號(hào)十進(jìn)制整數(shù)
%u 無符號(hào)十進(jìn)制整數(shù)
%o 八進(jìn)制整數(shù)
%x 十六進(jìn)制整數(shù)(小寫字母0x)
%X 十六進(jìn)制整數(shù)(大寫字母0X)
%f 浮點(diǎn)數(shù)
%e 科學(xué)計(jì)數(shù)法(小寫'e')
%E 科學(xué)計(jì)數(shù)法(大寫“E”)
%g %f和%e 的簡寫
%G %f和%E的簡寫

3. 換行輸出

在輸出的時(shí)候冈闭,如果有 \n 那么,此時(shí) \n 后的內(nèi)容會(huì)在另外一行顯示

print("1234567890-------1") # 會(huì)在一行顯示
print("1234567890\n-------1") # 一行顯示1234567890抖单,另外一行顯示-------1

七萎攒、輸入

怎樣才能讓程序知道咱們剛剛輸入的是什么呢?矛绘?

1. python2版本中

raw_input()

在Python中耍休,獲取鍵盤輸入的數(shù)據(jù)的方法是采用 raw_input 函數(shù)(至于什么是函數(shù),以后的章節(jié)中講解)货矮,那么這個(gè) raw_input 怎么用呢?

看如下示例:

password = raw_input("請輸入密碼:")
print('您剛剛輸入的密碼是:%d' % password)

運(yùn)行結(jié)果:


結(jié)果

注意:

  • raw_input()的小括號(hào)中放入的是羊精,提示信息,用來在獲取數(shù)據(jù)之前給用戶的一個(gè)簡單提示囚玫。
  • raw_input()在從鍵盤獲取了數(shù)據(jù)以后喧锦,會(huì)存放到等號(hào)右邊的變量中。
  • raw_input()會(huì)把用戶輸入的任何值都作為字符串來對待抓督。

input()

input()函數(shù)與raw_input()類似裸违,但其接受的輸入必須是表達(dá)式。

>>> a = input() 
123
>>> a
123
>>> type(a)
<type 'int'>

>>> b = input()
"abc"
>>> b
'abc'
>>> type(b)
<type 'str'>

input()接受表達(dá)式輸入本昏,并把表達(dá)式的結(jié)果賦值給等號(hào)左邊的變量

2. python3版本中

沒有raw_input()函數(shù),只有input()

并且 python3中的input與python2中的raw_input()功能一樣枪汪。

八涌穆、運(yùn)算符

python支持以下幾種運(yùn)算符

1. 算術(shù)運(yùn)算符

下面以a=10 ,b=20為例進(jìn)行計(jì)算:

運(yùn)算符 描述 實(shí)例
+ 兩個(gè)對象相加 a + b 輸出結(jié)果 30
- 得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù) a - b 輸出結(jié)果 -10
* 兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次的字符串 a * b 輸出結(jié)果 200
/ b / a 輸出結(jié)果 2
// 取整除 返回商的整數(shù)部分 9//2 輸出結(jié)果 4 , 9.0//2.0 輸出結(jié)果 4.0
% 取余 返回除法的余數(shù) b % a 輸出結(jié)果 0
** 指數(shù) a**b 為10的20次方怔昨, 輸出結(jié)果 100000000000000000000

注意:混合運(yùn)算時(shí),優(yōu)先級順序?yàn)椋?** 高于 * / % // 高于 + - 宿稀,為了避免歧義趁舀,建議使用 () 來處理運(yùn)算符優(yōu)先級。

并且祝沸,不同類型的數(shù)字在進(jìn)行混合運(yùn)算時(shí)矮烹,整數(shù)將會(huì)轉(zhuǎn)換成浮點(diǎn)數(shù)進(jìn)行運(yùn)算。

>>> 10 + 5.5 * 2
21.0
>>> 10 + (5.5 * 2)
21.0

2. 賦值運(yùn)算符

運(yùn)算符 描述 實(shí)例
= 賦值運(yùn)算符 把 = 號(hào)右邊的結(jié)果 賦給 左邊的變量罩锐,如 num = 1 + 2 * 3奉狈,結(jié)果num的值為7
# 單個(gè)變量賦值
>>> num = 10
>>> num
10

# 多個(gè)變量賦值
>>> num1, num2, f1, str1 = 100, 200, 3.14, "hello"
>>> num1
100
>>> num2
200
>>> f1
3.14
>>> str1
"hello"

復(fù)合賦值運(yùn)算符

運(yùn)算符 描述 實(shí)例
+= 加法賦值運(yùn)算符 c += a 等效于 c = c + a
-= 減法賦值運(yùn)算符 c -= a 等效于 c = c - a
*= 乘法賦值運(yùn)算符 c *= a 等效于 c = c * a
/= 除法賦值運(yùn)算符 c /= a 等效于 c = c / a
%= 取模賦值運(yùn)算符 c %= a 等效于 c = c % a
**= 冪賦值運(yùn)算符 c **= a 等效于 c = c ** a
//= 取整除賦值運(yùn)算符 c //= a 等效于 c = c // a

九、數(shù)據(jù)類型轉(zhuǎn)換

常用的數(shù)據(jù)類型轉(zhuǎn)換

函數(shù) 說明
int(x [,base ]) 將x轉(zhuǎn)換為一個(gè)整數(shù)
float(x ) 將x轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)
complex(real [,imag ]) 創(chuàng)建一個(gè)復(fù)數(shù)涩惑,real為實(shí)部仁期,imag為虛部
str(x ) 將對象 x 轉(zhuǎn)換為字符串
repr(x ) 將對象 x 轉(zhuǎn)換為表達(dá)式字符串
eval(str ) 用來計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對象
tuple(s ) 將序列 s 轉(zhuǎn)換為一個(gè)元組
list(s ) 將序列 s 轉(zhuǎn)換為一個(gè)列表
chr(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)Unicode字符
ord(x ) 將一個(gè)字符轉(zhuǎn)換為它的ASCII整數(shù)值
hex(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串
oct(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)八進(jìn)制字符串
bin(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)二進(jìn)制字符串

舉例

>>> # int(): 將數(shù)據(jù)轉(zhuǎn)換為 int 類型
... 
>>> str1 = "10"
>>> # int() 默認(rèn)按10進(jìn)制轉(zhuǎn)換后顯示
... num1 = int(str1)
>>> 
>>> # int() 處理浮點(diǎn)數(shù),只留下整數(shù)部分竭恬,舍棄小數(shù)部分(并不是四舍五入操作)
... num2 = int(3.74)
>>> print(num2)
3
>>> 
>>> """
... num1 = int(str1, 8) # 第二個(gè)參數(shù)為8跛蛋,表示按8進(jìn)制轉(zhuǎn)換后顯示,結(jié)果為 8
... num1 = int(str1, 16) # # 第二個(gè)參數(shù)為16痊硕,表示按16進(jìn)制轉(zhuǎn)換后顯示赊级,結(jié)果為 16
... #01 02 03 04 05 06 07 10
... #01 02 ... 0B 0C 0D 0E 0F 10
... print(num1)
... """
>>> 
>>> # float() 將數(shù)據(jù)轉(zhuǎn)化為浮點(diǎn)數(shù)
... str2 = "3.14"
>>> f1 = float(str2)
>>> print(type(f1))
<class 'float'>
>>> 
>>> f2 = float(10)
>>> print(f2)
10.0
>>> 
>>> # complex() 創(chuàng)建復(fù)數(shù): 第一個(gè)參數(shù)是復(fù)數(shù)的實(shí)部,第二個(gè)參數(shù)是復(fù)數(shù)的虛部
... c1 = 10 + 4j
>>> c2 = complex(10, 4)
>>> 
>>> print(c1)
(10+4j)
>>> print(c2) # 等同與c1
(10+4j)
>>> 
>>> # str() : 轉(zhuǎn)換為 字符串類型
... num1 = 10
>>> f1 = 3.14
>>> 
>>> print(type(str(num1)))
<class 'str'>
>>> print(type(str(f1)))
<class 'str'>
>>> 
>>> # repr(): 轉(zhuǎn)換為表達(dá)式字符串
... num1 = 10
>>> print(type(repr(num1)))
<class 'str'>
>>> 
>>> 
>>> # eval(): 將字符串形式的數(shù)據(jù)岔绸,轉(zhuǎn)換為原本的類型
... str1 = "3.14"
>>> print(type(eval(str1)))
<class 'float'>
>>> 
>>> str2 = "[10, 20, 30]"
>>> l = eval(str2)
>>> print(type(l))
<class 'list'>
>>> 
>>> 
>>> # chr: 將一個(gè)整數(shù)轉(zhuǎn)換為對應(yīng)的 Unicode 字符
... s = chr(1065)
>>> print(s)
Щ
>>> 
>>> # ord :將一個(gè)字符轉(zhuǎn)換為對應(yīng)的字符編碼數(shù)字
... n = ord("A")
>>> print(n)
65
>>> 
>>> # bin: 將一個(gè)整數(shù)轉(zhuǎn)換為二進(jìn)制
... print(bin(1024)) # 0b 開頭表示二進(jìn)制數(shù)
0b10000000000
>>> 
>>> # oct:將一個(gè)整數(shù)轉(zhuǎn)換為八進(jìn)制
... print(oct(1024)) # 0o 開頭表示八進(jìn)制數(shù)
0o2000
>>> 
>>> # hex: 將一個(gè)整數(shù)轉(zhuǎn)換為十六進(jìn)制
... print(hex(1024)) # 0x 開頭表示十六進(jìn)制
0x400
>>>

附錄:常用字符與ASCII碼對照表

ASCII碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末理逊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亭螟,更是在濱河造成了極大的恐慌挡鞍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件预烙,死亡現(xiàn)場離奇詭異墨微,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扁掸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門翘县,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谴分,你說我怎么就攤上這事锈麸。” “怎么了牺蹄?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵忘伞,是天一觀的道長。 經(jīng)常有香客問我,道長氓奈,這世上最難降的妖魔是什么翘魄? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮舀奶,結(jié)果婚禮上暑竟,老公的妹妹穿的比我還像新娘。我一直安慰自己育勺,他們只是感情好但荤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涧至,像睡著了一般腹躁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上化借,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天潜慎,我揣著相機(jī)與錄音,去河邊找鬼蓖康。 笑死铐炫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蒜焊。 我是一名探鬼主播倒信,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泳梆!你這毒婦竟也來了鳖悠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤优妙,失蹤者是張志新(化名)和其女友劉穎乘综,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體套硼,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卡辰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邪意。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片九妈。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雾鬼,靈堂內(nèi)的尸體忽然破棺而出萌朱,到底是詐尸還是另有隱情,我是刑警寧澤策菜,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布晶疼,位于F島的核電站酒贬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏冒晰。R本人自食惡果不足惜同衣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壶运。 院中可真熱鬧,春花似錦浪秘、人聲如沸蒋情。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棵癣。三九已至,卻和暖如春夺衍,著一層夾襖步出監(jiān)牢的瞬間狈谊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工沟沙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留河劝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓矛紫,卻偏偏與公主長得像赎瞎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子颊咬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,380評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理务甥,服務(wù)發(fā)現(xiàn),斷路器喳篇,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,418評論 2 30
  • 當(dāng)你感覺到人生失意的時(shí)候麸澜,去醫(yī)院走一遭挺尿,不失為一個(gè)絕好的選擇。 ——范姐 范姐今天來微信痰憎,只發(fā)了一個(gè)字票髓,累。我也只...
    三三得三閱讀 189評論 0 2
  • 2016年铣耘,回過頭來看洽沟,仿佛啥事也沒發(fā)生,跟其他成員轟烈的歷程比起來讓人覺得汗顏蜗细,我的生活與工作簡簡單單裆操,但總體來...
    吃肉小菜丁閱讀 256評論 0 0