一粤攒、 簡單認(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
程序
-
打開
Pycharm
雾棺,選擇Create New Project
,創(chuàng)建一個(gè)新項(xiàng)目衬浑。
-
選擇
Pure Python
表示創(chuàng)建一個(gè)純Python程序項(xiàng)目,Location
表示該項(xiàng)目保存的路徑捌浩,Interpreter
表示使用的Python解釋器版本,最后點(diǎn)擊Create
創(chuàng)建項(xiàng)目工秩。
-
右擊項(xiàng)目尸饺,選擇
New
,再選擇Python File
助币。
-
在彈出的對話框中輸入的文件名
HelloPython
浪听,點(diǎn)擊OK
,表示創(chuàng)建一個(gè)Python程序的文本文件眉菱,文本文件后綴名默認(rèn).py
迹栓。
輸入以下代碼,并右擊空白處俭缓,選擇
Run
運(yùn)行克伊,表示打印一個(gè)字符串"Hello World!"
。
print("Hello World!")
- 運(yùn)行成功后华坦,
Pycharm Console
窗口將顯示我們的輸出結(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ò):
解決的辦法為:在程序的開頭寫入如下代碼亿胸,這就是中文注釋:
#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ū)分大小寫的
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é)果:
注意:
- 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
>>>