李华明Himi 游戏开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较完整的学生成绩管理系统,需要涉及到文件读写、排序、查找等多个方面。下面是我给出的一个解决方案,仅供参考。 1. 实现对两个文件数据进行合并,生成新文件3.txt 首先,我们需要读取文件1和文件2中的数据,然后将它们合并到一个新文件3中。这可以通过以下代码实现: ```python # 读取文件1中的数据 with open('1.txt', 'r') as f: data1 = f.readlines() # 读取文件2中的数据 with open('2.txt', 'r') as f: data2 = f.readlines() # 合并数据 data = data1 + data2 # 将数据写入新文件3中 with open('3.txt', 'w') as f: f.writelines(data) ``` 2. 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt 接下来,我们需要从文件3中抽取出有补考的学生信息,并保存到一个新文件4中。假设补考的分数线是60分,可以通过以下代码实现: ```python # 读取文件3中的数据 with open('3.txt', 'r') as f: data = f.readlines() # 抽取有补考的学生信息 data_with_makeup_exam = [] for line in data: line = line.strip().split() name, _, chinese, math, english = line chinese, math, english = int(chinese), int(math), int(english) if chinese < 60 or math < 60 or english < 60: data_with_makeup_exam.append(line) # 将有补考的学生信息写入新文件4中 with open('4.txt', 'w') as f: for line in data_with_makeup_exam: f.write(' '.join(line) + '\n') ``` 3. 合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现) 现在,我们需要将文件3中的数据按照总分降序排列,可以采用快速排序和归并排序两种方法实现。以下是示例代码: ```python # 定义快速排序函数 def quick_sort(data): if len(data) <= 1: return data pivot = data[0] left = [x for x in data[1:] if int(x.split()[2]) + int(x.split()[3]) + int(x.split()[4]) >= int(pivot.split()[2]) + int(pivot.split()[3]) + int(pivot.split()[4])] right = [x for x in data[1:] if int(x.split()[2]) + int(x.split()[3]) + int(x.split()[4]) < int(pivot.split()[2]) + int(pivot.split()[3]) + int(pivot.split()[4])] return quick_sort(left) + [pivot] + quick_sort(right) # 定义归并排序函数 def merge_sort(data): if len(data) <= 1: return data mid = len(data) // 2 left = merge_sort(data[:mid]) right = merge_sort(data[mid:]) i, j = 0, 0 res = [] while i < len(left) and j < len(right): if int(left[i].split()[2]) + int(left[i].split()[3]) + int(left[i].split()[4]) >= int(right[j].split()[2]) + int(right[j].split()[3]) + int(right[j].split()[4]): res.append(left[i]) i += 1 else: res.append(right[j]) j += 1 res += left[i:] res += right[j:] return res # 读取文件3中的数据 with open('3.txt', 'r') as f: data = f.readlines() # 使用快速排序对数据进行排序 sorted_data_quick = quick_sort(data) # 使用归并排序对数据进行排序 sorted_data_merge = merge_sort(data) # 将排序后的数据写入新文件3_sorted_quick.txt和3_sorted_merge.txt中 with open('3_sorted_quick.txt', 'w') as f: f.writelines(sorted_data_quick) with open('3_sorted_merge.txt', 'w') as f: f.writelines(sorted_data_merge) ``` 4. 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现) 最后,我们需要实现对文件3中的数据进行查找,根据学生姓名查找学生信息。可以采用线性查找和二分查找两种方法,以下是示例代码: ```python # 定义线性查找函数 def linear_search(data, name): for line in data: line = line.strip().split() if line[0] == name: return line return None # 定义二分查找函数 def binary_search(data, name): left, right = 0, len(data) - 1 while left <= right: mid = (left + right) // 2 line = data[mid].strip().split() if line[0] == name: return line elif line[0] < name: left = mid + 1 else: right = mid - 1 return None # 读取文件3中的数据 with open('3.txt', 'r') as f: data = f.readlines() # 使用线性查找查找学生信息 name = input('请输入要查找的学生姓名:') result_linear = linear_search(data, name) if result_linear: print(' '.join(result_linear)) else: print('查无此人') # 使用二分查找查找学生信息 data_sorted = merge_sort(data) name = input('请输入要查找的学生姓名:') result_binary = binary_search(data_sorted, name) if result_binary: print(' '.join(result_binary)) else: print('查无此人') ``` 以上是一个比较完整的解决方案,其中涉及到文件读写、排序、查找等多个方面。需要注意的是,这只是一个示例代码,可能还需要根据实际情况进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值