鱼C论坛

 找回密码
 立即注册
查看: 2706|回复: 4

[作品展示] 上次看到有一个C语言写的计算题程序,自己写了Python版

[复制链接]
发表于 2023-1-11 15:57:14 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 陶远航 于 2023-1-11 16:04 编辑

上次看到有一个C语言写的计算题程序,下载了来,结果bug一堆,自己用了一个小时用Python做了一个UI版,源码贴在下面,求评分(没鱼币了)
c语言程序:
https://fishc.com.cn/thread-223215-1-1.html
源码:
  1. import tkinter as tk
  2. import tkinter.messagebox
  3. import random
  4. try:
  5.     import easygui
  6. except:
  7.     tk.messagebox.showerror("无法导入easygui模块!")

  8. win=tk.Tk()
  9. win.title("计算题")
  10. win.geometry("270x130")
  11. win.resizable(width=False, height=False)
  12. var_num=tk.StringVar()
  13. var_num.set('')
  14. var_type=tk.StringVar()
  15. var_type.set('')
  16. def fuhao():
  17.     pass

  18. def ques(a,b):
  19.     if a=="1":
  20.         fuhao= "+"
  21.     elif a=="2":
  22.         fuhao= "-"
  23.     elif a=="3":
  24.         fuhao= "×"
  25.     else:
  26.         fuhao= "÷"
  27.     num=b
  28.     _type=a
  29.     score=0
  30.     for i in range(num):
  31.         a=random.randint(0,100)
  32.         b=random.randint(0,100)
  33.         y_ans=int(easygui.enterbox((a,fuhao,b),"计算题"))
  34.         if fuhao=="+":
  35.             r_ans=a+b
  36.         elif fuhao=="-":
  37.             r_answer=a-b
  38.         elif fuhao=="×":
  39.             r_answer=a*b
  40.         else:
  41.             r_answer=a/b
  42.         if y_ans==r_ans:
  43.             print("Right")
  44.             score+=100/num
  45.         else:
  46.             print("Wrong")
  47.     tk.messagebox.showinfo("得分",score)

  48. def start():
  49.     ques_num=var_num.get()
  50.     _type_num=var_type.get()
  51.     if _type_num in ["1","2","3","4"]:
  52.         ques_num=int(ques_num)
  53.         ques(_type_num,ques_num)
  54.     elif _type_num=="":
  55.         tk.messagebox.showinfo("计算题",'输入的类型为空,如需帮助,请按"类型"按钮')
  56.     else:
  57.         tk.messagebox.showinfo("计算题",'没有更多类型了,如需帮助,请按"类型"按钮')

  58. def jst_exit():
  59.     win.quit()
  60.     win.destroy()

  61. def more():
  62.     tk.messagebox.showinfo("类型","开发中...")

  63. def types():
  64.     tk.messagebox.showinfo("类型","""1代表加法,2代表减法,3代表乘法,4代表除法
  65. 只需在题目类型输入框中填入对应的数字即可""")

  66. labname=tk.Label(win,text='题目数量:',width=80)
  67. labpwd=tk.Label(win,text='题目类型:',width=200)
  68. entname=tk.Entry(win,width=100,textvariable=var_num)
  69. entpwd=tk.Entry(win,width=100,textvariable=var_type)
  70. but_Ok=tk.Button(win,text='开始',command=start)
  71. but_Cancel=tk.Button(win,text='退出',command=jst_exit)
  72. but_quit=tk.Button(win,text='可选',command=more)
  73. but_type=tk.Button(win,text='类型',command=types)
  74. labname.place(x=20,y=10,width=80,height=20)
  75. labpwd.place(x=20,y=40,width=80,height=20)
  76. entname.place(x=100,y=10,width=140,height=20)
  77. entpwd.place(x=100,y=40,width=80,height=20)
  78. but_Ok.place(x=30,y=80,width=50,height=20)
  79. but_Cancel.place(x=110,y=80,width=50,height=20)
  80. but_quit.place(x=190,y=80,width=50,height=20)
  81. but_type.place(x=190,y=40,width=50,height=20)

  82. win.mainloop()
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
额外减小 + 1 + 1 大佬

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-11 15:57:46 | 显示全部楼层
求评分求评分求评分
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-11 15:58:51 | 显示全部楼层
我这个源码可能看起来有点麻烦,还请大佬简化一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-11 16:11:13 | 显示全部楼层
改进:
  1. import tkinter as tk
  2. import tkinter.messagebox
  3. import random
  4. import os
  5. try:
  6.     import easygui
  7. except:
  8.     try:
  9.         if os.system("pip install easygui") == 1:
  10.             raise Exception
  11.     except:
  12.         os.system("pip install --upgrade pip")
  13.         try:
  14.             if os.system("pip install easygui")==1:
  15.                 raise Exception
  16.         except:
  17.             print("安装失败")
  18.             exit(-1)
  19.         else:
  20.             import easygui
  21.     else:
  22.          import easygui
  23. else:
  24.     import easygui
  25. win=tk.Tk()
  26. win.title("计算题")
  27. win.geometry("270x130")
  28. win.resizable(width=False, height=False)
  29. var_num=tk.StringVar()
  30. var_num.set('')
  31. var_type=tk.StringVar()
  32. var_type.set('')
  33. def fuhao():
  34.     pass

  35. def ques(a,b):
  36.     if a=="1":
  37.         fuhao= "+"
  38.     elif a=="2":
  39.         fuhao= "-"
  40.     elif a=="3":
  41.         fuhao= "×"
  42.     else:
  43.         fuhao= "÷"
  44.     num=b
  45.     _type=a
  46.     score=0
  47.     for i in range(num):
  48.         a=random.randint(0,100)
  49.         b=random.randint(0,100)
  50.         y_ans=int(easygui.enterbox((a,fuhao,b),"计算题"))
  51.         if fuhao=="+":
  52.             r_ans=a+b
  53.         elif fuhao=="-":
  54.             r_answer=a-b
  55.         elif fuhao=="×":
  56.             r_answer=a*b
  57.         else:
  58.             r_answer=a/b
  59.         if y_ans==r_ans:
  60.             print("Right")
  61.             score+=100/num
  62.         else:
  63.             print("Wrong")
  64.     tk.messagebox.showinfo("得分",score)

  65. def start():
  66.     ques_num=var_num.get()
  67.     _type_num=var_type.get()
  68.     if _type_num in ["1","2","3","4"]:
  69.         ques_num=int(ques_num)
  70.         ques(_type_num,ques_num)
  71.     elif _type_num=="":
  72.         tk.messagebox.showinfo("计算题",'输入的类型为空,如需帮助,请按"类型"按钮')
  73.     else:
  74.         tk.messagebox.showinfo("计算题",'没有更多类型了,如需帮助,请按"类型"按钮')

  75. def jst_exit():
  76.     win.quit()
  77.     win.destroy()

  78. def more():
  79.     tk.messagebox.showinfo("类型","开发中...")

  80. def types():
  81.     tk.messagebox.showinfo("类型","""1代表加法,2代表减法,3代表乘法,4代表除法
  82. 只需在题目类型输入框中填入对应的数字即可""")

  83. labname=tk.Label(win,text='题目数量:',width=80)
  84. labpwd=tk.Label(win,text='题目类型:',width=200)
  85. entname=tk.Entry(win,width=100,textvariable=var_num)
  86. entpwd=tk.Entry(win,width=100,textvariable=var_type)
  87. but_Ok=tk.Button(win,text='开始',command=start)
  88. but_Cancel=tk.Button(win,text='退出',command=jst_exit)
  89. but_quit=tk.Button(win,text='可选',command=more)
  90. but_type=tk.Button(win,text='类型',command=types)
  91. labname.place(x=20,y=10,width=80,height=20)
  92. labpwd.place(x=20,y=40,width=80,height=20)
  93. entname.place(x=100,y=10,width=140,height=20)
  94. entpwd.place(x=100,y=40,width=80,height=20)
  95. but_Ok.place(x=30,y=80,width=50,height=20)
  96. but_Cancel.place(x=110,y=80,width=50,height=20)
  97. but_quit.place(x=190,y=80,width=50,height=20)
  98. but_type.place(x=190,y=40,width=50,height=20)

  99. win.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-11 16:20:19 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 09:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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