Glaxy 发表于 2020-3-3 12:07:38

程序运行不了

def meun():
    print('''====================================
1)添加学生信息                           
2)查找学生信息                  
3)删除学生信息                                                      
4)显示所有学生的信息            
5)单科排名(语文)         
6)单科排名(数学)         
7)总分排名         
8)保存学生信息到文件(students.txt)      
9)从文件中读取数据(students.txt)      
退出:其他任意按键<回车>
=====================================''')

#M=[]
#添加函数
def add():
    m={}
    while True:
      N1=input('请输入学生姓名:')
      if not N1:   # 名字为空 跳出循环
            break
      N2=input('请输入学生性别:')
      N3=input('请输入学生年龄:')
      N4=input('请输入学生语文成绩:')
      N5=input('请输入学生数学成绩:')
      m={'姓名':N1,'性别':N2,'年龄':N3,'语文成绩':N4,'数学成绩':N5}
      M.append(m)

#显示函数      
def show():
    print('姓名','性别'.center(6),'年龄'.center(4),'语文成绩'.center(4),'数学成绩')
    for i in M:
      print(i.get('姓名'),i.get('性别').center(3),i.get('年龄').center(8),i.get('语文成绩').center(10),i.get('数学成绩'))

#删除函数
def del_():
    d=input('请输入删除的学生名字:')
    for i in M:
      if d == i['姓名']:
            M.remove(i)
            
#查找函数
def find_():
    f=input('请输入要查找的学生姓名:')
    for i in M:
      if f == i['姓名']:
            print('姓名','性别'.center(6),'年龄'.center(4),'语文成绩'.center(4),'数学成绩')
            print(i.get('姓名'),i.get('性别').center(3),i.get('年龄').center(8),i.get('语文成绩').center(10),i.get('数学成绩'))
            
#单科排名函数(高—低)
def score():
    print("按学生%s高-低显示"%X)
    print('姓名','性别'.center(6),'年龄'.center(4),'语文成绩'.center(4),'数学成绩')
    s=sorted(M,key=lambda i:int(i),reverse=True)
    for i in s:
      print(i.get('姓名'),i.get('性别').center(3),i.get('年龄').center(8),i.get('语文成绩').center(10),i.get('数学成绩'))
      
#总分排名函数(高—低)      
def add_score():
    print("按学生总分高-低显示")
    print('姓名','性别'.center(6),'年龄'.center(4),'语文成绩'.center(4),'数学成绩','总分')
    s=sorted(M,key=lambda i:int(i['语文成绩'])+int(i['数学成绩']),reverse=True)
    for i in s:
      print(i.get('姓名'),i.get('性别').center(3),i.get('年龄').center(8),i.get('语文成绩').center(10),i.get('数学成绩'),str(int(i['语文成绩'])+int(i['数学成绩'])).center(10))

#保存文件函数
def save():
    k=open("students.txt",'w')
    for i in M:
      k.write(str(i)+"\n")
    k.close()
#主函数
def main():
    M=[]
    meun()
    x=input('请输入操作数:')
    while True:
      if x == 1:
            add()
      elif x == 2:
            find_()
      elif x == 3:
            del_()
      elif x == 4:
            show()
      elif x == 5:
            score(X='语文成绩')
      elif x == 6:
            score(X='数学成绩')
      elif x == 7:
            add_score()
      elif x == 8:
            save()
main()

一个账号 发表于 2020-3-3 12:09:14

有没有报错信息?是逻辑错误吗?(我懒得运行)

qiuyouzhi 发表于 2020-3-3 12:14:12

两种解决方案:
1,input获取的结果是字符串,把后面所有if条件里的数字改成'1','2'这个样子
2,x = int(input("请输入操作数:"))
页: [1]
查看完整版本: 程序运行不了