1. 程式人生 > >教自己學Python(五)程式碼骨架

教自己學Python(五)程式碼骨架

程式碼骨架

從前面的內容中,我們已經看到Python的一行程式碼寫完之後,不需要額外加一個的;進行說明。在Guido設計語言時,為了避免輸入太多的括號或者關鍵字,Python中使用縮排來區分程式碼塊,建議使用四個空格進行縮排(不要使用Tab和空格混排)。就像我們在“練手小遊戲”一節裡看到的那樣。

這樣做無疑強制增加了程式碼的可讀性,同時一行程式碼的建議長度是80個字元,如果超過80個字元可以在第一行的末尾使用連線符\,這樣直譯器會把下一行解釋為同一行。

>>> scan = 'I could see no valley'+ \
... 'no farms' + \
... 'no cottages' + \
... 'and no church spire--' + \
... 'only a lake.'
>>> scan
'I could see no valleyno farmsno cottagesand no church spire--only a lake.'

使用if、elif、else進行比較

前面我們討論了基本運算和Python中常見的資料型別,下面我們探討Python的程式碼結構:

>>> flag = 5 < 3
>>> if flag:
...     print("True condition block")
... else:
...     print("Flase condition block")
...
Flase condition block

注意程式碼塊開始的那一行行尾有個:,下一行屬於這個塊所以有四個空格用來縮排,然後是else,即條件不滿足時,執行該區塊的內容,然後繼續:

和縮排。

注意Python中不像C語言中使用swich語句控制多分支而是使用elif(此外如果……)

color = ‘purple’
if color == ‘red’:
… print(“Apple”)
… elif color == ‘yellow’:
… print(“Rock band”)
… elif color == “purple”:
… print(“A vestiges of the thought”)
… else:
… print(“what is “, color”)

A vestiges of the thought

if、elif、else也被稱作條件語句

Python中的False

除了邏輯運算得到的明確False外,下面的情況也會被認為是False:

  • null 型別 None
  • 整形 0
  • 浮點 0.0
  • 空字串 “”
  • 空列表 []
  • 空元組 ()
  • 空字典 {}
  • 空集合 set()

除此之外,全都被認為是True,基於這樣的定義,我們可以很方便的判定收到的引數或者列表是不是為空比如:if ex_list:就可以判定ex_list這個變數是不是有值,且值是不是為空。

注意,None是個很特別是值

看下面這個例子,把None直接放到判定條件中:

>>> if None:
...     print("True")
... else:
...     print("False")
...
False

雖然結果輸出了False但是None並不等同於False:

>>> if None is False:
...     print("None is False")
... else:
...     print("None is just None")
...
None is just None

迴圈

while:定義迴圈區塊

目前為止我們的程式碼都是自頂向下執行的,有時候需要對某些程式碼塊進行重複操作,這就用到了迴圈。Python中最簡單的迴圈機制是while。比如列印0-9,可以寫為:

>>> count  = 0
>>> while count < 10:
...     print(count)
...     count += 1
...
0
1
.
.
.

break:跳出迴圈

如果想讓迴圈在某一條件下停止,但不確定在哪次迴圈中跳出,可以在無限迴圈中使用break語句。比如我們通過Python的input()函式從鍵盤輸入名字,進行問候。當輸入數字0的時候跳出迴圈。

1   >>> import string
2   >>> while True:
3   ...     name = input("Name to greeting [type 0 to quit]:")
4   ...     if name == 0:
5   ...         break
6   ...     print(string.capwords(name), ", greeting!")
7   ...
8   Name to greeting [type 0 to quit]: leonardo
9   Leonardo, greeting!
10  Name to greeting [type 0 to quit]: van gogh
11  Van Gogh, greeting!
12  Name to greeting [type 0 to quit]: 0
13  >>>

我們在第1行引入了string包,第6行中呼叫了string包中的一個函式capwords(),該函式接收一個字串,並把每個單詞的首字母大寫。

continue:回到迴圈開始

有時候我們不想一下子結束整個迴圈,僅僅是不執行後面的程式碼回到迴圈開始的位置,那麼就需要用到continue關鍵字,比如下面這個例子輸出1-5的平方,如果可以被3整除則跳過:

>>> for num in range(1,6):
...     if num%3 == 0:
...         continue
...     print(num * num)
...
1
4
16
25

for:迭代

上面的程式碼中我們看到了迴圈的另一種實現方式:for。其實for完成的是迭代,range(1,6)產生了一個可迭代的物件,Python中字串、元組、字典、集合等都是可迭代的。range()的用法和序列一節中提到的分片類似,也是三個引數range(start,stop,step)。Python文件中寫到:”Return a sequence of numbers from start to stop by step.” 看下面一個例子:

>>> couple_num = [(1, 2), (2, 3), (3, 4)]
>>> for (a, b) in couple_num:
...     print(a, b)
...
1 2
2 3
3 4
>>> 

else:迴圈結束的尾巴

無論是使用while還是for都允許加上一個else語句,可以用作迴圈正常結束(不是由break跳出)後的掃尾。下面是一個稍微複雜一點的程式碼,用心敲一遍,並讀懂它的意思:

>>> from pprint import pprint
>>> a_list = list(range(10))
>>> matrix_list = []
>>> line = 0
>>> while line < 5:
...     matrix_list.append(a_list)
...     flag = input("type 'q' to quit loop, else continue. line:%s" % line)
...     if flag == 'q':
...         break
...     line += 1
... else:
...     print(matrix_list)
...     pprint(matrix_list)
...

自己嘗試解決所有的Error並正確執行它,如果一切順利,並且沒有打斷會輸出一個5*10的矩陣。

好了研究一下程式碼中新出現的東西,from pprint import pprint的意思是從標準庫的pprint模組中引入pprint函式,該函式在輸出時會盡量排列輸出元素增加人類可讀性。

相關推薦

自己Python程式碼骨架

程式碼骨架 從前面的內容中,我們已經看到Python的一行程式碼寫完之後,不需要額外加一個的;進行說明。在Guido設計語言時,為了避免輸入太多的括號或者關鍵字,Python中使用縮排來區分程式碼塊,建議使用四個空格進行縮排(不要使用Tab和空格混排)。就像我

自己Python基本運算

運算 基本運算 >>> 2 + 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5 1.6 >>> 8 / 4

自己Python練手小遊戲:不要猜中

不要猜中的小遊戲 背景 和朋友閒待著兩個人無聊,都想吃蘋果又都不想洗,想起玩過的一個酒桌上猜數字的遊戲,然後在手機上寫了出來,三局兩勝輸了去洗蘋果…… 遊戲介紹 零到99(包括邊界),隨機一個數兩人(N人也可以)輪流猜測,如果沒猜中,新的數將做為邊界

java基礎python----------numpy

NumPy(底層用c完成的) 是一個開源的Python科學計算基礎庫 一個強大的N維陣列物件ndarray 廣播函式功能 整合C/C++/Fortran程式碼的工具 線性代數、傅立葉變換、隨機數生成等功能 NumPy是SciPy,Pandas等資料處理或科學計算庫的基礎 n

小白Python---------列表

列表介紹 一、列表 <1>列表的格式 變數A的型別為列表 namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’] 比C語言的陣列強大的地方在於列表中的元素可以是不同型別的 testList = [1, ‘a’] <2>列印列表 d

草根Python 條件語句和迴圈語句

前言 第一次建學習群,而且是 Python 的學習群,雖然之前深入學習和工作都是 Android 相關的,最近學起來 Python ,真的很好玩,所以創了個微信群,希望童鞋們進群學習討論。也可以直接加我微androidwed拉進群。也歡迎大家在 Gitbook

實用程式碼Python用Matplotlib畫甘特圖

說明 使用Matplotlib畫甘特圖,思想是使用條形圖繪製。 關鍵點,使用plt.barh(y,data,left=()) y是條形圖的位置,data是條形圖的大小,left是條形圖座標的距離。 案例如下。 測試程式碼 import matplotlib.pyplot as p

Python

列表@font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋體"; }p.MsoNormal { margin: 0pt 0pt 0.0001pt; text-align

C語言老司機Python

append 設計 sta one list 老板 com oob als 標準數據類型: 共6種:Number(數字),String(字符串),List(列表),Tuple(元組),Sets(集合),Dictionary(字典) 本次學習主要是和數據類型混個臉熟,

兄弟連Python06---- 正則表達式匹配規則

驗證 列表 cas 斜杠 小數點 php 能夠 spa 超過 正則表達式 - 匹配規則 基本模式匹配 一切從最基本的開始。模式,是正則表達式最基本的元素,它們是一組描述字符串特征的字符。模式可以很簡單,由普通的字符串組成,也可以非常復雜,往往用特殊的字符表示一個範圍內的字

通過CPython1關於語言、數值類型和變量

而在 有一種 float char 有用 運行時 復數運算 單獨的數 數值類型 強類型語言,不可能出現“程序執行出錯後仍可繼續執行,並且該錯誤導致的問題使後續執行可能出現任意行為”這類錯誤,這類錯誤的例子,如C裏的緩沖區溢出、Jump到錯誤地址。 弱類型語言,類型檢查更不嚴

通過CPython3列表的常用方法

als 字符 return 變量 函數 rem span 通過 body 查看一個對象的id:id(待查對象)檢查一個數據的數據類型:type(數據或變量)查詢一個序列對象的元素個數:len(序列對象)查看一個類有哪些方法可用:dir(數據或變量或類)查看一個類或函數的使用

python常用模塊之os和sys模塊

.get file st2 技術分享 end onf 常用模塊 獲取 文件信息 一、os模塊 1.os.name 輸出字符串指示正在使用的平臺。如果是window 則用‘nt‘表示,對於Linux/Unix用戶,它是‘posix‘。 2.os.getcwd() 函數得到當

小學生python

下劃線 spm div apu 數據 cno bgp idl pyc 上一節描述了跟python環境安裝相關的,這一節寫變量及命名。 python是用c語言寫的,所以很多c的思想在裏面。 基本的數據類型有整形,浮點型,字符型。 整形 int 浮點型 fl

小學生python

title number per for 結束 小學 r語 法規 row 上一篇中用到了for循環,這一節描述下常用的if語句,for語句,while語句。 1. if語句 cars = [‘bmw‘,‘benz‘,‘byd‘,‘ford‘,‘rowei‘] for c

java基礎python---------------Matplotlib

Matplotlib庫 import matplotlib.pyplot as plt plt.plot([4,1,6,3,8,5]) plt.ylabel("num") plt.savefig(“text”,dpi=600)#dpi:每英寸中包含點的數量,儲存為png檔案,檔案 &n

java基礎python----------字典,集合

字典 類似於java中的hashmap 建立字典  使用{}建立字典  使用:指明鍵:值對 my_dict = {'John': 86411234, 'Bob': 86419453,'Mike': 86412387}  鍵必須是不可變的且不重複,值可以是

java基礎python--------列表,元組

 列表:相當於java中的list用法 下標用法與python中的字串相似也可以用-1等負數來表示 也可以使用*重複用法 可以使用in關鍵字用法 也可以求長度:len(list) for迴圈可以遍歷表內元素 列表的方法: 賦值與java中相似,python中可以用切片的方式給

java基礎python-------------字串

字串 長度:len(string) 重複:*.     string*3== stringstringstring 成員運算子(判斷字串是否為另一個字串的子串):in 列舉字串的每一個成員:for 字串索引:從左往右是從下標0開始,從右往左是從下標-1開始,索引運算子:

java基礎python------------基礎語法

基本物件型別 字串 (string),簡記為 str  使用''或""括起來的一系列字元  整數(integer),簡記為 int 十進位制:21,八進位制:025,十六進位制:0x15  浮點數(float) 1.65,21.0,21.,.21,2.