由于P2考试使用的是伪代码,很多同学找到P4时对python代码不熟悉,因此我特地总结了P4卷需要用到的python代码要点。
1.全局变量:
示例:global DataStored
global关键字用于声明一个全局变量,使其在函数内外都可以访问和修改。
·global时不能在global同一行赋值
·global在各个函数里如果需要用到,则每个函数都要global一遍
2.输入处理:
NumberItems = int(input("How many numbers will you enter?"))
input()函数用于获取用户输入,返回的是字符串类型。如果需要进行数值运算,需要使用int()将其转换为整数。
输入时做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循环用于遍历序列或范围。range(start, stop)用于生成一系列数值。
·while循环:
owhile Valid == False:
owhile循环在条件为True时不断执行,直到条件变为False。
虽然break可以中途退出循环,但是在P4考试中最好不要用,纵观所有的markscheme,都没有用到break语句
4.函数:
·定义函数:
defInitialise():
globalDataStored
globalNumberItems
使用def关键字定义函数,后跟函数名和括号。函数中的代码在调用时执行。
·返回值:
o return MidValue
o解释:return语句用于返回函数的值。切记和print语句区分开!!!
比如以下真题里,很多人以为return 就是print,实际这道题既要求print,也要求return.
5.条件判断(if-else):
ifNumberItems >0andNumberItems <21:
Valid =True
解释:if语句根据条件是否为真来执行相应的代码。可以使用else语句处理条件不成立时的情况。
6.列表:
DataStored=[]
·DataStored.append(int(input("Enter number")))
·解释:列表是可变的序列,用于存储多个元素。.append()方法将元素添加到列表的末尾。
往数组里添加内容什么时候用append ,什么时候采用数组+下标的方式
场景1:动态扩展列表(优先用append()
)
p4没有要求初始化,我们就不初始化,不初始化怎么定义数组呢,
比如: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):
·类定义:(代码往左拉可以看到备注)
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关键字定义,__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):
"""判断是否为常绿树种"""
returnself.__Evergreen
# Setter方法群(含数据校验)
def SetHeightGrowth(self, HGrowth):
"""设置年生长高度(必须>=0)"""
ifHGrowth >=0:
self.__HeightGrowth = HGrowth
else:
raise ValueError("年生长高度不能为负数")
def SetMaxHeight(self, MaxH):
"""设置最大生长高度(必须>0)"""
ifMaxH >0:
self.__MaxHeight = MaxH
else:
raise ValueError("最大高度必须大于0米")
8.异常处理:
try:
File =open("Trees.txt")
exceptIOError:
print("Invalid file")
·解释:try用于执行可能引发异常的代码,except用于捕获并处理异常。
如果你不知道太多的exception可以这样写
defdivision(firstNumber, secondNumber):
try:
myAnswer = firstNumber // secondNumber
print('Answer ', myAnswer)
except:
print('Divide by zero')
division(12,3)
division(10,0)
9.冒泡排序(Bubble Sort):
以下为非efficient 的排序:
·解释:冒泡排序算法通过不断比较和交换相邻元素,逐步将最大(或最小)元素“冒泡”到列表的一端,从而完成排序。
10.搜索(二分查找):
def binary_search(data_to_find:int)->int:
first=0
last=len(data_stored)-1 # 修正原始代码的索引越界风险
# 主循环(保持左闭右闭区间)
whilefirst<=last:
mid=(first+last)//2 # 防溢出写法: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 # 搜索空间耗尽未找到
·解释:二分查找通过反复将搜索区间一分为二来查找元素,直到找到目标元素或确定其不存在。
11.文件读取:
File =open(FileName,'r')
For line in file:
DataRead =line.strip()
File.close()
·解释:open()函数用于打开文件,'r'表示只读模式,.read()方法读取文件的全部内容,.strip()去掉前后的空白字符。
12.文件读取:
File =open(FileName,'r')
For line in file:
DataRead = line.strip()
File.close()
strip():去除首尾空格、换行符、制表符等
更多知识点在P4视频录播课里:扫描二维码可以查看目录。