输入学生个人信息并写入到文件data.txt
时间: 2023-06-19 20:07:30 浏览: 76
好的,以下是Python代码实现:
``` python
# 从用户输入获取学生信息
name = input("请输入学生姓名:")
age = input("请输入学生年龄:")
gender = input("请输入学生性别:")
major = input("请输入学生专业:")
# 将学生信息写入文件data.txt
with open("data.txt", "a", encoding="utf-8") as f:
f.write(f"姓名:{name}\n年龄:{age}\n性别:{gender}\n专业:{major}\n")
```
以上代码会要求用户输入学生姓名、年龄、性别和专业,然后将这些信息写入到文件data.txt中。每个学生信息占用四行,分别是姓名、年龄、性别和专业。如果文件data.txt不存在,则会自动创建。如果文件已存在,则会在文件末尾追加新的学生信息。
相关问题
""" 输入学生个人信息并写入到文件data.txt中。 """ f.write("sno\tsname\tsage\n") stext = input() or "End" while stext != "End": stu = stext.split(",") stext = input() or "End" f.seek(0) print(f.read()) f.close()补充代码
完整代码如下:
```python
with open("data.txt", "w") as f:
f.write("sno\tsname\tsage\n")
stext = input() or "End"
while stext != "End":
stu = stext.split(",")
f.write("{},{},{}\n".format(stu[0], stu[1], stu[2]))
stext = input() or "End"
f.seek(0)
print(f.read())
```
这段代码会不断读入学生信息,每行信息包括学号、姓名、年龄,用逗号隔开。当输入"End"时,停止输入,将所有信息写入到文件"data.txt"中,并在最后输出文件内容。
其中,`with open("data.txt", "w") as f:` 会打开文件"data.txt",并将其赋值给变量f。由于使用了`with`语句,因此不需要手动关闭文件。
`f.write("sno\tsname\tsage\n")` 会先写入文件的表头,即学号、姓名、年龄三个字段的名称。
`stext = input() or "End"` 会读入一行输入,如果输入为空,则将stext赋值为"End"。
`while stext != "End":` 会进入一个循环,开始读入学生信息。每次读入一行信息后,使用`split()`函数将其分割成学号、姓名、年龄三个部分,并将这三个部分组合成一个字符串,使用逗号隔开,最后写入到文件中。
当输入"End"时,循环结束,使用`f.seek(0)`函数将文件指针移动到文件开头,使用`f.read()`函数读取整个文件内容,并输出到屏幕上。
最后,使用`f.close()`函数关闭文件。由于使用了`with`语句,因此不需要手动关闭文件。
为什么这段代码不对?""" 输入学生个人信息并写入到文件data.txt中。 """ f=open("data.txt","w") f.write("sno\tsname\tsage\n") stext = input() or "End" while stext != "End": stu = stext.split(",") f.write(" ",join(stu)+"\n") stext = input() or "End" f.seek(0) print(f.read()) f.close()
这段代码存在多个问题,需要进行修正才能正确地将学生信息写入到文件中。以下是对这个代码进行修正后的示例:
```python
# 打开文件并写入表头
with open("data.txt", "w") as f:
f.write("sno\tsname\tsage\n")
# 循环输入学生信息
stext = input() or "End"
while stext != "End":
stu = stext.split(",")
f.write("\t".join(stu) + "\n")
stext = input() or "End"
# 打开文件并输出内容
with open("data.txt", "r") as f:
print(f.read())
```
修正后的代码首先使用 `with` 语句打开文件,并在语句块中使用 `write()` 方法写入表头,即学生信息的列名。接着,代码使用 `input()` 函数循环读取用户输入的学生信息,如果输入的是 `End`,则退出循环。对于每个学生信息,代码使用 `split()` 方法将其按照逗号分隔成一个列表,并使用 `join()` 方法将列表中的元素用制表符连接成一个字符串,然后将其写入文件中。需要注意的是,这里使用的是制表符 `\t` 而不是空格。
输入学生信息完成后,代码使用 `with` 语句再次打开文件,并使用 `read()` 方法读取文件内容,最后使用 `print()` 函数输出文件内容到屏幕上。需要注意的是,在第一个 `with` 语句中已经完成了写入操作,所以在第二个 `with` 语句中不需要再次写入文件。
在修正后的代码中,使用了 `with` 语句来打开文件,这样可以自动关闭文件,避免资源泄漏。同时,使用了制表符来分隔学生信息,这样可以保证输出的内容对齐,更加美观。