鱼C论坛

 找回密码
 立即注册
查看: 663|回复: 12

[已解决]我想写这样一个代码操作

[复制链接]
发表于 2020-5-5 16:30:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想写这样一个代码操作:
1、每一个人都有自己对应的分数,输入名字就可以看到他所对应的分数了
2、可以通过更改对他的分数进行加减操作并更新,例如小白5分,我查找小白,然后+5就更新到10分了;
3、每次更新需要输入为什么加分或者减分,输入名字也可以查找看到他的所有加减分操作。

也不知道我有没有表达清楚,如果有听懂的大佬能给点思路嘛?我是个刚入Python过了一遍基础的小白,谢谢啦!
最佳答案
2020-5-5 17:18:47
简陋版
  1. cdic = {}
  2. ydic = {}
  3. print('欢迎使用学生分数管理程序!')
  4. while True:
  5.     print('1.增加学生')
  6.     print('2.查找学生')
  7.     print('3.删除学生')
  8.     print('4.更新学生')
  9.     print('5.退出程序')
  10.     do = int(input('请输入相关指令代码:'))
  11.     if do == 1:
  12.         while True:
  13.             name = input('请输入学生姓名:')
  14.             if name in cdic:
  15.                 if input('该学生已存在!是否重新编辑(y/n)?:') == 'y':
  16.                     del cdic[name]
  17.                 else:
  18.                     print('取消成功!')
  19.                     break
  20.             value = int(input('请输入学生分数:'))
  21.             cdic[name] = value
  22.             ydic[name] = '暂无记录!'
  23.             print('增加成功!')
  24.             break
  25.     if do == 2:
  26.         name = input('请输入学生姓名:')
  27.         try:
  28.             print('学生' + name + '的分数:' + str(cdic[name]))
  29.             print('分数记录:')
  30.             print(ydic[name])
  31.         except:
  32.             print('该学生不存在!')
  33.     if do == 3:
  34.         name = input('请输入学生姓名:')
  35.         try:
  36.             del cdic[name]
  37.             del ydic[name]
  38.             print('删除成功!')
  39.         except KeyError:
  40.             print('该学生不存在!')
  41.     if do == 4:
  42.         name = input('请输入学生姓名:')
  43.         try:
  44.             do = input('请输入需要对' + name + '分数进行的操作:')
  45.             if do[0] == '+':
  46.                 cdic[name] += int(do[0:])
  47.                 ydic[name] = do + ','
  48.             elif do[0] == '-':
  49.                 cdic[name] -= int(do[0:])
  50.                 ydic[name] = do + ','
  51.             else:
  52.                 print('输入不合法!')
  53.             tish = input('请输入操作理由:')
  54.             if ydic[name] != '暂无记录!':
  55.                 ydic[name] += tish
  56.             else:
  57.                 ydic[name] += tish,'\n'
  58.             print('操作成功!')
  59.         except KeyError as a:
  60.             print('该学生不存在!')
  61.     if do == 5:
  62.         print('感谢使用学生分数管理程序!')
  63.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-5 16:32:06 | 显示全部楼层
用字典
如果不会,那就用两个列表,一个存放名字,一个存放分数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 16:33:50 | 显示全部楼层
用字典吖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:15:59 From FishC Mobile | 显示全部楼层
要想带保存的,就得使用文件或者数据库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:18:47 | 显示全部楼层    本楼为最佳答案   
简陋版
  1. cdic = {}
  2. ydic = {}
  3. print('欢迎使用学生分数管理程序!')
  4. while True:
  5.     print('1.增加学生')
  6.     print('2.查找学生')
  7.     print('3.删除学生')
  8.     print('4.更新学生')
  9.     print('5.退出程序')
  10.     do = int(input('请输入相关指令代码:'))
  11.     if do == 1:
  12.         while True:
  13.             name = input('请输入学生姓名:')
  14.             if name in cdic:
  15.                 if input('该学生已存在!是否重新编辑(y/n)?:') == 'y':
  16.                     del cdic[name]
  17.                 else:
  18.                     print('取消成功!')
  19.                     break
  20.             value = int(input('请输入学生分数:'))
  21.             cdic[name] = value
  22.             ydic[name] = '暂无记录!'
  23.             print('增加成功!')
  24.             break
  25.     if do == 2:
  26.         name = input('请输入学生姓名:')
  27.         try:
  28.             print('学生' + name + '的分数:' + str(cdic[name]))
  29.             print('分数记录:')
  30.             print(ydic[name])
  31.         except:
  32.             print('该学生不存在!')
  33.     if do == 3:
  34.         name = input('请输入学生姓名:')
  35.         try:
  36.             del cdic[name]
  37.             del ydic[name]
  38.             print('删除成功!')
  39.         except KeyError:
  40.             print('该学生不存在!')
  41.     if do == 4:
  42.         name = input('请输入学生姓名:')
  43.         try:
  44.             do = input('请输入需要对' + name + '分数进行的操作:')
  45.             if do[0] == '+':
  46.                 cdic[name] += int(do[0:])
  47.                 ydic[name] = do + ','
  48.             elif do[0] == '-':
  49.                 cdic[name] -= int(do[0:])
  50.                 ydic[name] = do + ','
  51.             else:
  52.                 print('输入不合法!')
  53.             tish = input('请输入操作理由:')
  54.             if ydic[name] != '暂无记录!':
  55.                 ydic[name] += tish
  56.             else:
  57.                 ydic[name] += tish,'\n'
  58.             print('操作成功!')
  59.         except KeyError as a:
  60.             print('该学生不存在!')
  61.     if do == 5:
  62.         print('感谢使用学生分数管理程序!')
  63.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:20:29 From FishC Mobile | 显示全部楼层
wuqramy 发表于 2020-5-5 17:18
简陋版

无法存盘
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 17:26:54 | 显示全部楼层

辛苦了辛苦了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:27:37 | 显示全部楼层

所以简陋
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 17:37:57 From FishC Mobile | 显示全部楼层
wuqramy 发表于 2020-5-5 17:27
所以简陋

这就最佳答案了,给你点个赞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 21:13:57 | 显示全部楼层

我自己用Tkinter加工了一下,最后加入存盘的操作时出现了问题,大佬有时间帮我看看嘛,谢谢啦!
  1. import tkinter as tk
  2. import tkinter.messagebox
  3. import pickle

  4. def saveup(cdic,ydic):
  5.     a = [cdic,ydic]
  6.     file = open('数据.pkl','wb')
  7.     pickle.dump(a,file)
  8.     file.close()
  9.    
  10. def savedown():
  11.     file = open('数据.pkl','rb')
  12.     a = pickle.load(file)
  13.     return a[0],a[1]


  14. def addstudent():
  15.     def save():
  16.         while True:
  17.             if str(v1.get()) in cdic:
  18.                 if tk.messagebox.askokcancel('提示', '该学生已存在!是否重新编辑?') == True:
  19.                     del cdic[str(v1.get())]
  20.                 else:
  21.                     tk.messagebox.showinfo('提示','取消成功')
  22.                     break
  23.             valu = int(v2.get())
  24.             cdic[str(v1.get())] = valu
  25.             ydic[str(v1.get())] = '暂无记录!'
  26.             break
  27.         tk.messagebox.showinfo('提示','完成操作')
  28.         saveup(cdic,ydic)
  29.         
  30.     cdic,ydic = savedown()
  31.     root1 = tk.Frame(root)
  32.     root1.place(relwidth = 0.5,relheight = 0.5)
  33.     v1 = tk.StringVar()
  34.     v2 = tk.IntVar()
  35.    
  36.     tk.Label(root1,text = '请输入学生姓名:').grid(row = 1,column = 1)
  37.     tk.Entry(root1,textvariable = v1).grid(row = 1,column = 2,padx = 10,pady = 5)
  38.    
  39.     tk.Label(root1,text = '请输入学生分数:').grid(row = 2,column = 1)
  40.     tk.Entry(root1,textvariable = v2).grid(row = 2,column = 2,padx = 10,pady = 5)
  41.    
  42.     tk.Button(root1,text = '保存',command = save).grid(row = 3,column = 2)
  43.    
  44. def lookstudent():
  45.     def save():
  46.         root3 = tk.Frame(root)
  47.         root3.place(relwidth = 0.5,relheight = 0.5)
  48.         try:
  49.             tk.Label(root3,text = '学生' + v1.get() + '的分数:' + str(cdic[v1.get()])).grid(row = 1,column = 1)
  50.             tk.Label(root3,text = '分数记录:').grid(row = 2,column = 1)
  51.             tk.Label(root3,text = ydic[v1.get()]).grid(row = 3,column = 1)
  52.         except:
  53.             tk.messagebox.showerror('错误','该学生不存在')
  54.             
  55.     root2 = tk.Frame(root)
  56.     root2.place(relwidth = 0.5,relheight = 0.5)
  57.    
  58.     v1 = tk.StringVar()
  59.    
  60.     tk.Label(root2,text = '请输入学生姓名:').grid(row = 1,column = 1)
  61.     tk.Entry(root2,textvariable = v1).grid(row = 1,column = 2,padx = 10,pady = 5)

  62.     tk.Button(root2,text = '查询',command = save).grid(row = 3,column = 2)


  63. def delstudent():
  64.     def dell():
  65.         try:
  66.             del cdic[v1.get()]
  67.             del ydic[v1.get()]
  68.             tk.messagebox.showinfo('提示','删除成功')
  69.         except KeyError:
  70.             tk.messagebox.showinfo('提示','该学生不存在!')
  71.         saveup(cdic,ydic)

  72.     cdic,ydic = savedown()
  73.     root4 = tk.Frame(root)
  74.     root4.place(relwidth = 0.5,relheight = 0.5)
  75.    
  76.     v1 = tk.StringVar()
  77.    
  78.     tk.Label(root4,text = '请输入学生姓名:').grid(row = 1,column = 1)
  79.     tk.Entry(root4,textvariable = v1).grid(row = 1,column = 2,padx = 10,pady = 5)

  80.     tk.Button(root4,text = '删除',command = dell).grid(row = 3,column = 2)


  81. def modifystudent():
  82.     def save():
  83.         try:
  84.             do = v3.get()
  85.             if do[0] == '+':
  86.                 cdic[v1.get()] += int(do[0:])
  87.                 ydic[v1.get()] = '变动分数:' + do + ', '
  88.             elif do[0] == '-':
  89.                 cdic[v1.get()] -= int(do[0:])
  90.                 ydic[v1.get()] = '变动分数:' + do + ', '
  91.             else:
  92.                 tk.messagebox.showerror('错误','输入不合法!')
  93.             tish = '变动原因:' + str(v2.get())
  94.             if ydic[v1.get()] != '暂无记录!':
  95.                 ydic[v1.get()] += tish
  96.                 tk.messagebox.showinfo('提示','更新成功')
  97.             else:
  98.                 ydic[v1.get()] += tish,'\n'
  99.                 tk.messagebox.showinfo('提示','更新成功')
  100.         except KeyError as a:
  101.             tk.messagebox.showinfo('提示','该学生不存在!')
  102.         saveup(cdic,ydic)

  103.     cdic,ydic = savedown()
  104.     root5 = tk.Frame(root)
  105.     root5.place(relwidth = 0.5,relheight = 0.5)
  106.    
  107.     v1 = tk.StringVar()
  108.     v2 = tk.StringVar()
  109.     v3 = tk.StringVar()
  110.    
  111.     tk.Label(root5,text = '学生姓名:').grid(row = 1,column = 1)
  112.     tk.Entry(root5,textvariable = v1).grid(row = 1,column = 2,padx = 10,pady = 5)
  113.     tk.Label(root5,text = '原因:').grid(row = 2,column = 1)
  114.     tk.Entry(root5,textvariable = v2).grid(row = 2,column = 2,padx = 10,pady = 5)
  115.     tk.Label(root5,text = '加减分数:').grid(row = 3,column = 1)
  116.     tk.Entry(root5,textvariable = v3).grid(row = 3,column = 2,padx = 10,pady = 5)

  117.     tk.Button(root5,text = '完成',command = save).grid(row = 4,column = 2)


  118. cdic,ydic = savedown()
  119. root = tk.Tk()
  120. root.title('学生分数管理系统')
  121. root.geometry("400x200+500+500")
  122. menubar = tk.Menu(root)
  123. menubar.add_command(label = '学生新增',command = addstudent,)
  124. menubar.add_command(label = '查看学生',command = lookstudent)
  125. menubar.add_command(label = '学生删除',command = delstudent)
  126. menubar.add_command(label = '更新分数',command = modifystudent)
  127. menubar.add_command(label = '退出程序',command = root.destroy)


  128. root.config(menu = menubar)
  129. root.mainloop()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 21:20:44 | 显示全部楼层
lbxx916 发表于 2020-5-5 21:13
我自己用Tkinter加工了一下,最后加入存盘的操作时出现了问题,大佬有时间帮我看看嘛,谢谢啦!

具体发生了什么bug?
是报错还是怎么样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-5 22:18:33 | 显示全部楼层
wuqramy 发表于 2020-5-5 21:20
具体发生了什么bug?
是报错还是怎么样

比如我新增一个人就会出现以下错误
  1. Exception in Tkinter callback
  2. Traceback (most recent call last):
  3.   File "C:\Users\Lbxx916\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
  4.     return self.func(*args)
  5.   File "C:\Users\Lbxx916\Desktop\学生管理系统.py", line 27, in save
  6.     cdic[str(v1.get())] = valu
  7. TypeError: 'set' object does not support item assignment
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 22:52:58 | 显示全部楼层
lbxx916 发表于 2020-5-5 22:18
比如我新增一个人就会出现以下错误

set 这个实例不支持或不能分配给item类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 16:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表