Day1 - Python基礎1
本節內容
- Python介紹
- 發展史
- Python 2 or 3?
- 安裝
- Hello World程序
- 變量
- 用戶輸入
- 模塊初識
- .pyc是個什麽鬼?
- 數據類型初識
- 數據運算
- 表達式if ...else語句
- 表達式for 循環
- break and continue
- 表達式while 循環
- 作業需求
- 入門知識拾遺:三元運算、進制
一、 Python介紹
目前Python主要應用領域: 雲計算: 雲計算最火的語言, 典型應用OpenStack WEB開發: 眾多優秀的WEB框架,眾多大型網站均為Python開發, Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas 系統運維: 運維人員必備語言 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,cpython應用領域與在一些公司的應用++,java,尤其擅長策略回測 圖形GUI: PyQT, WxPython,TkInter Python在一些公司的應用: 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發 CIA: 美國中情局網站就是用Python開發的 NASA: 美國航天局(NASA)大量使用Python進行數據分析和運算 YouTube:世界上最大的視頻網站YouTube就是用Python開發的 Dropbox:美國最大的在線雲存儲網站,全部用Python實現,每天網站處理10億個文件的上傳和下載 Instagram:美國最大的圖片分享社交網站,每天超過3千萬張照片被分享,全部用python開發 Facebook:大量的基礎庫均通過Python實現的 Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的 豆瓣: 公司幾乎所有的業務均是通過Python開發的 知乎: 國內最大的問答社區,通過Python開發(國外Quora) 春雨醫生:國內知名的在線醫療網站是用Python開發的 除上面之外,還有搜狐、金山、騰訊、盛大、網易、百度、阿裏、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務。
Python 是一門什麽樣的語言?(python是一門動態解釋性的強類型定義語言。)
編程語言主要從以下幾個角度為進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每個分類代表什麽意思呢,我們一起來看一下。
編譯和解釋的區別是什麽?
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)
編譯型vs解釋型
編譯型
優點:編譯器一般會有預編譯的過程對代碼進行優化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高。可以脫離語言環境獨立運行。
缺點:編譯之後如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編譯不同的可執行文件。
解釋型
優點:有良好的平臺兼容性,在任何環境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
Python的優缺點
先看優點
- Python的定位是“優雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常復雜的程序。
- 開發效率非常高,Python有非常強大的第三方庫,基本上你想通過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大降低開發周期,避免重復造輪子。
- 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
- 可移植性————由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工 作在不同平臺上)。如果你小心地避免使用依賴於系統的特性,那麽你的所有Python程序無需修改就幾乎可以在市場上所有的系統平臺上運行
- 可擴展性————如果你需要你的一段關鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然後在你的Python程序中使用它們。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
再看缺點:
- 速度慢,Python 的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑於使用Python的主要原因,但其實這裏所指的運行速度慢在大多數情況下用戶是無法直接感知到的,必須借助測試工具才能體現出來,比如你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非常誇張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數情況下Python已經完全可以滿足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種情況下,當然還是建議你用C去實現的。
- 代碼不能加密,因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的項目要求源代碼必須是加密的,那你一開始就不應該用Python來去實現。
- 線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任何時刻僅有一個線程在執行,Python的線程是操作系統的原生線程。在Linux上為pthread,在Windows上為Win thread,完全由操作系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即使在多核CPU平臺上,由於GIL的存在,所以禁止多線程的並行執行。關於這個問題的折衷解決方法,我們在以後線程和進程章節裏再進行詳細探討。
Python解釋器
當我們編寫Python代碼時,我們得到的是一個包含Python代碼的以.py為擴展名的文本文件。要運行代碼,就需要Python解釋器去執行.py文件。 由於整個Python語言從規範到解釋器都是開源的,所以理論上,只要水平夠高,任何人都可以編寫Python解釋器來執行Python代碼(當然難度很大)。事實上,確實存在多種Python解釋器。 CPython 當我們從Python官方網站下載並安裝好Python 2.7後,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。在命令行下運行python就是啟動CPython解釋器。 CPython是使用最廣的Python解釋器。教程的所有代碼也都在CPython下執行。 IPython IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但內核其實都是調用了IE。 CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。 PyPy PyPy是另一個Python解釋器,它的目標是執行速度。PyPy采用JIT技術,對Python代碼進行動態編譯(註意不是解釋),所以可以顯著提高Python代碼的執行速度。 絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執行可能會有不同的結果。如果你的代碼要放到PyPy下執行,就需要了解PyPy和CPython的不同點。 Jython Jython是運行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java字節碼執行。 IronPython IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的字節碼。 小結 Python的解釋器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是通過網絡調用來交互,確保各程序之間的獨立性。python解釋器介紹
二、Python發展史
1989年,為了打發聖誕節假期,Guido開始寫Python語言的編譯器。 1991年,第一個Python編譯器誕生。它是用C語言實現的,並能夠調用C語言的庫文件。從一出生,Python已經具有了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊為基礎的拓展系統。 Granddaddy of Python web frameworks, Zope 1 was released in 1999 Python 1.0 - January 1994 增加了 lambda, map, filter and reduce. Python 2.0 - October 16, 2000,加入了內存回收機制,構成了現在Python語言框架的基礎 Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生 Python 2.5 - September 19, 2006 Python 2.6 - October 1, 2008 Python 2.7 - July 3, 2010 In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible Python 3.0 - December 3, 2008 Python 3.1 - June 27, 2009 Python 3.2 - February 20, 2011 Python 3.3 - September 29, 2012 Python 3.4 - March 16, 2014 Python 3.5 - September 13, 2015python發展史介紹
三、Python 2 or 3?
py2與3的詳細區別
pass
四、Python安裝
windows 1、下載安裝包 https://www.python.org/downloads/ 2、安裝 默認安裝路徑:C:\python35 3、配置環境變量 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】 如:原來的值;C:\python35,切記前面有分號 linux、Mac 無需安裝,原裝Python環境安裝介紹
六、變量
聲明變量
1 #_*_coding:utf-8_*_ 2 3 name = "zjt"
上述代碼聲明了一個變量,變量名為: name,變量name的值為:"zjt"
變量定義的規則:
- 變量名只能是 字母、數字或下劃線的任意組合
- 變量名的第一個字符不能是數字
- 以下關鍵字不能聲明為變量名
[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘] - (變量名不要用中文名,程序不報錯,但是太low)
1 name = "zjt" 2 3 name2 = name 4 print(name,name2) 5 6 name = "Jack" 7 8 print("What is the value of name2 now?")
七、字符編碼 (ASCII>GB2312>GBK>GB18030>Unicode>UTF-8)
python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個字節),即:2**8 = 256-1,所以,ASCII碼最多只能表示 255 個符號。
關於中文
ASCII是不支持中文的,為了處理漢字,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。
GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區的內碼範圍高字節從B0-F7,低字節從A1-FE,占用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。
GB2312 支持的漢字太少。1995年的漢字擴展規範GBK1.0收錄了21886個符號,它分為漢字區和圖形符號區。漢字區包括21003個字符。2000年的 GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。現在的PC平臺必須支持GB18030,對嵌入式產品暫不作要求。所以手機、MP3一般只支持GB2312。
從ASCII、GB2312、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中總是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文可以統一地處理。區分中文編碼的方法是高字節的最高位不為0。按照程序員的稱呼,GB2312、GBK到GB18030都屬於雙字節字符集 (DBCS)。
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字符和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一並且唯一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
註:此處說的的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
所以,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),如果是如下代碼的話:
報錯:ascii碼無法表示中文
1 #!/usr/bin/env python 2 3 print ("你好,世界")
改正:應該顯示的告訴python解釋器,用什麽編碼來執行源代碼,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- print ("你好,世界")
註釋
當行註視:# 被註釋內容
多行註釋:""" 被註釋內容 """
八、用戶輸入
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 #name = raw_input("What is your name?") #only on python 2.x 5 name = input("What is your name?") 6 print("Hello " + name )
輸入密碼時,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import getpass 5 6 # 將用戶輸入的內容賦值給 name 變量,在命令行中運行才可以看到效果 7 pwd = getpass.getpass("請輸入密碼:") 8 9 # 打印輸入的內容 10 print(pwd)
九、模塊初識
pass
十、.pyc是個什麽鬼?
1. Python是一門解釋型語言? 我初學Python時,聽到的關於Python的第一句話就是,Python是一門解釋性語言,我就這樣一直相信下去,直到發現了*.pyc文件的存在。如果是解釋型語言,那麽生成的*.pyc文件是什麽呢?c應該是compiled的縮寫才對啊! 為了防止其他學習Python的人也被這句話誤解,那麽我們就在文中來澄清下這個問題,並且把一些基礎概念給理清。 2. 解釋型語言和編譯型語言 計算機是不能夠識別高級語言的,所以當我們運行一個高級語言程序的時候,就需要一個“翻譯機”來從事把高級語言轉變成計算機能讀懂的機器語言的過程。這個過程分成兩類,第一種是編譯,第二種是解釋。 編譯型語言在程序執行之前,先會通過編譯器對程序執行一個編譯的過程,把程序轉變成機器語言。運行時就不需要翻譯,而直接執行就可以了。最典型的例子就是C語言。 解釋型語言就沒有這個編譯的過程,而是在程序運行的時候,通過解釋器對程序逐行作出解釋,然後直接運行,最典型的例子是Ruby。 通過以上的例子,我們可以來總結一下解釋型語言和編譯型語言的優缺點,因為編譯型語言在程序運行之前就已經對程序做出了“翻譯”,所以在運行時就少掉了“翻譯”的過程,所以效率比較高。但是我們也不能一概而論,一些解釋型語言也可以通過解釋器的優化來在對程序做出翻譯時對整個程序做出優化,從而在效率上超過編譯型語言。 此外,隨著Java等基於虛擬機的語言的興起,我們又不能把語言純粹地分成解釋型和編譯型這兩種。 用Java來舉例,Java首先是通過編譯器編譯成字節碼文件,然後在運行時通過解釋器給解釋成機器文件。所以我們說Java是一種先編譯後解釋的語言。 3. Python到底是什麽 其實Python和Java/C#一樣,也是一門基於虛擬機的語言,我們先來從表面上簡單地了解一下Python程序的運行過程吧。 當我們在命令行中輸入python hello.py時,其實是激活了Python的“解釋器”,告訴“解釋器”:你要開始工作了。可是在“解釋”之前,其實執行的第一項工作和Java一樣,是編譯。 熟悉Java的同學可以想一下我們在命令行中如何執行一個Java的程序: javac hello.java java hello 只是我們在用Eclipse之類的IDE時,將這兩部給融合成了一部而已。其實Python也一樣,當我們執行python hello.py時,他也一樣執行了這麽一個過程,所以我們應該這樣來描述Python,Python是一門先編譯後解釋的語言。 4. 簡述Python的運行過程 在說這個問題之前,我們先來說兩個概念,PyCodeObject和pyc文件。 我們在硬盤上看到的pyc自然不必多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。我們先簡單知道就可以了,繼續向下看。 當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。 當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,如果找到,則直接載入,否則就重復上面的過程。 所以我們應該這樣來定位PyCodeObject和pyc文件,我們說pyc文件其實是PyCodeObject的一種持久化保存方式。認識pyc文件
十一、數據類型初識
1、數字2 是一個整數的例子。
長整數 不過是大一些的整數。
3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是復數的例子,其中-5,4為實數,j為虛數,數學中表示復數是什麽?。
int(整型) 在32位機器上,整數的位數為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647 在64位系統上,整數的位數為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807 long(長整型) 跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器內存有限,我們使用的長整數數值不可能無限大。 註意,自從Python2.2起,如果整數發生溢出,Python會自動將整數數據轉換為長整數,所以如今在長整數數據後面不加字母L也不會導致嚴重後果了。 float(浮點型) 先掃盲 http://www.cnblogs.com/alex3714/articles/5895848.html 浮點數用來處理實數,即帶有小數的數字。類似於C語言中的double類型,占8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。 complex(復數) 復數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是復數的實數部分,y是復數的虛數部分,這裏的x和y都是實數。 註:Python中存在小數字池:-5 ~ 257數字的類型 2、布爾值 真或假 1 或 0 3、字符串
"hello world"萬惡的字符串拼接: python中的字符串在C語言中體現為是一個字符數組,每次創建字符串時候需要在內存中開辟一塊連續的空,並且一旦需要修改字符串的話,就需要再次開辟空間,萬惡的+號每出現一次就會在內從中重新開辟一塊空間。(效率低,建議不使用) 字符串格式化輸出
1 name = "zjt" 2 print ("i am %s " % name) 3 4 #輸出: i am alex
PS: 字符串是 %s;整數 %d;浮點數%f
字符串常用功能:- 移除空白
- 分割
- 長度
- 索引
- 切片
1 name_list = [‘alex‘, ‘seven‘, ‘eric‘] 2 3 name_list1 = list([‘alex‘, ‘seven‘, ‘eric‘])
基本操作:
- 索引
- 切片
- 追加
- 刪除
- 長度
- 切片
- 循環
- 包含
1 ages = (11, 22, 33, 44, 55) 2 3 ages1 = tuple((11, 22, 33, 44, 55))6、字典(無序) 創建字典:
1 person = {"name": "mr.wu", ‘age‘: 18} 2 或 3 person = dict({"name": "mr.wu", ‘age‘: 18})
常用操作:
- 索引
- 新增
- 刪除
- 鍵、值、鍵值對
- 循環
- 長度
十二、數據運算
算數運算:比較運算:
賦值運算:
邏輯運算:
成員運算:
身份運算:
位運算:
1 a = 60 # 60 = 0011 1100 2 b = 13 # 13 = 0000 1101 3 c = 0 4 5 c = a & b # 12 = 0000 1100 6 print("a & b is ", c) 7 8 c = a | b # 61 = 0011 1101 9 print("a | b is ", c) 10 11 c = a ^ b # 49 = 0011 0001 #相同為0,不同為1 12 print("a ^ b is ", c) 13 14 c = ~a # -61 = 1100 0011 15 print("~a is ", c) 16 17 c = a << 2 # 240 = 1111 0000 18 print("a << 2 is ", c) 19 20 c = a >> 2 # 15 = 0000 1111 21 print("a >> 2 is ", c)位運算實例
*按位取反運算規則(按位取反再加1) 詳解http://blog.csdn.net/wenxinwukui234/article/details/42119265
運算符優先級:
更多內容:猛擊這裏
十三、條件語句 if...else
1 # !/usr/bin/env python 2 # -*- coding: encoding -*- 3 4 # 驗證用戶名和密碼 5 # 如果錯誤,則輸出用戶名或密碼錯誤 6 # 如果成功,則輸出 歡迎,XXX! 7 8 name = input(‘請輸入用戶名:‘) 9 pwd = input(‘請輸入密碼:‘) 10 11 if name == "zjt" and pwd == "123": 12 print("歡迎,zjt!") 13 else: 14 print("用戶名和密碼錯誤")場景一、用戶登錄認證
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 #程序啟動讓用戶猜數字 4 #用戶輸入後,根據輸入提示用戶輸入的是否正確 5 #如果錯誤,提示是猜大了還是小了 6 7 num = 28 8 9 user_input = int(input("input your guess num:")) 10 11 if user_input == num: 12 print("Congratulations, you got it !") 13 elif user_input < num: 14 print("Oops,think bigger!") 15 else: 16 print("think smaller!")場景二、猜數字遊戲
十四、for 循環
1 for i in range(10): 2 print(i) 3 4 #輸出 5 0 6 1 7 2 8 3 9 4 10 5 11 6 12 7 13 8 14 9for循環 10次
1 for i in range(10): 2 if i<5: 3 continue #不往下走了,直接進入下一次loop 4 print("loop:", i ) 5 6 輸出: 7 loop: 5 8 loop: 6 9 loop: 7 10 loop: 8 11 loop: 9加入條件判斷,循環次數小於5 直接跳入下一次循環
1 for i in range(10): 2 if i>5: 3 break #不往下走了,直接跳出整個loop 4 print("loop:", i ) 5 6 輸出: 7 loop: 0 8 loop: 1 9 loop: 2 10 loop: 3 11 loop: 4 12 loop: 5加入條件判斷,循環次數大於5 程序退出
十五、while 循環
有一種循環叫死循環,一經觸發,就運行個天荒地老、海枯石爛。
海枯石爛代碼
1 count = 0 2 while True: 3 print("你是風兒我是沙,纏纏綿綿到天涯...",count) 4 count +=1
1 count = 0 2 while True: 3 print("你是風兒我是沙,纏纏綿綿到天涯...",count) 4 count +=1 5 if count == 100: 6 print("去你媽的風和沙,你們這些脫了褲子是人,穿上褲子是鬼的臭男人..") 7 break海枯石爛代碼循環100次退出
回到上面for 循環的例子,如何實現讓用戶不斷的猜,但只給最多3次機會,再猜不對就退出程序。
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 5 my_age = 28 6 7 count = 0 8 while count < 3: 9 user_input = int(input("input your guess num:")) 10 11 if user_input == my_age: 12 print("Congratulations, you got it !") 13 break 14 elif user_input < my_age: 15 print("Oops,think bigger!") 16 else: 17 print("think smaller!") 18 count += 1 #每次loop 計數器+1 19 else: 20 print("猜這麽多次都不對,你個笨蛋.")猜數字,3次機會
十六、作業
作業一:博客
作業二:編寫登陸接口
- 輸入用戶名密碼
- 認證成功後顯示歡迎信息
- 輸錯三次後鎖定
- 三級菜單
- 可依次選擇進入各子菜單
- 所需新知識點:列表、字典
十七、入門知識拾遺遺
一、bytes類型
二、三元運算
1 result = 值1 if 條件 else 值2
如果條件為真:result = 值1
如果條件為假:result = 值2
三、進制
- 二進制,01
- 八進制,01234567
- 十進制,0123456789
- 十六進制,0123456789ABCDEF
16進制的表示法,用字母H後綴表示,比如BH就表示16進制數11;也可以用0X前綴表示,比如0X23就是16進制的23。
計算機內存地址和為什麽用16進制?
為什麽用16進制 1、計算機硬件是0101二進制的,16進制剛好是2的倍數,更容易表達一個命令或者數據。十六進制更簡短,因為換算的時候一位16進制數可以頂4位2進制數,也就是一個字節(8位進制可以用兩個16進制表示) 2、最早規定ASCII字符集采用的就是8bit(後期擴展了,但是基礎單位還是8bit),8bit用2個16進制直接就能表達出來,不管閱讀還是存儲都比其他進制要方便
3、計算機中CPU運算也是遵照ASCII字符集,以16、32、64的這樣的方式在發展,因此數據交換的時候16進制也顯得更好
4、為了統一規範,CPU、內存、硬盤我們看到都是采用的16進制計算
16進制用在哪裏
1、網絡編程,數據交換的時候需要對字節進行解析都是一個byte一個byte的處理,1個byte可以用0xFF兩個16進制來表達。通過網絡抓包,可以看到數據是通過16進制傳輸的。
2、數據存儲,存儲到硬件中是0101的方式,存儲到系統中的表達方式都是byte方式3、一些常用值的定義,比如:我們經常用到的html中color表達,就是用的16進制方式,4個16進制位可以表達好幾百萬的顏色信息。
四、 一切皆對象
對於Python,一切事物都是對象,對象基於類創建
Day1 - Python基礎1