與孩子一起學編程(Python讀書筆記3)

與孩子一起學編程(Python讀書筆記3)

第十一章 嵌套與可變循環

Python 3.X里 print()函數默認是自動換行的,所以本章代碼會有很多問題,實際上 print()函數里有一個默認參數 end,

默認情況下: end= "
"

把它換成 空字元 "",

print("*",end = "")即可實現不換行。

舉例:

同理,在長字串中增加換行,只需添加
即可。

11.1

嵌套並不複雜,但是每一層的循環語句末尾要寫 冒號 :

從其它語言轉Python的人來說,這是個比較容易忘的符號。

若循環體內的代碼沒有自動縮進,請檢查是否忘記輸入冒號

for multi in range(5, 8):

for i in range(1, 11):

print(i,"x",multi, "=", i* multi)

print () #這個print專門用來提供一個空行

11.2

可變循環,在這裡指的是用 變數 來設置 循環的範圍。

比如:for i in range( 0, num ) 在執行此句前 對num 進行賦值,以達到動態確定範圍的目的。

實際上,循環的起點、終點都可以用變數來表示。

11.4

初學編程,在每一層循環的開始第一行,列印一下循環變數的值,可以幫助理解,最後可以用 # 號將代碼變成注釋,不影響最終輸出效果。

11.6

對於較長的代碼行,可以用 「」 來表示分行,或者在多行的代碼前後加「(」「)」總的括起來。

練習1

time.sleep(1) 起到的作用是讓 程序暫停1秒種。

這裡的time是Python命名空間的用法,在第15章將會看到。Python將很多概念進行了簡化,這種不區分實例、類,不做變數類型設定 的做法,在理解上會有一些問題。

練習3

Python3重點:對換行進行精確控制。

range(i)代表了從0到i-1的範圍,非常的方便。

結合可變循環概念,實現經典的9*9 乘法表:

第十二章 列表

C語言中稱為數組,Python中稱為列表,它相當於C#中的集合。C 系列語言的基因中,數組是長度不可變,數據類型不可變的,這大大限制了數組的可用性。Python中的數組用法非常靈活,實際上ActionScript等語言中都是這麼靈活的在使用數組,這是很多人喜歡Python的一個理由。

12.1

列表的兩種用法

1)先定義再使用:

family = []

family.append("Dad")

2)直接定義並填充,之後仍可添加數據。

family = ["Dad","Mom","Brother","Sister"]

12.6

從列表中獲取元素是通過索引號來實現的,首個索引號為零。

print(family[0]) # 輸出 Dad

12.7

Python特色功能,按兩個索引位置讀取數據:

print(family[1,3]) # 輸出 Mom Brother

從索引 1 開始(實際上是第二個數據),至索引 3 之前結束(第四個數據之前)

輸出的仍為列表,所以有中括弧和引號,數據類型為list。

12.8—12.12

列表的各種花式操作,平時用的不會很多。

12.13

列表排序,同類型數據排序是比較有用的方法。

混合數據類型的排序是不被支持的。

練習4

nameList = []

for i in range(5):

name = input("請輸入一個名字:")

nameList.append( name )

print("輸入的名字有:", end =" ")

for j in nameList :

print(j, end =" ")

index = int( input("想替換哪個名字?(1-5):"))

newName = input("請輸入新名字:")

nameList[index-1] = newName

print("新名單是:", end =" ")

for j in nameList :

print(j, end =" ")

上面的代碼中未包含數據有效性檢驗,index的大小應該在列表的數據個數範圍以內。

讓用戶指定第幾個數據時,用戶不知道是從零開始計數,所以代碼里要對index–1,這樣才是普通用戶想指定的那個名字。

index未修正前的一個錯誤示範:

用戶指定修改第3個名字,實際修改了第4個名字,將index-1後,就正常了。

提示:

1)對於需要多次輸入的數據,可以放到循環語句中。

2)輸入的數據,如果要做數學計算,記得 字元 轉換成 數字。

3)列表的首個索引位置值為零,在統計個數、設定循環變數時,這個很重要,以後會慢慢習慣的。

第十三章 函數

13.1

定義函數時,函數名後面記得加 冒號

即使是在同一個代碼塊里,也要先定義函數,再使用它。

注意縮進,別把執行函數的代碼,變成了函數的一部分,如下面所示的那樣:

13.5

函數的意義在於:根據給定的參數,用一段相同的代碼,實現不同的輸出。或者說,是對軟體功能模塊的一個劃分,是段落式的代碼組織方式。

13.6

從函數名開始,括弧內的參數名,與外部的參數僅是對應關係。函數內的變數在執行完畢後,就會被清除掉。

函數外定義的變數是全局變數。全局變數在函數體內是可以訪問的,但不會被改變。嘗試在函數體內改變全局變數的做法,只相當於在函數體內增加了一個同名的局部變數。

為了在函數體內改變全局變數的內容,需要使用 global關鍵字。

練習1

猛然看到習題嚇一跳,它明顯超綱了啊,每個字母作一遍編碼,再按行串起來,最後對輸入的名字拆成字母,每個字母調用不同的函數,老鳥都得想半天啊。

初學者肯定做不到啊,肯定是自己想多了。所以想到應該是上圖中的代碼,練習題的重點是可以重複列印,怎麼生成的圖形不是重點。

第十四章 對象

能堅持到這一章,您已經超越C語言了。因為C語言里最複雜的數據類型是 結構(structure),沒有「對象」的概念。到了C++才有了「對象」的概念,隨之而來的是OOP概念(面向對象的編程)。Python淡化了概念之間的鴻溝,將 對象 理解為 函數 和 參數 的混合體就好了,它是比單純的函數 更高級的一種數據、代碼組織方式。

萬事萬物都是對象(object),將對象的描述 抽象成定義,就是 類(class)。

對象 的定義和描述。

對象 的一個個具體的實例。

可以把 對象 看做是程序運行中間才存在的數據實體。

存貯在電腦中的代碼文件 看做是 類 的定義文件。

很多時候,口語習慣是混著說這兩個詞。

14.2

動態添加類屬性。在對象的使用過程中,給它添加的屬性,都屬於動態添加的屬性。

動態添加的屬性,僅屬於被添加的對象。通過 類定義 來生成的新對象不具備剛添加的屬性。下面的代碼就是這樣的例子:

14.4

通過 __init__() 函數對類 進行初始設置。

通過 __str__() 函數來指定默認情況下的輸出信息,通常用來顯示內置屬性的內容。

14.5

self 是普遍遵守的參數名設定,換成其它名字也是可以的。

14.6

len( self.condiments )>0

len 函數返回數組的長度

14.7

Python 通過「遵守規則」來簡化數據的訪問限制。盡量通過「方法」來訪問屬性,而不是直接去設置屬性,因此,不再考慮類的訪問限制(private私有 public公有 protect 受保護 在Python中統統不存在的)。

方法(Method)中可以添加對數據的校驗的內容,從而避免無效數據(比如超範圍的數據)進入到對象中。

14.8

「不同的類中具有同名的方法」這個不是傳統意義上的多態。傳統的多態 通常指的是「同一個」類中通過參數形式的變化,達到不同的效果。

第十五章 模塊

模塊是存貯代碼時的一種策略,相當於將多個函數打包放在一起,使用時用import 命令導入。

幾個常的模塊:

import time

time.sleep(30) # 休眠30秒

import random

random.randint(0,100) # 產生一個0到100之間的整數

random.random( ) # 產生一個0到1之間的小數

精確導入函數的方法:

from random import randint

print(randint(0,100)) # 產生一個0到100之間的整數

練習3

通過增大重複次數,可看到,randint(1,20)函數的結果中包含1 和 20

相關軟體網盤下載

easyGui

https://pan.baidu.com/s/1lYFo7Jm4QEngQGc11w_XNA?

pan.baidu.com

install Pygame

https://pan.baidu.com/s/1rwPDiHBgMsuM6NscGeS0oA?

pan.baidu.com

Pygame 64位

https://pan.baidu.com/s/1ETyDYZWcW_JJJgZWCVR5fw?

pan.baidu.com

Pygame 32位

https://pan.baidu.com/s/1F_Vd07FW8k3jU9DyPaX-Jg?

pan.baidu.com

Pyhton3.6 64位

https://pan.baidu.com/s/11XWyLN8TlzZaegwcV91uuA?

pan.baidu.com

劉崇軍:與孩子一起學編程(Python讀書筆記 )?

zhuanlan.zhihu.com圖標劉崇軍:與孩子一起學編程(Python讀書筆記2)?

zhuanlan.zhihu.com圖標
推薦閱讀:

零基礎編程入門(01)——前言
0基礎學Python之二十四:異常處理(上)
編程入門(五):編程開發工具這麼多,我該如何選擇?
開始學編程 0x01
hello, world——《例C》(二)

TAG:Python | 編程 | 編程入門 |