自拟第一次点名,第二次点名,全班名字文件,分别完成以下问题使用demo.py可以将文件中的内容读取出来,根据读取出来的内容,完成如下操作: 1.1 将全班同学的姓名和学号提取出来,分别保存在name和Id列表变量中; 1.2 使用1.1中的name和Id列表中姓名和学号创建一个字典,字典名为info,其中键为Id,值为name。提示:如info空字典,则可以直接使用info[0]=’zhangsan’即可向字典中添加一个键为0,值为’zhangsan’的元素; 1.3 使用循环依次打印出info里面的姓名信息; 1.4 使用1.1相同的办法,将第一次点名和第二次点名出勤的同学姓名保存在列表first_name和second_name中; 1.5 已知第一次答到的同学和第二次答到的同学里面有重复答到的,请计算出两次答到的同学占全班同学的比例; 1.6 (选做)打印出迟到,早退和旷课同学的名单。
时间: 2024-02-05 15:13:00 浏览: 50
Demo.rar_Android点名系统_DEMO_随机抽取_随机点名
以下是代码实现,假设全班名字文件为"students.txt":
```python
# 1.1 将全班同学的姓名和学号提取出来,分别保存在name和Id列表变量中
name = []
Id = []
with open("students.txt", "r") as f:
for line in f:
line = line.strip().split()
name.append(line[0])
Id.append(line[1])
# 1.2 使用1.1中的name和Id列表中姓名和学号创建一个字典,字典名为info,其中键为Id,值为name
info = {}
for i in range(len(name)):
info[Id[i]] = name[i]
# 1.3 使用循环依次打印出info里面的姓名信息
for key in info:
print(info[key])
# 1.4 使用1.1相同的办法,将第一次点名和第二次点名出勤的同学姓名保存在列表first_name和second_name中
first_name = []
second_name = []
with open("first_call.txt", "r") as f:
for line in f:
line = line.strip()
first_name.append(line)
with open("second_call.txt", "r") as f:
for line in f:
line = line.strip()
second_name.append(line)
# 1.5 已知第一次答到的同学和第二次答到的同学里面有重复答到的,请计算出两次答到的同学占全班同学的比例
both_call = set(first_name) & set(second_name)
ratio = len(both_call) / len(name)
print("两次答到的同学占全班同学的比例为:{:.2f}%".format(ratio * 100))
# 1.6 打印出迟到,早退和旷课同学的名单
late_name = []
early_name = []
absent_name = []
with open("late.txt", "r") as f:
for line in f:
line = line.strip()
late_name.append(line)
with open("early.txt", "r") as f:
for line in f:
line = line.strip()
early_name.append(line)
with open("absent.txt", "r") as f:
for line in f:
line = line.strip()
absent_name.append(line)
print("迟到的同学名单:", late_name)
print("早退的同学名单:", early_name)
print("旷课的同学名单:", absent_name)
```
注意:在实际应用中,需要根据具体情况调整文件读取的方式和格式。
阅读全文