網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
python中的for
「基礎(chǔ)知識六」Python 中的循環(huán)控制語句的使用介紹與說明 流量視頻課程
Python 中除了條件控制語句 if...elif...else以外,還有一個特別重要的語句,就是循環(huán)控制語,主要分為 for 循環(huán)語句以及 while 循環(huán)語句。下面跟大家一起分享下循環(huán)控制語句的語法與使用。
(1)for 循環(huán)語句:for 循環(huán)語句可以遍歷任何一個序列,比如一個列表、元組或者字符串。 for 循環(huán)的一般格式與結(jié)構(gòu)圖如下:
for in :
else:
(2)while 循環(huán)語句:while循環(huán),只要條件滿足,就不斷循環(huán),條件不滿足時退出循環(huán)。while 語句的一般格式如下:
while 判斷條件: 語句
在Python中只有for 循環(huán)與 while 循環(huán),沒有do...while循環(huán),在平時的練習(xí)以及編程程序的過程中一定要注意縮進以及 “:”的正確使用。
(3)break與continue語句
break 語句可以提前退出循環(huán)體,結(jié)束本次循環(huán);continue 語句只是跳出當(dāng)前本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。
Python代碼風(fēng)格:PEP8規(guī)則 筆記 營銷視頻課程
Python程序設(shè)計的代碼風(fēng)格應(yīng)該遵循PEP8規(guī)則:
一、代碼布局
1、縮進:
每級縮進4個空格(不用Tab,更不空格Tab混用)
1、續(xù)行應(yīng)該與其包裹元素對齊,要么使用圓括號、方括號和花括號內(nèi)的隱式行連接來垂直對齊,要么使用懸掛式縮進對齊。當(dāng)使用懸掛縮進時,應(yīng)該考慮到第一行不應(yīng)該有參數(shù),以及使用縮進以區(qū)分自己是續(xù)行。
2、縮進4個空格的規(guī)則對于續(xù)行是可選的。
3、當(dāng) if 語句的條件部分長到需要換行寫的時候,注意可以在兩個字符關(guān)鍵字的連接處(比如 if ),增加一個空格,再增加一個左括號來創(chuàng)造一個4空格縮進的多行條件。這會與 if 語句內(nèi)同樣使用4空格縮進的代碼產(chǎn)生視覺沖突。PEP沒有明確指明要如何區(qū)分i發(fā)的條件代碼和內(nèi)嵌代碼??墒褂玫倪x項包括但不限于下面幾種情況:
4、(可以參考下面關(guān)于是否在二進制運算符之前或之后截斷的討論)
在多行結(jié)構(gòu)中的大括號/中括號/小括號的右括號可以與內(nèi)容對齊單獨起一行作為最后一行的第一個字符,如:
或者也可以與多行結(jié)構(gòu)的第一行第一個字符對齊,如:
2、Tab還是空格?
空格是被首先推薦的縮進方式。
Tab應(yīng)該只在現(xiàn)有代碼已經(jīng)使用tab進行縮進的情況下使用,以便和現(xiàn)有代碼保持一致。
Python 3不允許再同一個代碼塊中Tab和空格混合使用。
混合使用制表符和空格縮進的Python2代碼應(yīng)該統(tǒng)一轉(zhuǎn)成空格。
使用命令行運行Python 2時,使用-t選項,會出現(xiàn)非法混用tab和空格的警告。當(dāng)使用-tt選項時,這些警告會變成錯誤。強烈推薦使用這些選項!
3、最大行長
每行最大長度79個字符。
對于連續(xù)大段的文字(比如文檔字符串(docstring)或注釋),每行應(yīng)該被限制在72個字符長度內(nèi)。
Python標(biāo)準(zhǔn)庫比較傳統(tǒng),將行長限制在79個字符以內(nèi)(文檔字符串/注釋為72個字符)。
一種推薦的換行方式是利用Python圓括號、方括號和花括號中的隱式續(xù)行。長行可以通過在括號內(nèi)換行來分成多行。應(yīng)該最好加上反斜杠來區(qū)別續(xù)行。
有時續(xù)行只能使用反斜杠才。例如,較長的多個 with 語句不能采用隱式續(xù)行,只能接受反斜杠表示換行:
另一個這樣的例子是assert語句。要確保續(xù)行的縮進適當(dāng)。
在二元運算符之前應(yīng)該換行嗎?
遵循數(shù)學(xué)的傳統(tǒng)能產(chǎn)出更多可讀性高的代碼:
4、空行
頂層函數(shù)和類的定義,前后用兩個空行隔開。
類里的方法定義用一個空行隔開。
相關(guān)的功能組可以用額外的空行(盡量少地)隔開。一堆相關(guān)的單行代碼之間的空白行可以省略(例如,一組虛擬實現(xiàn) dummy implementations)。
在函數(shù)中使用空行來區(qū)分邏輯段(盡量少地)。
Python接受control-L(即^L)換頁符作為空格;許多工具把這些字符當(dāng)作頁面分隔符,所以你可以在文件中使用它們來分隔相關(guān)段落。請注意,一些編輯器和基于Web的代碼閱讀器可能無法識別control-L為換頁,將在其位置顯示另一個字形。
5、源文件編碼
Python核心發(fā)布版本中的代碼總是以UTF-8格式編碼(或者在Python2中用ASCII編碼)。
使用ASCII(Python 2)或者UTF-8(Python 3)的文件不應(yīng)該添加編碼聲明。
在標(biāo)準(zhǔn)庫中,只有用作測試目的,或者注釋或文檔字符串需要提及作者名字而不得不使用非ASCII字符時,才能使用非默認的編碼。否則,在字符串文字中包括非ASCII數(shù)據(jù)時,推薦使用\x, \u, U或N等轉(zhuǎn)義符。
對于Python 3.0及其以后的版本中,標(biāo)準(zhǔn)庫遵循以下原則(參見PEP 3131):Python標(biāo)準(zhǔn)庫中的所有標(biāo)識符都必須只采用ASCII編碼的標(biāo)識符,在可行的條件下也應(yīng)當(dāng)使用英文詞(很多情況下,使用的縮寫和技術(shù)術(shù)語詞都不是英文)。此外,字符串文字和注釋應(yīng)該只包括ASCII編碼。只有兩種例外:
(a) 測試情況下為了測試非ASCII編碼的特性
(b) 作者名字。作者名字不是由拉丁字母組成的也必須提供一個拉丁音譯名。
鼓勵面向全球的開源項目都采用類似的原則。
6、導(dǎo)入
1、imports應(yīng)該分行寫,而不是都寫在一行,例如:
這樣寫也是可以的:
導(dǎo)入(import)始終在文件的頂部,在模塊注釋和文檔字符串之后,在模塊全局變量和常量之前。
導(dǎo)入順序如下:
imports應(yīng)該按照下面的順序分組來寫:
1、標(biāo)準(zhǔn)庫imports
2、相關(guān)第三方imports
3、本地應(yīng)用/庫的特定imports
不同組的imports之前用空格隔開。
將任何相關(guān)的 __all__ 說明(specification)放在imports之后。
推薦使用絕對(absolute)imports,因為這樣通常更易讀,在import系統(tǒng)沒有正確配置的情況下,也會有更好的表現(xiàn)(或者至少會給出錯誤信息):
在絕對路徑比較長的情況下,也可以使用相對導(dǎo)入:
Python 3中已經(jīng)禁止隱式的相對導(dǎo)入。
導(dǎo)入類的方法,通??梢赃@樣寫:
如果和本地命名的拼寫產(chǎn)生了沖突,應(yīng)當(dāng)使用絕對導(dǎo)入:
禁止使用通配符導(dǎo)入。
通配符導(dǎo)入(from import *)應(yīng)該避免,因為它不清楚命名空間有哪些名稱存,混淆讀者和許多自動化的工具。唯一的例外是重新發(fā)布對外的API時可以考慮使用。
7、模塊中前后具有雙下劃線的變量名
像__all__ , __author__ , __version__ 等這樣的模塊中的變量名(也就是名字里有兩個前綴下劃線和兩個后綴下劃線),應(yīng)該放在文檔字符串的后面,以及除from __future__ 之外的import表達式前面。Python要求將來在模塊中的導(dǎo)入,必須出現(xiàn)在除文檔字符串之外的其他代碼之前。
比如:
二、字符串引號
Python中單引號字符串和雙引號字符串都是相同的。注意盡量避免在字符串中的反斜杠以提高可讀性。
根據(jù)PEP 257, 三個引號都使用雙引號。
三、表達式和語句中的空格
在下列情況下,避免使用無關(guān)的空格:
1、緊跟在小括號,中括號或者大括號后。
2、緊貼在逗號、分號或者冒號之前。
3、然而,冒號在切片中就像二元運算符,在兩邊應(yīng)該有相同數(shù)量的空格(把它當(dāng)做優(yōu)先級最低的操作符)。在擴展的切片操作中,所有的冒號必須有相同的間距。例外情況:當(dāng)一個切片參數(shù)被省略時,空格就被省略了。
4、緊貼在函數(shù)參數(shù)的左括號之前。
5、緊貼索引或者切片的左括號之前。
6、為了和另一個賦值語句對齊,在賦值運算符附件加多個空格。
其他建議
1、避免在尾部添加空格。因為尾部的空格通常都看不見,會產(chǎn)生混亂:比如,一個反斜杠后面跟一個空格的換行符,不算續(xù)行標(biāo)記。有些編輯器不會保留尾空格,并且很多項目(像CPython)在pre-commit的掛鉤調(diào)用中會過濾掉尾空格。
總是在二元運算符兩邊加一個空格:賦值(=),增量賦值(+=,-=),比較(==,,!=,,=,in,not,in,is,is not),布爾(and, or, not)。
如果使用具有不同優(yōu)先級的運算符,請考慮在具有最低優(yōu)先級的運算符周圍添加空格。有時需要通過自己來判斷;但是,不要使用一個以上的空格,并且在二元運算符的兩邊使用相同數(shù)量的空格。
2、在指定函數(shù) 關(guān)鍵字參數(shù) 或者 默認參數(shù) 值的時候,不要在=附近加上空格。
3、功能型注釋應(yīng)該使用冒號的一般性規(guī)則,并且在使用 ->的時候要在兩邊加空格。(參考下面的功能注釋得到能夠多信息)
4、當(dāng)給有類型備注的參數(shù)賦值的時候,在=兩邊添加空格(僅針對那種有類型備注和默認值的參數(shù))。
5、復(fù)合語句(同一行中的多個語句)通常是不允許的。
6、雖然有時候?qū)⑿〉拇a塊和 if/for/while 放在同一行沒什么問題,多行語句塊的情況不要這樣用,同樣也要避免代碼行太長!
四、注釋
與代碼自相矛盾的注釋比沒注釋更差。修改代碼時要優(yōu)先更新注釋!
注釋是完整的句子。如果注釋是斷句,首字母應(yīng)該大寫,除非它是小寫字母開頭的標(biāo)識符(永遠不要修改標(biāo)識符的大小寫)。
如果注釋很短,可以省略末尾的句號。注釋塊通常由一個或多個段落組成。段落由完整的句子構(gòu)成且每個句子應(yīng)該以點號(后面要有兩個空格)結(jié)束,并注意斷詞和空格。
非英語國家的程序員請用英語書寫你的注釋,除非你120%確信代碼永遠不會被不懂你的語言的人閱讀。
1、注釋塊
注釋塊通常應(yīng)用在代碼前,并和這些代碼有同樣的縮進。每行以 '# '(除非它是注釋內(nèi)的縮進文本,注意#后面有空格)。
注釋塊內(nèi)的段落用僅包含單個 '#' 的行分割。
2、行內(nèi)注釋
慎用行內(nèi)注釋(Inline Comments) 節(jié)儉使用行內(nèi)注釋。 行內(nèi)注釋是和語句在同一行,至少用兩個空格和語句分開。行內(nèi)注釋不是必需的,重復(fù)羅嗦會使人分心。
不推薦:
但是有時,很有必要:
加了以后對理解代碼很有幫助的情況下,關(guān)鍵處才加。
3、文檔字符串
文檔字符串的標(biāo)準(zhǔn)參見:PEP 257。
為所有公共模塊、函數(shù)、類和方法書寫文檔字符串。非公開方法不一定有文檔字符串,建議有注釋(出現(xiàn)在 def 行之后)來描述這個方法做什么。
更多參考:PEP 257 文檔字符串約定。注意結(jié)尾的 """ 應(yīng)該單獨成行,例如:
單行的文檔字符串,結(jié)尾的 """ 在同一行。
4、版本標(biāo)簽
如果你必須在源文件中包含git、Subversion、CVS或RCS crud信息,放置在模塊的文檔字符串之后,任何其他代碼之前,上下各用一個空行:
五、命名規(guī)范
Python庫的命名約定有點混亂,不可能完全一致。但依然有些普遍推薦的命名規(guī)范的。新的模塊和包 (包括第三方的框架) 應(yīng)該遵循這些標(biāo)準(zhǔn)。對不同風(fēng)格的已有的庫,建議保持內(nèi)部的一致性。
1、最重要的原則
用戶可見的API命名應(yīng)遵循使用約定而不是實現(xiàn)。
2、命名風(fēng)格
以下是常見的命名方式:
b(單個小寫字母)
B(單個大寫字母)
lowercase (小寫字母)
lower_case_with_underscores (使用下劃線分隔的小寫字母)
UPPERCASE( 大寫字母)
UPPER_CASE_WITH_UNDERSCORES (使用下劃線分隔的大寫字母)
CapitalizedWords(首字母大寫的單詞串或駝峰縮寫)
注意: 使用大寫縮寫時,縮寫使用大寫字母更好。故 HTTPServerError 比 HttpServerError 更好。
mixedCase(不同于首字母大寫,第一個單詞的首字母小寫)
Capitalized_Words_With_Underscores(帶下劃線,首字母大寫,巨丑無比)
還有一種風(fēng)格使用短前綴分組名字。這在Python中不常用, 但出于完整性提一下。例如,os.stat()返回的元組有st_mode, st_size, st_mtime等等這樣的名字(與POSIX系統(tǒng)調(diào)用結(jié)構(gòu)體一致)。
X11庫的所有公開函數(shù)以X開頭, Python中通常認為是不必要的,因為屬性和方法名有對象作前綴,而函數(shù)名有模塊名為前綴。
下面講述首尾有下劃線的情況:
_single_leading_underscore:(單前置下劃線): 弱內(nèi)部使用標(biāo)志。 例如"from M import " 不會導(dǎo)入以下劃線開頭的對象。
single_trailing_underscore_(單后置下劃線): 用于避免與 Python關(guān)鍵詞的沖突。 例如:
__double_leading_underscore(雙前置下劃線): 當(dāng)用于命名類屬性,會觸發(fā)名字重整。 (在類FooBar中,__boo變成 _FooBar__boo)。
__double_leading_and_trailing_underscore__(雙前后下劃線):用戶名字空間的魔法對象或?qū)傩浴@?__init__ , __import__ or __file__,不要自己發(fā)明這樣的名字。
3、命名約定規(guī)范
避免采用的名字:
決不要用字符'l'(小寫字母el),'O'(大寫字母oh),或 'I'(大寫字母eye) 作為單個字符的變量名。一些字體中,這些字符不能與數(shù)字1和0區(qū)別。用'L' 代替'l'時。
包和模塊名:
模塊名要簡短,全部用小寫字母,可使用下劃線以提高可讀性。包名和模塊名類似,但不推薦使用下劃線。
模塊名對應(yīng)到文件名,有些文件系統(tǒng)不區(qū)分大小寫且截短長名字,在 Unix上不是問題,但當(dāng)把代碼遷移到 Mac、Windows 或 DOS 上時,就可能是個問題。當(dāng)然隨著系統(tǒng)的演進,這個問題已經(jīng)不是經(jīng)常出現(xiàn)。
另外有些模塊底層用C或C++ 書寫,并有對應(yīng)的高層Python模塊,C/C++模塊名有一個前置下劃線 (如:_socket)。
類名:
遵循CapWord。
接口需要文檔化并且可以調(diào)用時,可能使用函數(shù)的命名規(guī)則。
注意大部分內(nèi)置的名字是單個單詞(或兩個),CapWord只適用于異常名稱和內(nèi)置的常量。
異常名:
如果確實是錯誤,需要在類名添加后綴 "Error"。
全局變量名:
變量盡量只用于模塊內(nèi)部,約定類似函數(shù)。
對設(shè)計為通過 "from M import " 來使用的模塊,應(yīng)采用 __all__ 機制來防止導(dǎo)入全局變量;或者為全局變量加一個前置下劃線。
函數(shù)名:
函數(shù)名應(yīng)該為小寫,必要時可用下劃線分隔單詞以增加可讀性。 mixedCase(混合大小寫)僅被允許用于兼容性考慮(如: threading.py)。
函數(shù)和方法的參數(shù):
實例方法第一個參數(shù)是 'self'。
類方法第一個參數(shù)是 'cls'。
如果函數(shù)的參數(shù)名與保留關(guān)鍵字沖突,通常在參數(shù)名后加一個下劃線。
方法名和實例變量:
同函數(shù)命名規(guī)則。
非公開方法和實例變量增加一個前置下劃線。
為避免與子類命名沖突,采用兩個前置下劃線來觸發(fā)重整。類Foo屬性名為__a, 不能以 Foo.__a訪問。(執(zhí)著的用戶還是可以通過Foo._Foo__a。) 通常雙前置下劃線僅被用來避免與基類的屬性發(fā)生命名沖突。
常量:
<...python for Mac (二) 互聯(lián)網(wǎng)視頻課程
插一句:mac系統(tǒng)內(nèi)在終端輸入IDLE就有預(yù)裝的IDLE,如下圖所示
接下來我們回到正題,接著昨天的來學(xué)習(xí),
開始介紹pycharm
location是項目的位置
interpreter是更改python支持項目的版本(本文及以下文章默認版本為2.7.X)
點擊創(chuàng)建,出現(xiàn)如下圖所示
打開之后沒有新創(chuàng)建號的文件,需要我們手動創(chuàng)建,在左側(cè)操作欄中右鍵NEW 一個 PYTHON FILE
輸入文件名稱,不帶后綴
點擊ok,第一個python文件就創(chuàng)建好了,可以看到它是.py文件
右面是空的,所以需要自己填寫代碼
按照慣例,第一個程序?qū)憽緃ello world】
print的中文意思是打印在python里它不是往紙上打印,而是打印在命令行,或者叫終端、控制臺里面。print是python里很基本很常見的一個操作,它的操作對象是一個字符串?;靖袷绞牵?/p>
print 你要打印的東西
寫完之后,需要右鍵點擊 run main,也就是運行,之后就可以在下面看到運行的結(jié)果了
這就是第一個程序啦,在下面可以看到hello world
學(xué)會使用print和運行程序之后,可以自己試著輸入自己的名字
比如print “練習(xí)手本”
但是會出現(xiàn)如上圖一樣的報錯,這是因為
Python 2.7x版本中默認的編碼格式是 ASCII 格式,在沒修改編碼格式時無法正確打印漢字,所以在讀取中文時會報錯。解決方法為只要在文件開頭加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了
這樣就成功了~
接下來我們看如何完成輸入輸出
之前print了那么多,都是程序在向屏幕“輸出”。那有來得有往,我們得有向程序“輸入”信息的辦法,進行所謂的“人機交互”。
python有一個接收命令行下輸入的方法:
input( ) 或者 raw_input( )
我們來試試
這樣就完成了第一步,使用python的輸入與輸出~
以上
每天用一點時間,練習(xí)并寫出練習(xí)過程
這樣是對于學(xué)習(xí)的一個及時反饋
重在堅持!
Python的FOR循環(huán)語句與循環(huán)嵌套 流量視頻課程
Python for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。
人生苦短,我用Python
語法:
for循環(huán)的語法格式如下:
流程圖:
通過序列索引迭代
另外一種執(zhí)行循環(huán)的遍歷方式是通過索引。
以上實例我們使用了內(nèi)置函數(shù) len() 和 range(),函數(shù) len() 返回列表的長度,即元素的個數(shù)。 range返回一個序列的數(shù)。
循環(huán)使用 else 語句
在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有區(qū)別,else 中的語句會在循環(huán)正常執(zhí)行完(即 for 不是通過 break 跳出而中斷的)的情況下執(zhí)行,while … else 也是一樣。
for 使用案例
使用list.append()模塊對質(zhì)數(shù)進行輸出。
Python 循環(huán)嵌套
Python 語言允許在一個循環(huán)體里面嵌入另一個循環(huán)。
Python for 循環(huán)嵌套語法:
Python while 循環(huán)嵌套語法:
你可以在循環(huán)體內(nèi)嵌入其他的循環(huán)體,如在while循環(huán)中可以嵌入for循環(huán), 反之,你可以在for循環(huán)中嵌入while循環(huán)。
以下實例使用了嵌套循環(huán)輸出2~100之間的素數(shù):
零基礎(chǔ)開始,1分鐘讓你知道Python中的循環(huán)語句 for 和 while 流量視頻課程
Python語法簡潔而清晰,具有豐富和強大的類庫,被廣泛應(yīng)用于云計算、Web開發(fā)、系統(tǒng)運維、科學(xué)運算、以及人工智能等領(lǐng)域。那么今天小編分享基礎(chǔ)知識Python循環(huán)語句的使用。
Python中的循環(huán)語句有 for 和 while。
Python循環(huán)語句的控制結(jié)構(gòu)圖如下所示:
while 循環(huán)
Python中while語句的一般形式:
while 判斷條件: 語句
同樣需要注意冒號和縮進。另外,在Python中沒有do..while循環(huán)。
以下實例使用了 while 來計算 1 到 100 的總和:
實例
#!/usr/bin/env python3n = 100sum = 0counter = 1whilecounter
執(zhí)行結(jié)果如下:
1 到 100 之和為: 5050
無限循環(huán)
我們可以通過設(shè)置條件表達式永遠不為 false 來實現(xiàn)無限循環(huán),實例如下:
實例
#!/usr/bin/python3var = 1whilevar == 1 : # 表達式永遠為 truenum = int(input("輸入一個數(shù)字 :"))print("你輸入的數(shù)字是: ", num)print("Good bye!")
執(zhí)行以上腳本,輸出結(jié)果如下:
輸入一個數(shù)字 :5你輸入的數(shù)字是: 5輸入一個數(shù)字 :
你可以使用 CTRL+C 來退出當(dāng)前的無限循環(huán)。
無限循環(huán)在服務(wù)器上客戶端的實時請求非常有用。
while 循環(huán)使用 else 語句
在 while … else 在條件語句為 false 時執(zhí)行 else 的語句塊:
實例
#!/usr/bin/python3count = 0whilecount
執(zhí)行以上腳本,輸出結(jié)果如下:
0 小于 51 小于 52 小于 53 小于 54 小于 55 大于或等于 5
簡單語句組
類似if語句的語法,如果你的while循環(huán)體中只有一條語句,你可以將該語句與while寫在同一行中, 如下所示:
實例
#!/usr/bin/pythonflag = 1while(flag): print('歡迎訪問菜鳥教程!')print("Good bye!")
注意:以上的無限循環(huán)你可以使用 CTRL+C 來中斷循環(huán)。
執(zhí)行以上腳本,輸出結(jié)果如下:
for 語句
Python for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。
for循環(huán)的一般格式如下:
for in : else:
Python loop循環(huán)實例:
實例
>>>languages = ["C", "C++", "Perl", "Python"] >>> forxinlanguages:... print(x)... CC++PerlPython>>>
以下 for 實例中使用了 break 語句,break 語句用于跳出當(dāng)前循環(huán)體:
實例
#!/usr/bin/python3sites = ["Baidu", "Google","Runoob","Taobao"]forsiteinsites: ifsite == "Runoob": print("菜鳥教程!")breakprint("循環(huán)數(shù)據(jù) " + site)else: print("沒有循環(huán)數(shù)據(jù)!")print("完成循環(huán)!")
執(zhí)行腳本后,在循環(huán)到 "Runoob"時會跳出循環(huán)體:
循環(huán)數(shù)據(jù) Baidu循環(huán)數(shù)據(jù) Google菜鳥教程!完成循環(huán)!
好了,今天就分享到這里,有想學(xué)習(xí)Python編程的伙伴們,歡迎留言和小編交流學(xué)習(xí),最后祝大家早日成為Python大牛!
python之for循環(huán)遍歷字典數(shù)據(jù)類型 公司視頻課程
前言
python中有一種特殊的數(shù)據(jù)類型,叫做dict字典。實際上,字典這種數(shù)據(jù)類型非常類似于JavaScript語言中的json,Java語言的Map。
語法
{key1:value1,......}
特點
key不允許重復(fù)
for循環(huán)遍歷
第一種
第二種
第三種
總結(jié)
字典在實際開發(fā)中用的很多,需要特別掌握。
Python——for 循環(huán)實現(xiàn)打印菱形 企業(yè)視頻課程
首先熱一下身,本人使用python3.6版本,因此與2.7版本有些不同。例如print('Hello,World!'),同樣的代碼在2.7下輸出之后的光標(biāo)在‘!’之后,而3.6版本下光標(biāo)在下一行,3.x版本會默認換行。如果想要3.6不換行,輸出的時候末尾加上end=''
既:print('Hello,World!',end='')
哈哈,了解這個之后我們開始高潮啦……
先上圖,看效果如下:
效果圖
代碼:
print('print a num is 1-10') #輸入一個整數(shù),顯示菱形大小。
# 輸出菱形上半部分 #
for i in range(0,num): #控制循環(huán)次數(shù),也就是控制行數(shù)
for j in range(num-i): #控制空格的多少,是遞減過程
print(' ',end='')
for k in range(2*i+1): #控制#的多少,是遞增過程,步長是2*i-1
print('#',end='')
print('')
# 輸出菱形下半部分 #
#控制循環(huán)次數(shù),也就是控制行數(shù)(因為菱形上下兩部分,中間會有一行純#行,所以多一次循環(huán))
for i in range(0,num+1):
for j in range(0,i): #控制空格的多少,是遞增過程
print(' ',end='')
for k in range(2*num+1-2*i): #控制#多少,遞減過程,從2*num+1個開始遞減,步長是2*i,
print('#',end='')
print('')
代碼搞定之后,我們運行一下,輸入一個 6 ,就會出現(xiàn)效果圖中的那樣。
感謝老爺們關(guān)注一波!最后附上一張作者帥照和日常工作照片。
作者帥照
工作日常
Python代碼風(fēng)格:PEP8規(guī)則 筆記 互聯(lián)網(wǎng)視頻課程
Python程序設(shè)計的代碼風(fēng)格應(yīng)該遵循PEP8規(guī)則:
一、代碼布局
1、縮進:
每級縮進4個空格(不用Tab,更不空格Tab混用)
1、續(xù)行應(yīng)該與其包裹元素對齊,要么使用圓括號、方括號和花括號內(nèi)的隱式行連接來垂直對齊,要么使用懸掛式縮進對齊。當(dāng)使用懸掛縮進時,應(yīng)該考慮到第一行不應(yīng)該有參數(shù),以及使用縮進以區(qū)分自己是續(xù)行。
2、縮進4個空格的規(guī)則對于續(xù)行是可選的。
3、當(dāng) if 語句的條件部分長到需要換行寫的時候,注意可以在兩個字符關(guān)鍵字的連接處(比如 if ),增加一個空格,再增加一個左括號來創(chuàng)造一個4空格縮進的多行條件。這會與 if 語句內(nèi)同樣使用4空格縮進的代碼產(chǎn)生視覺沖突。PEP沒有明確指明要如何區(qū)分i發(fā)的條件代碼和內(nèi)嵌代碼。可使用的選項包括但不限于下面幾種情況:
4、(可以參考下面關(guān)于是否在二進制運算符之前或之后截斷的討論)
在多行結(jié)構(gòu)中的大括號/中括號/小括號的右括號可以與內(nèi)容對齊單獨起一行作為最后一行的第一個字符,如:
或者也可以與多行結(jié)構(gòu)的第一行第一個字符對齊,如:
2、Tab還是空格?
空格是被首先推薦的縮進方式。
Tab應(yīng)該只在現(xiàn)有代碼已經(jīng)使用tab進行縮進的情況下使用,以便和現(xiàn)有代碼保持一致。
Python 3不允許再同一個代碼塊中Tab和空格混合使用。
混合使用制表符和空格縮進的Python2代碼應(yīng)該統(tǒng)一轉(zhuǎn)成空格。
使用命令行運行Python 2時,使用-t選項,會出現(xiàn)非法混用tab和空格的警告。當(dāng)使用-tt選項時,這些警告會變成錯誤。強烈推薦使用這些選項!
3、最大行長
每行最大長度79個字符。
對于連續(xù)大段的文字(比如文檔字符串(docstring)或注釋),每行應(yīng)該被限制在72個字符長度內(nèi)。
Python標(biāo)準(zhǔn)庫比較傳統(tǒng),將行長限制在79個字符以內(nèi)(文檔字符串/注釋為72個字符)。
一種推薦的換行方式是利用Python圓括號、方括號和花括號中的隱式續(xù)行。長行可以通過在括號內(nèi)換行來分成多行。應(yīng)該最好加上反斜杠來區(qū)別續(xù)行。
有時續(xù)行只能使用反斜杠才。例如,較長的多個 with 語句不能采用隱式續(xù)行,只能接受反斜杠表示換行:
另一個這樣的例子是assert語句。要確保續(xù)行的縮進適當(dāng)。
在二元運算符之前應(yīng)該換行嗎?
遵循數(shù)學(xué)的傳統(tǒng)能產(chǎn)出更多可讀性高的代碼:
4、空行
頂層函數(shù)和類的定義,前后用兩個空行隔開。
類里的方法定義用一個空行隔開。
相關(guān)的功能組可以用額外的空行(盡量少地)隔開。一堆相關(guān)的單行代碼之間的空白行可以省略(例如,一組虛擬實現(xiàn) dummy implementations)。
在函數(shù)中使用空行來區(qū)分邏輯段(盡量少地)。
Python接受control-L(即^L)換頁符作為空格;許多工具把這些字符當(dāng)作頁面分隔符,所以你可以在文件中使用它們來分隔相關(guān)段落。請注意,一些編輯器和基于Web的代碼閱讀器可能無法識別control-L為換頁,將在其位置顯示另一個字形。
5、源文件編碼
Python核心發(fā)布版本中的代碼總是以UTF-8格式編碼(或者在Python2中用ASCII編碼)。
使用ASCII(Python 2)或者UTF-8(Python 3)的文件不應(yīng)該添加編碼聲明。
在標(biāo)準(zhǔn)庫中,只有用作測試目的,或者注釋或文檔字符串需要提及作者名字而不得不使用非ASCII字符時,才能使用非默認的編碼。否則,在字符串文字中包括非ASCII數(shù)據(jù)時,推薦使用\x, \u, U或N等轉(zhuǎn)義符。
對于Python 3.0及其以后的版本中,標(biāo)準(zhǔn)庫遵循以下原則(參見PEP 3131):Python標(biāo)準(zhǔn)庫中的所有標(biāo)識符都必須只采用ASCII編碼的標(biāo)識符,在可行的條件下也應(yīng)當(dāng)使用英文詞(很多情況下,使用的縮寫和技術(shù)術(shù)語詞都不是英文)。此外,字符串文字和注釋應(yīng)該只包括ASCII編碼。只有兩種例外:
(a) 測試情況下為了測試非ASCII編碼的特性
(b) 作者名字。作者名字不是由拉丁字母組成的也必須提供一個拉丁音譯名。
鼓勵面向全球的開源項目都采用類似的原則。
6、導(dǎo)入
1、imports應(yīng)該分行寫,而不是都寫在一行,例如:
這樣寫也是可以的:
導(dǎo)入(import)始終在文件的頂部,在模塊注釋和文檔字符串之后,在模塊全局變量和常量之前。
導(dǎo)入順序如下:
imports應(yīng)該按照下面的順序分組來寫:
1、標(biāo)準(zhǔn)庫imports
2、相關(guān)第三方imports
3、本地應(yīng)用/庫的特定imports
不同組的imports之前用空格隔開。
將任何相關(guān)的 __all__ 說明(specification)放在imports之后。
推薦使用絕對(absolute)imports,因為這樣通常更易讀,在import系統(tǒng)沒有正確配置的情況下,也會有更好的表現(xiàn)(或者至少會給出錯誤信息):
在絕對路徑比較長的情況下,也可以使用相對導(dǎo)入:
Python 3中已經(jīng)禁止隱式的相對導(dǎo)入。
導(dǎo)入類的方法,通??梢赃@樣寫:
如果和本地命名的拼寫產(chǎn)生了沖突,應(yīng)當(dāng)使用絕對導(dǎo)入:
禁止使用通配符導(dǎo)入。
通配符導(dǎo)入(from import *)應(yīng)該避免,因為它不清楚命名空間有哪些名稱存,混淆讀者和許多自動化的工具。唯一的例外是重新發(fā)布對外的API時可以考慮使用。
7、模塊中前后具有雙下劃線的變量名
像__all__ , __author__ , __version__ 等這樣的模塊中的變量名(也就是名字里有兩個前綴下劃線和兩個后綴下劃線),應(yīng)該放在文檔字符串的后面,以及除from __future__ 之外的import表達式前面。Python要求將來在模塊中的導(dǎo)入,必須出現(xiàn)在除文檔字符串之外的其他代碼之前。
比如:
二、字符串引號
Python中單引號字符串和雙引號字符串都是相同的。注意盡量避免在字符串中的反斜杠以提高可讀性。
根據(jù)PEP 257, 三個引號都使用雙引號。
三、表達式和語句中的空格
在下列情況下,避免使用無關(guān)的空格:
1、緊跟在小括號,中括號或者大括號后。
2、緊貼在逗號、分號或者冒號之前。
3、然而,冒號在切片中就像二元運算符,在兩邊應(yīng)該有相同數(shù)量的空格(把它當(dāng)做優(yōu)先級最低的操作符)。在擴展的切片操作中,所有的冒號必須有相同的間距。例外情況:當(dāng)一個切片參數(shù)被省略時,空格就被省略了。
4、緊貼在函數(shù)參數(shù)的左括號之前。
5、緊貼索引或者切片的左括號之前。
6、為了和另一個賦值語句對齊,在賦值運算符附件加多個空格。
其他建議
1、避免在尾部添加空格。因為尾部的空格通常都看不見,會產(chǎn)生混亂:比如,一個反斜杠后面跟一個空格的換行符,不算續(xù)行標(biāo)記。有些編輯器不會保留尾空格,并且很多項目(像CPython)在pre-commit的掛鉤調(diào)用中會過濾掉尾空格。
總是在二元運算符兩邊加一個空格:賦值(=),增量賦值(+=,-=),比較(==,,!=,,=,in,not,in,is,is not),布爾(and, or, not)。
如果使用具有不同優(yōu)先級的運算符,請考慮在具有最低優(yōu)先級的運算符周圍添加空格。有時需要通過自己來判斷;但是,不要使用一個以上的空格,并且在二元運算符的兩邊使用相同數(shù)量的空格。
2、在指定函數(shù) 關(guān)鍵字參數(shù) 或者 默認參數(shù) 值的時候,不要在=附近加上空格。
3、功能型注釋應(yīng)該使用冒號的一般性規(guī)則,并且在使用 ->的時候要在兩邊加空格。(參考下面的功能注釋得到能夠多信息)
4、當(dāng)給有類型備注的參數(shù)賦值的時候,在=兩邊添加空格(僅針對那種有類型備注和默認值的參數(shù))。
5、復(fù)合語句(同一行中的多個語句)通常是不允許的。
6、雖然有時候?qū)⑿〉拇a塊和 if/for/while 放在同一行沒什么問題,多行語句塊的情況不要這樣用,同樣也要避免代碼行太長!
四、注釋
與代碼自相矛盾的注釋比沒注釋更差。修改代碼時要優(yōu)先更新注釋!
注釋是完整的句子。如果注釋是斷句,首字母應(yīng)該大寫,除非它是小寫字母開頭的標(biāo)識符(永遠不要修改標(biāo)識符的大小寫)。
如果注釋很短,可以省略末尾的句號。注釋塊通常由一個或多個段落組成。段落由完整的句子構(gòu)成且每個句子應(yīng)該以點號(后面要有兩個空格)結(jié)束,并注意斷詞和空格。
非英語國家的程序員請用英語書寫你的注釋,除非你120%確信代碼永遠不會被不懂你的語言的人閱讀。
1、注釋塊
注釋塊通常應(yīng)用在代碼前,并和這些代碼有同樣的縮進。每行以 '# '(除非它是注釋內(nèi)的縮進文本,注意#后面有空格)。
注釋塊內(nèi)的段落用僅包含單個 '#' 的行分割。
2、行內(nèi)注釋
慎用行內(nèi)注釋(Inline Comments) 節(jié)儉使用行內(nèi)注釋。 行內(nèi)注釋是和語句在同一行,至少用兩個空格和語句分開。行內(nèi)注釋不是必需的,重復(fù)羅嗦會使人分心。
不推薦:
但是有時,很有必要:
加了以后對理解代碼很有幫助的情況下,關(guān)鍵處才加。
3、文檔字符串
文檔字符串的標(biāo)準(zhǔn)參見:PEP 257。
為所有公共模塊、函數(shù)、類和方法書寫文檔字符串。非公開方法不一定有文檔字符串,建議有注釋(出現(xiàn)在 def 行之后)來描述這個方法做什么。
更多參考:PEP 257 文檔字符串約定。注意結(jié)尾的 """ 應(yīng)該單獨成行,例如:
單行的文檔字符串,結(jié)尾的 """ 在同一行。
4、版本標(biāo)簽
如果你必須在源文件中包含git、Subversion、CVS或RCS crud信息,放置在模塊的文檔字符串之后,任何其他代碼之前,上下各用一個空行:
五、命名規(guī)范
Python庫的命名約定有點混亂,不可能完全一致。但依然有些普遍推薦的命名規(guī)范的。新的模塊和包 (包括第三方的框架) 應(yīng)該遵循這些標(biāo)準(zhǔn)。對不同風(fēng)格的已有的庫,建議保持內(nèi)部的一致性。
1、最重要的原則
用戶可見的API命名應(yīng)遵循使用約定而不是實現(xiàn)。
2、命名風(fēng)格
以下是常見的命名方式:
b(單個小寫字母)
B(單個大寫字母)
lowercase (小寫字母)
lower_case_with_underscores (使用下劃線分隔的小寫字母)
UPPERCASE( 大寫字母)
UPPER_CASE_WITH_UNDERSCORES (使用下劃線分隔的大寫字母)
CapitalizedWords(首字母大寫的單詞串或駝峰縮寫)
注意: 使用大寫縮寫時,縮寫使用大寫字母更好。故 HTTPServerError 比 HttpServerError 更好。
mixedCase(不同于首字母大寫,第一個單詞的首字母小寫)
Capitalized_Words_With_Underscores(帶下劃線,首字母大寫,巨丑無比)
還有一種風(fēng)格使用短前綴分組名字。這在Python中不常用, 但出于完整性提一下。例如,os.stat()返回的元組有st_mode, st_size, st_mtime等等這樣的名字(與POSIX系統(tǒng)調(diào)用結(jié)構(gòu)體一致)。
X11庫的所有公開函數(shù)以X開頭, Python中通常認為是不必要的,因為屬性和方法名有對象作前綴,而函數(shù)名有模塊名為前綴。
下面講述首尾有下劃線的情況:
_single_leading_underscore:(單前置下劃線): 弱內(nèi)部使用標(biāo)志。 例如"from M import " 不會導(dǎo)入以下劃線開頭的對象。
single_trailing_underscore_(單后置下劃線): 用于避免與 Python關(guān)鍵詞的沖突。 例如:
__double_leading_underscore(雙前置下劃線): 當(dāng)用于命名類屬性,會觸發(fā)名字重整。 (在類FooBar中,__boo變成 _FooBar__boo)。
__double_leading_and_trailing_underscore__(雙前后下劃線):用戶名字空間的魔法對象或?qū)傩?。例?__init__ , __import__ or __file__,不要自己發(fā)明這樣的名字。
3、命名約定規(guī)范
避免采用的名字:
決不要用字符'l'(小寫字母el),'O'(大寫字母oh),或 'I'(大寫字母eye) 作為單個字符的變量名。一些字體中,這些字符不能與數(shù)字1和0區(qū)別。用'L' 代替'l'時。
包和模塊名:
模塊名要簡短,全部用小寫字母,可使用下劃線以提高可讀性。包名和模塊名類似,但不推薦使用下劃線。
模塊名對應(yīng)到文件名,有些文件系統(tǒng)不區(qū)分大小寫且截短長名字,在 Unix上不是問題,但當(dāng)把代碼遷移到 Mac、Windows 或 DOS 上時,就可能是個問題。當(dāng)然隨著系統(tǒng)的演進,這個問題已經(jīng)不是經(jīng)常出現(xiàn)。
另外有些模塊底層用C或C++ 書寫,并有對應(yīng)的高層Python模塊,C/C++模塊名有一個前置下劃線 (如:_socket)。
類名:
遵循CapWord。
接口需要文檔化并且可以調(diào)用時,可能使用函數(shù)的命名規(guī)則。
注意大部分內(nèi)置的名字是單個單詞(或兩個),CapWord只適用于異常名稱和內(nèi)置的常量。
異常名:
如果確實是錯誤,需要在類名添加后綴 "Error"。
全局變量名:
變量盡量只用于模塊內(nèi)部,約定類似函數(shù)。
對設(shè)計為通過 "from M import " 來使用的模塊,應(yīng)采用 __all__ 機制來防止導(dǎo)入全局變量;或者為全局變量加一個前置下劃線。
函數(shù)名:
函數(shù)名應(yīng)該為小寫,必要時可用下劃線分隔單詞以增加可讀性。 mixedCase(混合大小寫)僅被允許用于兼容性考慮(如: threading.py)。
函數(shù)和方法的參數(shù):
實例方法第一個參數(shù)是 'self'。
類方法第一個參數(shù)是 'cls'。
如果函數(shù)的參數(shù)名與保留關(guān)鍵字沖突,通常在參數(shù)名后加一個下劃線。
方法名和實例變量:
同函數(shù)命名規(guī)則。
非公開方法和實例變量增加一個前置下劃線。
為避免與子類命名沖突,采用兩個前置下劃線來觸發(fā)重整。類Foo屬性名為__a, 不能以 Foo.__a訪問。(執(zhí)著的用戶還是可以通過Foo._Foo__a。) 通常雙前置下劃線僅被用來避免與基類的屬性發(fā)生命名沖突。
常量:
<...Python的FOR循環(huán)語句與循環(huán)嵌套 推廣視頻課程
Python for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。
人生苦短,我用Python
語法:
for循環(huán)的語法格式如下:
流程圖:
通過序列索引迭代
另外一種執(zhí)行循環(huán)的遍歷方式是通過索引。
以上實例我們使用了內(nèi)置函數(shù) len() 和 range(),函數(shù) len() 返回列表的長度,即元素的個數(shù)。 range返回一個序列的數(shù)。
循環(huán)使用 else 語句
在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有區(qū)別,else 中的語句會在循環(huán)正常執(zhí)行完(即 for 不是通過 break 跳出而中斷的)的情況下執(zhí)行,while … else 也是一樣。
for 使用案例
使用list.append()模塊對質(zhì)數(shù)進行輸出。
Python 循環(huán)嵌套
Python 語言允許在一個循環(huán)體里面嵌入另一個循環(huán)。
Python for 循環(huán)嵌套語法:
Python while 循環(huán)嵌套語法:
你可以在循環(huán)體內(nèi)嵌入其他的循環(huán)體,如在while循環(huán)中可以嵌入for循環(huán), 反之,你可以在for循環(huán)中嵌入while循環(huán)。
以下實例使用了嵌套循環(huán)輸出2~100之間的素數(shù):