首页 > 编程语言 >学习笔记:python学生系统

学习笔记:python学生系统

时间:2022-10-24 13:12:15浏览次数:48  
标签:python 笔记 学生 学习 信息 eval print input 输入

python学习

学生管理系统问题
l = {}
s = {}
end = True
print("欢迎使用学生信息管理系统!\n"
      "退出请按0\n"
      "加入学生信息请按1\n"
      "查询学生信息请按2\n"
      "删除学生信息请按3\n"
      "展示所有学生信息请按4")

while True:
      choice = input("下面请选择你的操作:")
      if choice == '1':
            n = str(input("\t请输入学生姓名:"))
            h = eval(input("\t请输入学生学号:"))
            y = eval(input("\t请输入学生年龄:"))
            for i in l.keys():
                  if h == i:
                        answer = input("该学生信息已经存在,请删除后重新填入。")
                        break
            else:
                  s['姓名'] = n
                  s['年龄'] = y
                  s['学号'] = h
                  print(f'\t{n}的信息已导入。')
                  l[h] = s
                  s = {}

      elif choice == '2':
            a = eval(input("\t请输入你要查询的学生学号:"))
            if l == {}:
                  print("\t系统中没有任何学生信息。")
            for t in l.keys():
                  if a == t:
                        print(l[a])
                        break
            else:
                  print("\t没有该学生的信息")

      elif choice == '3':
            a = eval(input("\t请输入你要删除的学生学号:"))
            t = l.copy()
            for i in t.keys():
                  if a == i:
                        del l[a]
                        print(f"\t该生信息已被删除")
                        break
            else:
                  print("\t此学号不存在.")

      elif choice == '4':
            x = []
            for i in l.keys():
                  x.append(i)
            x.sort()
            for j in x:
                  print(l[j])

      elif choice == '0':
            print("欢迎使用,下次再见。")
            break
      else:
            print("请输入正确的指令!")

具体代码如上

其中我遇到的问题有:如何对学生信息按照学号排列。

我想到运用字典的嵌套方法:将学号作为键,通过提取大字典l中的键

放进列表中运用sort()函数进行排序,再遍历列表,打印出学生信息。

但是,解决问题是遇到列表中无法对学号进行排序的问题。

最后我发现是在用户输入学号时,输入的学号是字符型,而不是整型,

从而无法实现,列表的排序。

还有一个问题:在查询学生信息时,即使存在学生信息也会输出“该生信息不存在。

                  s = {}

      elif choice == '2':
            a = eval(input("\t请输入你要查询的学生学号:"))
            if l == {}:
                  print("\t系统中没有任何学生信息。")
            for t in l.keys():
                  if a == t:
                        print(l[a])
            else:
                  print("该生信息不存在")

这串代码忽略了break,使得即使存在学生信息也会输出不存在。

总结

通过上面的问题,以后应该注意,用户输入的值的类型,以及循环的退出。

改进1

一个学生系统应当要能够储存学生的信息,而不是只能在一次运行中存储学生数据。

所以想要实现该操作应当要对代码进行改进。

这就需要再创建一个文件来存储学生信息。

通过学习,我了解到了以下方法

想法1:

利用json模块,利用json格式对学生信息字典进行存储,其实刚开始我的想法是通过文件读写方式进行存储与读写。但是存储与读写都为字符型,所以采用json模块。

但是json模块在读入学生信息的字典是会自动将字典的key转换为字符型,使我上面通过利用学号进行的操作无法实现。

所以还是采用文件的读写方式

想法2:

通过open()函数打开存储文件,分别通过文件的读写形式实现对学生信息的存储和读取。只需要注意对文件内容的去字符型就可以。

with open('student_information.py') as si:
      l = eval(si.read())
.......
with open('student_information.py','w') as si:
      si.write(f'{l}')

具体添加的代码如上.

还需要在读取的文件中加入一个空的字典,对l进行赋值操作。

改进2

输出学生信息包含在字典中不太美观。

所以应当使用字典的遍历输出学生信息。

但是python与c语言不同,每次输出学生的一个信息就自动换行,这不也不太好,所以需要掌握,python换行的操作

print("asda",end=' ')

其中end中的输入便是识别换行的符号,这样只有读到这个符号python才会自动换行。

改进3

用户输入常常会犯错,如果一直用if语句来判断用户是否输入错误,不太方便,但如果输入出错,程序又会报错,

所以我们采用try-except来避免程序报错具体如下。

            try:
                  h = eval(input("\t请输入学生学号:"))
                  n = str(input("\t请输入学生姓名:"))
                  y = eval(input("\t请输入学生年龄:"))
                  for i in l.keys():
                        if h == i:
                              answer = input("该学生信息已经存在,请删除后重新填入。")
                              break
                  else:
                        s['姓名'] = n
                        s['年龄'] = y
                        s['学号'] = h
                        print(f'\t{n}的信息已导入。')
                        l[h] = s
                        s = {}
            except:
                  print("请正确输入!")

标签:python,笔记,学生,学习,信息,eval,print,input,输入
From: https://www.cnblogs.com/102204216zxf/p/16821130.html

相关文章

  • 学习笔记:python杨辉三角
    python学习问题输出杨辉三角刚开始着手这题,我先是使用杨辉三角的公式,采用比较简洁的写法进行。defjc(x):r=1forkinrange(1,x+1):r=r*k......
  • 学习笔记:python统计单词数
    python学习问题:统计文章中某个单词出现的次数英文由空格分割开每个单词,所以我采用以下方法:a=str(input("请输入一段英文:"))a=a.lower()b=a.split("")c=str......
  • 学习笔记:python语句try
    python学习使用try在进行读取用户输入时,如果我们想读取一个整型,而用户进行了错误的输入,那么程序便会出错,或者当我们做商时,除数为0;这时便可以采用该代码块,来避免程序报错......
  • #打卡不停更# [gn+ninja学习 0x01]gn和ninja是什么.md
    [gn+ninja学习0x01]gn和ninja是什么OpenHarmony使用gn+ninja来维护开源项目的构建。之前没有接触过gn+ninja,是时候系统性的来学习下了。边学边记录下学习过程,希望对同样......
  • #冲刺创作新星# O了个H(OpenHarmony羊了个羊复刻学习)
    O了个H(OpenHarmony羊了个羊复刻学习)一、明确玩法演示视频:https://www.bilibili.com/video/BV1ig41127T3开源地址:https://gitee.com/cheng-wan-orz/olgh通过点击选择......
  • 单片机笔记
    数码管静态显示使用定时器的方法TCON——定时器控制寄存器的位分配(地址0x88,可位寻址)TMOD——定时器模式寄存器的位分配(地址0x89,不可位寻址)CPU时序有关知识......
  • python中的“and”、“or”运算规则
    #1、所有变量的位操作都是通过强制转换成bool实现#2、在没有括号的情况下,and优先级高于or#3、计算逻辑:"""xandy表示:ifxisfalse,thenx,elseyxory表......
  • 麒麟系统开发笔记(八):在国产麒麟系统上使用linuxdeployqt发布qt程序
    前言  在ubuntu上发布qt程序相对还好,使用脚本,但是在麒麟上发布的时候,因为银河麒麟等不同版本,使用脚本就不太兼容,同时为了实现直接点击应用可以启动应用的效果,使用linuxde......
  • chap4 循环结构、chap6 回顾数据类型和表达式 第一小组 学习总结
    chap4循环结构第一小组学习总结一、内容梳理c语言循环结构是指根据某一条件判断重复执行的语句,核心内容为循环控制表达式,如果表达式为真,则继续执行;否则,循环结束。c语......
  • Python基础
    1.Python的数据类型1.Numbers数字类型包括int(整型);bool(布尔类型);float(浮点型);complex(复数) 2. String字符串类型1.用单引号或者......