由於(yu) P2考試使用的是偽(wei) 代碼,很多同學找到P4時對python代碼不熟悉,因此我特地總結了P4卷需要用到的python代碼要點。
1.全局變量:
示例:global DataStored
global關(guan) 鍵字用於(yu) 聲明一個(ge) 全局變量,使其在函數內(nei) 外都可以訪問和修改。
·global時不能在global同一行賦值
·global在各個(ge) 函數裏如果需要用到,則每個(ge) 函數都要global一遍
2.輸入處理:
NumberItems = int(input("How many numbers will you enter?"))
input()函數用於(yu) 獲取用戶輸入,返回的是字符串類型。如果需要進行數值運算,需要使用int()將其轉換為(wei) 整數。
輸入時做validation的辦法:
要求輸入的是1-100中間的數字,如果輸錯,則需要重新輸入
num=int(input("input a number between 1-100"))
whilenum>100ornum<0:
num=int(input("input a number between 1-100"))
3.循環:
·for循環:
ofor Count in range(0, NumberItems):
ofor循環用於(yu) 遍曆序列或範圍。range(start, stop)用於(yu) 生成一係列數值。
·while循環:
owhile Valid == False:
owhile循環在條件為(wei) True時不斷執行,直到條件變為(wei) False。
雖然break可以中途退出循環,但是在P4考試中最好不要用,縱觀所有的markscheme,都沒有用到break語句
4.函數:
·定義(yi) 函數:
defInitialise():
globalDataStored
globalNumberItems
使用def關(guan) 鍵字定義(yi) 函數,後跟函數名和括號。函數中的代碼在調用時執行。
·返回值:
o return MidValue
o解釋:return語句用於(yu) 返回函數的值。切記和print語句區分開!!!
比如以下真題裏,很多人以為(wei) return 就是print,實際這道題既要求print,也要求return.
5.條件判斷(if-else):
ifNumberItems >0andNumberItems <21:
Valid =True
解釋:if語句根據條件是否為(wei) 真來執行相應的代碼。可以使用else語句處理條件不成立時的情況。
6.列表:
DataStored=[]
·DataStored.append(int(input("Enter number")))
·解釋:列表是可變的序列,用於(yu) 存儲(chu) 多個(ge) 元素。.append()方法將元素添加到列表的末尾。
往數組裏添加內(nei) 容什麽(me) 時候用append ,什麽(me) 時候采用數組+下標的方式
場景1:動態擴展列表(優(you) 先用append()
)
p4沒有要求初始化,我們(men) 就不初始化,不初始化怎麽(me) 定義(yi) 數組呢,
比如:results = [],如果要往數組裏添加元素,如下所示:
results=[]#integerof5elements
foriinrange(5):
results.append(i**2) # 動態追加元素
# 輸出:[0,1,4,9,16]
場景2:修改已有元素(必須用下標)
data= [10,20,30,40]
data=300# 修改索引2的元素
# 輸出:[10, 20, 300, 40]
7.類(Class):
·類定義(yi) :(代碼往左拉可以看到備注)
classTree:
def __init__(self, Name, HGrowth, MaxH, MaxW, PEvergreen):
self.__TreeName = Name # 樹木名稱(私有屬性)
self.__HeightGrowth = HGrowth # 年生長高度(cm)
self.__MaxHeight = MaxH # 最大生長高度(m)
self.__MaxWidth = MaxW # 最大樹冠寬度(m)
self.__Evergreen = PEvergreen # 是否常綠(布爾值)
類使用class關(guan) 鍵字定義(yi) ,__init__方法是類的構造函數,用來在創建對象時初始化實例變量。實例變量通過self訪問。
·獲取器(Getter)和設置器(Setter)方法:
classTree:
def __init__(self, Name, HGrowth, MaxH, MaxW, PEvergreen):
self.__TreeName = Name
self.__HeightGrowth = HGrowth
self.__MaxHeight = MaxH
self.__MaxWidth = MaxW
self.__Evergreen = PEvergreen
# Getter方法群
def GetTreeName(self):
"""獲取樹木品種名稱"""
returnself.__TreeName
def GetHeightGrowth(self):
"""獲取年生長高度(cm)"""
returnself.__HeightGrowth
def GetMaxHeight(self):
"""獲取理論最大高度(m)"""
returnself.__MaxHeight
def GetMaxWidth(self):
"""獲取理論最大樹冠寬度(m)"""
returnself.__MaxWidth
def IsEvergreen(self):
"""判斷是否為(wei) 常綠樹種"""
returnself.__Evergreen
# Setter方法群(含數據校驗)
def SetHeightGrowth(self, HGrowth):
"""設置年生長高度(必須>=0)"""
ifHGrowth >=0:
self.__HeightGrowth = HGrowth
else:
raise ValueError("年生長高度不能為(wei) 負數")
def SetMaxHeight(self, MaxH):
"""設置最大生長高度(必須>0)"""
ifMaxH >0:
self.__MaxHeight = MaxH
else:
raise ValueError("最大高度必須大於(yu) 0米")
8.異常處理:
try:
File =open("Trees.txt")
exceptIOError:
print("Invalid file")
·解釋:try用於(yu) 執行可能引發異常的代碼,except用於(yu) 捕獲並處理異常。
如果你不知道太多的exception可以這樣寫(xie)
defdivision(firstNumber, secondNumber):
try:
myAnswer = firstNumber // secondNumber
print('Answer ', myAnswer)
except:
print('Divide by zero')
division(12,3)
division(10,0)
9.冒泡排序(Bubble Sort):
以下為(wei) 非efficient 的排序:
·解釋:冒泡排序算法通過不斷比較和交換相鄰元素,逐步將最大(或最小)元素“冒泡”到列表的一端,從(cong) 而完成排序。
10.搜索(二分查找):
def binary_search(data_to_find:int)->int:
first=0
last=len(data_stored)-1 # 修正原始代碼的索引越界風險
# 主循環(保持左閉右閉區間)
whilefirst<=last:
mid=(first+last)//2 # 防溢出寫(xie) 法:first+(last-first)//2
# 三路比較邏輯
if data_stored[mid]==data_to_find:
returnmid # 精確命中
elif data_stored[mid]>data_to_find:
last=mid-1 # 收縮右邊界
else:
first=mid+1 # 收縮左邊界
return-1 # 搜索空間耗盡未找到
·解釋:二分查找通過反複將搜索區間一分為(wei) 二來查找元素,直到找到目標元素或確定其不存在。
11.文件讀取:
File =open(FileName,'r')
For line in file:
DataRead =line.strip()
File.close()
·解釋:open()函數用於(yu) 打開文件,'r'表示隻讀模式,.read()方法讀取文件的全部內(nei) 容,.strip()去掉前後的空白字符。
12.文件讀取:
File =open(FileName,'r')
For line in file:
DataRead = line.strip()
File.close()
strip():去除首尾空格、換行符、製表符等
更多知識點在P4視頻錄播課裏:掃描二維碼可以查看目錄。
評論已經被關(guan) 閉。