文件“in.txt”中存储了学生的姓名和成绩,每个人的姓名成绩放在一行,中间用空格隔开,从文件读取数据后,存入字典,姓名作为字典的键,成绩作为字典的值。然后输入姓名,查询相应的成绩,查不到,显示“未找到”
时间: 2024-01-01 08:05:25 浏览: 29
好的,我会帮你解决这个问题。
你可以使用Python的文件操作和字典来完成这个任务。具体的代码如下:
```python
# 读取文件内容,存入字典
scores = {}
with open('in.txt', 'r') as f:
for line in f:
name, score = line.strip().split()
scores[name] = int(score)
# 查询成绩
name = input("请输入姓名:")
if name in scores:
print(f"{name}的成绩是:{scores[name]}")
else:
print("未找到")
```
在这个代码中,首先打开文件,并逐行读取文件内容,将每个人的姓名和成绩存入字典中。然后,通过输入姓名来查询相应的成绩,如果找到了,就输出对应的成绩,否则输出“未找到”。
相关问题
用python编写文件c:\python\grades.txt中存储某班学生的学号、姓名和3门课程成绩,每位学生的信息放在一行,不同字段之间用空格隔开,形式如下: 学号 姓名 计算机 英语 体育
可以使用Python中的文件操作来读取和处理该文件。具体步骤如下:
1. 打开文件,使用open函数,文件模式为只读('r')。
2. 循环读取文件中的每一行,使用readline函数。
3. 对于每一行,使用split函数将其分割成学号、姓名、计算机成绩、英语成绩和体育成绩五个字段,字段之间用空格隔开。
4. 将字段转换为相应的数据类型,如学号为字符串,计算机、英语和体育成绩为整数。
5. 对于每个学生,可以将其信息存储为一个字典,键为学号,值为一个包含姓名和三门成绩的列表。
6. 将所有学生信息存储在一个字典中,以学号为键,学生信息为值。
7. 关闭文件。
下面是一个示例代码:
```python
# 打开文件
with open('c:\\python\\grades.txt', 'r') as f:
# 初始化学生信息字典
students = {}
# 循环读取每一行
for line in f.readlines():
# 分割每一行,得到学号、姓名和三门成绩
fields = line.split()
# 转换学号为字符串
id = str(fields[0])
# 转换计算机、英语和体育成绩为整数
computer = int(fields[2])
english = int(fields[3])
pe = int(fields[4])
# 存储学生信息到字典中
students[id] = [fields[1], computer, english, pe]
# 输出所有学生信息
for id, info in students.items():
print(f"{id}: {info[0]}, {info[1]}, {info[2]}, {info[3]}")
```
该代码将打印出所有学生的信息,格式为学号、姓名、计算机成绩、英语成绩和体育成绩。你可以根据需要对输出进行格式化。
将一组学生的信息(姓名、语文成绩、数学成绩、英语成绩)写入到文件score.txt中,一行存储一个学生的信息,各字段间以逗号分隔。然后读取文件中内容计算每个学生的平均分,将结果(姓名,平均成绩)写入到文件result.txt中。
以下是 Python 代码实现:
```python
# 写入学生信息到文件
with open("score.txt", "w") as f:
f.write("张三,90,85,92\n")
f.write("李四,80,92,87\n")
f.write("王五,70,75,80\n")
# 读取文件中内容并计算平均分
with open("score.txt", "r") as f:
lines = f.readlines()
with open("result.txt", "w") as fw:
for line in lines:
data = line.strip().split(",")
name = data[0]
score_sum = 0
for i in range(1, 4):
score_sum += int(data[i])
avg_score = round(score_sum / 3, 2)
fw.write(name + "," + str(avg_score) + "\n")
```
以上代码中,首先使用 `with open("score.txt", "w") as f` 打开文件并写入学生信息。每个学生的信息用逗号分隔,并且每个学生的信息占一行。
然后使用 `with open("score.txt", "r") as f` 打开文件并读取内容。使用 `readlines()` 方法将文件内容按行读取为一个列表,然后遍历列表中的每一行,依次计算每个学生的平均分。计算平均分时,使用 `strip()` 方法去除字符串前后的空格,然后使用 `split(",")` 方法将字符串按逗号分隔为一个列表,再依次取出姓名和语文、数学、英语成绩,并将成绩转换为整数类型求和。最后除以 3 并使用 `round()` 方法保留两位小数得到平均分。
最后使用 `with open("result.txt", "w") as fw` 打开文件并写入每个学生的姓名和平均分。每个学生的信息占一行,并用逗号分隔。
阅读全文