使用while True在键盘中循环输入学生的姓名,以及数学、语文、英语和计算机四门课程成绩(用逗号隔开),直到遇到字母Q,将输入的每行数据写入到1.csv文件中。
时间: 2023-07-16 12:16:04 浏览: 57
以下是代码实现:
```python
import csv
with open('1.csv', mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['姓名', '数学', '语文', '英语', '计算机']) # 写入表头
while True:
data = input('请输入学生姓名和四门课程成绩(用逗号隔开),输入Q退出:')
if data.lower() == 'q':
break
data_list = data.split(',')
writer.writerow(data_list) # 写入数据
```
运行程序后,会不断循环等待用户输入学生的姓名和四门课程成绩(用逗号隔开),输入Q后循环结束。每次输入数据后,都会将其写入到1.csv文件中。需要注意的是,写入数据时要将数据转成列表形式,再使用writerow方法写入到csv文件中。
相关问题
从1.csv中读取学生成绩数据,求每个学生的平均成绩,并将学生的姓名,各科成绩,平均成绩重新写入1.csv。 若1.csv不存在,则先创建该文件:使用while True在键盘中循环输入学生的姓名,以及数学、语文、英语和计算机四门课程成绩(用逗号隔开),直到遇到字母Q,将输入的每行数据写入到1.csv文件中。
以下是Python代码实现:
```python
import csv
import os
filename = '1.csv'
# 如果文件不存在,则创建文件并写入表头
if not os.path.exists(filename):
with open(filename, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['姓名', '数学', '语文', '英语', '计算机', '平均成绩'])
# 读取学生成绩数据,并计算平均成绩
with open(filename, 'r', newline='') as f:
reader = csv.reader(f)
rows = list(reader)
for i in range(1, len(rows)):
row = rows[i]
name = row[0]
scores = list(map(int, row[1:5]))
avg_score = sum(scores) / len(scores)
row.append(avg_score)
# 将学生的姓名、各科成绩和平均成绩写入1.csv文件
while True:
data = input('请输入学生姓名和各科成绩(用逗号隔开),输入Q退出:')
if data.lower() == 'q':
break
data = data.split(',')
name = data[0]
scores = list(map(int, data[1:]))
avg_score = sum(scores) / len(scores)
scores.append(avg_score)
with open(filename, 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow([name] + scores)
```
以上代码中,首先判断文件是否存在,如果不存在则创建文件并写入表头。然后读取文件中的学生成绩数据,并计算每个学生的平均成绩。接着使用while True循环,持续从键盘中读取学生姓名和各科成绩,并将其写入1.csv文件中。最后使用csv.writer将数据写入文件中。
编写程序,用户输入学号、姓名和成绩(用逗号隔开),按照降序输出学号、姓名和平均成绩。
好的,可以使用 Python 编写程序来实现。代码如下:
```python
# 定义一个空列表,用于存储学生信息
students = []
# 循环读取用户输入的学生信息,直到用户输入空行为止
while True:
# 读取用户输入的一行数据
line = input("请输入学生信息(学号,姓名,成绩,用逗号隔开):")
# 如果用户输入空行,则结束循环
if not line:
break
# 将输入的数据按逗号分隔,并转换为列表
data = line.split(",")
# 将学号、姓名和成绩组成一个元组,并添加到学生列表中
students.append((data[0], data[1], float(data[2])))
# 对学生列表进行排序,按照平均成绩降序排列
students.sort(key=lambda x: x[2], reverse=True)
# 输出排序后的学生信息
for student in students:
# 计算平均成绩
avg_score = round(sum(student[2:]) / len(student[2:]), 2)
# 输出学号、姓名和平均成绩
print("{}\t{}\t{}".format(student[0], student[1], avg_score))
```
使用方法:
1. 将上面的代码复制到 Python 环境中,保存为 `sort_students.py` 文件。
2. 在命令行中执行 `python sort_students.py` 命令。
3. 按照提示输入学生信息,每行一个,直到输入空行为止。
4. 程序会按照平均成绩降序输出学号、姓名和平均成绩。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)