首先创建一个顺序表,我一直很少用python中的类,都是直接构造函数,或者是连函数都没有,之间用轮子,一直是一个初学者的状态,我也想自己从基础学起!!!
第一个类 顺序表。
class SequenceList:
def __init__(self):
self.SeqList = []
def CreateSeqList(self):
print("请输入数据后按回车键确认,若想结束请输入#")
element = input("请输入元素: ")
while element != '#':
self.SeqList.append(element)
element = input("请输入元素: ")
# 调用示例
seq_list = SequenceList()
seq_list.CreateSeqList()
print("顺序表内容:", seq_list.SeqList)
查找表中的元素
def FindElement(self):
key=input("请输入您想查询的元素:")
if key in self.SeqList:
ipos = self.SeqList.index(key)#ipos index position 索引位置
print("您查询的元素是第",ipos,"位:",key)
else:
print("未查询到相关元素")
# 调用示例
seq_list = SequenceList()
seq_list.CreateSeqList()
seq_list.FindElement()
插入数据
#方法1
def InsertElement(self):
ipos_user = int(input("请输入你想插入的位置: "))
self.SeqList.append(None) # 在末尾添加一个 None,以便后续向后移动元素
if ipos_user > len(self.SeqList):
print("超出索引范围,当前的索引范围是", len(self.SeqList))
return
element_user = input("请输入您想插入的要素: ")
for i in range(len(self.SeqList) - 1, ipos_user, -1):
self.SeqList[i] = self.SeqList[i - 1] # 向后移动元素
self.SeqList[ipos_user] = element_user
#方法2
def InsertElement(self):
ipos =int(input("请输入你想插入的位置: "))
element = input("请输入您想插入的要素: ")
self.SeqList.insert(ipos,element)
# 调用示例
seq_list = SequenceList()#初始化之后其实是打开一个空间,所以print(seq_list)得到的是一个地址
seq_list.CreateSeqList()
seq_list.InsertElement()
print(seq_list.SeqList)
删除指定位置中的元素
def DeleteElement(self):
ipos = int(input("请输入你想删除的位置: "))
self.SeqList.remove(self.SeqList[ipos])
#实现删除指定位置的元素的实质是元素位置的移动,可以将指定位置元素之前的元素后移,也可以将指定位置元素之后的元素前移。
# 调用示例
seq_list = SequenceList()#初始化之后其实是打开一个空间,所以print(seq_list)得到的是一个地址
seq_list.CreateSeqList()
seq_list.DeleteElement()
print(seq_list.SeqList)
遍历表中的元素
def TraverseElement(self):
for element in self.SeqList:
print(element)
拓展,创建一个二维表,并且添加表头
class Table:
def __init__(self, num_rows, num_columns):
self.table = []
# 添加表头
header_row = ["Header_" + str(i) for i in range(num_columns)]
self.table.append(header_row)
# 创建二维表格
for _ in range(num_rows):
#for _ in range(num_rows-1): 表示我们在循环中不需要使用循环变量的值,我们只是想循环 num_rows 次。
row = [None] * num_columns
self.table.append(row)
def display(self):
for row in self.table:
print(row)
# 创建一个 3x4 的二维表
table = Table(3, 4)
table.display()
#运行结果
['Header_0', 'Header_1', 'Header_2', 'Header_3']
[None, None, None, None]
[None, None, None, None]
[None, None, None, None]
给表中添加内容
class Table:
def __init__(self, num_rows, num_columns):
self.table = []
# 添加表头
header_row = ["Header_" + str(i) for i in range(num_columns)]
self.table.append(header_row)
# 创建二维表格
for _ in range(num_rows-1):
row = [None] * num_columns
self.table.append(row)
def display(self):
for row in self.table:
print(row)
def set_value(self, row_index, column_index, value):
if 0 <= row_index < len(self.table) and 0 <= column_index < len(self.table[0]):
self.table[row_index][column_index] = value
else:
print("Invalid row or column index")
# 创建一个 3x4 的二维表
table = Table(3, 4)
table.display()
# 向表格中添加内容
table.set_value(1, 2, "Content")
table.set_value(2, 3, 10)
print("添加内容后的表格:")
table.display()
题目
学生姓名 | 数学成绩 | 英语成绩 | 物理成绩 |
---|---|---|---|
张三 | 85 | 90 | 88 |
李四 | 78 | 85 | 92 |
王五 | 90 | 92 | 85 |
计算班级各科成绩的平均分
class Table:
def __init__(self, num_rows, num_columns):
self.table = []
# 添加表头
header_row = ["Header_" + str(i) for i in range(num_columns)]
self.table.append(header_row)
# 创建二维表格
for _ in range(num_rows-1):
row = [None] * num_columns
self.table.append(row)
def display(self):
for row in self.table:
print(row)
def set_value(self, row_index, column_index, value):
if 0 <= row_index < len(self.table) and 0 <= column_index < len(self.table[0]):
self.table[row_index][column_index] = value
else:
print("Invalid row or column index")
def __getitem__(self, index):
return self.table[index]
#实际上这一行是一个递归操作,递归!!!
#另一种根据根据索引设置值的方法
def __setitem__(self, index, value):
row_index, column_index = index
self.table[row_index][column_index] = value
if __name__ == '__main__':
table = Table(4, 4)
table.set_value(0, 0, "学生姓名")
table.set_value(0, 1, "数学成绩")
table.set_value(0, 2, "英语成绩")
table.set_value(0, 3, "物理成绩")
table.set_value(1, 0, "张三")
table.set_value(1, 1, 85)
table.set_value(1, 2, 33)
table.set_value(1, 3, 88)
table.set_value(2, 0, "李四")
table.set_value(2, 1, 78)
table.set_value(2, 2, 85)
table.set_value(2, 3, 92)
table.set_value(3, 0, "王五")
table.set_value(3, 1, 90)
table.set_value(3, 2, 92)
table.set_value(3, 3, 85)
table.display()
print(table[1][2])
table[1][2] = 90
table.display()
print("数学成绩的平均值是",int(table[1][1]+table[2][1]+table[3][1])/3)
#运行结果
['学生姓名', '数学成绩', '英语成绩', '物理成绩']
['张三', 85, 33, 88]
['李四', 78, 85, 92]
['王五', 90, 92, 85]
33
['学生姓名', '数学成绩', '英语成绩', '物理成绩']
['张三', 85, 90, 88]
['李四', 78, 85, 92]
['王五', 90, 92, 85]
数学成绩的平均值是 84.33333333333333