请大家们看一下 为什么录入的信息录不到TXT文件里面

class Student:
def init(self, name, num, age,Chinese,Math,english,sum,agv):
self.name = name
self.num = num
self.age = age
self.english = english
self.Chinese = Chinese
self.Mach = Math
self.sum = sum
self.avg = agv

def __str__(self):
    return '姓名:{} 学号:{} 年龄:{} 语文成绩:{} 英语成绩:{} 数学成绩:{} 总分:{} 平均分{}'.format(self.name, self.num, self.age, self.Chinese,self.Mach,self.english,self.sum, self.avg)

班级类

class Class:
global get_stu

def __init__(self, name):
    self.name = name
    self.stu_list = []
    self.stu_dict = {}

# 添加学生
def add_stu(self, stu):
    self.stu_list.append(stu)
    self.stu_dict[stu.num] = stu
    with open('Studen.txt', 'w+', encoding='utf-8') as f:
        for i in add_stu:
           f.write('{} {} {} {} {} {} {} {}\n'.format(i['name'], i['num'], i['age'], i['Chinses'],i['Mach'],i['english'],i['sum'],i['evg']))

# 删除学生
def del_stu(self, num):
    # 从字典中弹出并删除
    s = self.stu_dict.pop(num)
    # 从列表中删除
    self.stu_list.remove(s)

# 学生排序
def sort_stu(self, key=None, reverse=False):
    self.stu_list.sort(key=key, reverse=reverse)

# 查找学生
def get_stu(self, num):
    return self.stu_dict.get(num)

# 展示学生信息
def show_stu(self):
    for s in self.stu_list:
        print(s)

创建班级对象

MyClass = Class('19认知1班')

def ShowUI():
print("*" * 50)
print("1.添加学生")
print("2.删除学生")
print("3.查看学生")
print("4.查找学生")
print("5.按照成绩排序")

while True:
try:
ShowUI()
key = int(input("请输入功能:"))
print("*" * 50)
if key in range(0, 6):
if key == 1:
print("1.添加学生信息:")
name = input("姓名:")
num = int(input("学号:"))
age = int(input("年龄:"))
Chinese = int(input("语文成绩:"))
Math = int(input("数学成绩:"))
english = int(input("英语成绩:"))
sum = Chinese + Math + english
avg = sum/3
stu = Student(name, num, age, Chinese,Math,english,sum,avg)
MyClass.add_stu(stu)
elif key == 2:
print("2.删除学生信息:")
num = int(input("请输入学号(删除):"))
MyClass.del_stu(num)
elif key == 3:
print("3.学生列表:")
MyClass.show_stu()
elif key == 4:
print("4.查找学生")
num = int(input("请输入学号(查找):"))
s = MyClass.get_stu(num)
print(s)
else:
print("5.按条件排序,请选择数字来选择条件(1:按照语文分数排列,2:按照数学分数排列,3:按照英语分数排列,"
"4:按照年龄排列,5:按照学号排列,6:按照平均分排列,7:按照总分排列)")
px = int(input("请输入排序条件:"))
try:
if px == 1:
MyClass.sort_stu(key=lambda s: s.Chinese, reverse=True) # 按照语文分数排列
MyClass.show_stu()
elif px == 2:
MyClass.sort_stu(key=lambda s: s.Math, reverse=True) # 按照数学排列
MyClass.show_stu()
elif px == 3:
MyClass.sort_stu(key=lambda s: s.english, reverse=True) # 按照英语排列
MyClass.show_stu()
elif px == 4:
MyClass.sort_stu(key=lambda s: s.age, reverse=True) # 按照年龄排列
MyClass.show_stu()
elif px == 5:
MyClass.sort_stu(key=lambda s: s.num, reverse=True) # 按照学号排列
MyClass.show_stu()
elif px == 6:
MyClass.sort_stu(key=lambda s: s.avg, reverse=True) # 按照平均分排列
MyClass.show_stu()
elif px == 7:
MyClass.sort_stu(key=lambda s: s.sum, reverse=True) # 按照总分分排列
MyClass.show_stu()
except:
print("不存在此条件,您的输入有误")
else:
print("输入错误!")
except:
print("非法输入")

代码排版有些乱,大概看了一下

img

这个 add_stu 应该没有数据,add_stu 是个函数,不是个可遍历的变量。所以就没有写入。

按你的思路,应该是每次保存一个学生信息吧?
类似这样的写法

with open('Studen.txt', 'w+', encoding='utf-8') as f:
    f.write('{} {} {} {} {} {} {}'.format(stu.name ,stu.age ..... )