鱼C论坛

 找回密码
 立即注册
查看: 748|回复: 13

[学习笔记] python + easygui 制作四则运算出题器

[复制链接]
发表于 2023-7-22 12:51:25 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 JasonChencCjj 于 2023-7-22 17:48 编辑

Python + easygui 制作四则运算出题器




这是eazygui版:


注意easygui库下载哦!
  1. import time
  2. import random
  3. import easygui as e

  4. countT = 0 #答对题的数量
  5. count = 0 #答了多少题
  6. symbolstr = ["+","-","×","÷"]#显示的符号
  7. questionsize = 3#生成多少道题----------------(可更改)
  8. close = False#是否点击关闭

  9. if e.msgbox("点击‘开始做题’开始计时","四则运算","开始做题") == None:
  10.     close = True
  11. timestart = time.time()#开始计时


  12. while questionsize > 0:
  13.     if close == True:
  14.         break
  15.     a = random.randint(1,9)#a数字的范围,生成数字a
  16.     b = random.randint(1,9)#b数字的范围,生成数字b
  17.     symbollist = [a + b, a - b, a * b, [a // b,a % b]]  # 计算符号


  18.     choice = random.randint(0,3)#随机选择一种符号

  19.     #运算出结果
  20.     if choice != 3:#如果不是除法
  21.         result = symbollist[choice]
  22.         if result < 0:#如果答案小于0,就再来一遍
  23.             continue
  24.         else:
  25.             result = str(result)#一切正常生成答案
  26.     else:#其他可能(是除法)
  27.         result = symbollist[3][0]
  28.         if a / b == result:#如果没有余数(普通除的答案等于地板除答案)
  29.             result = str(result)
  30.         else:#如果有余数
  31.             result = "%d余%d" % (symbollist[3][0],symbollist[3][1])

  32.     #判断对错
  33.     inputresult = e.enterbox("%d%s%d%s" % (a, symbolstr[choice], b,"="),"四则运算")#输入答案
  34.     if inputresult == result:#答对啦
  35.         if e.msgbox("你答对了!") == None:
  36.             close = True
  37.         countT += 1
  38.     elif inputresult == None:
  39.         close = True
  40.         break
  41.     else:#答错啦,显示答案
  42.         if e.msgbox(("结果貌似不太对!\n答案是:%s" % result),"四则运算") == None:
  43.             close = True

  44.     count += 1#做的题数量加一
  45.     questionsize -= 1 #计数器减一

  46. timeend = time.time()#计时结束

  47. #答题汇总
  48. if close == False:
  49.     e.msgbox("计算结束!\n \n答题结果汇总:共%d题,答对了%d道,正确率:%.1f%% \n    总共用时:%.2f秒,平均每题%.2f秒"
  50.           % (count,countT,(countT/count*100),(timeend - timestart),(timeend - timestart)/count),"四则运算")



复制代码



我还准备了一个没有easygui的纯python版,给没有easygui库的同学


  1. import time
  2. import random

  3. countT = 0 #答对题的数量
  4. count = 0 #答了多少题
  5. symbolstr = ["+","-","×","÷"]#显示的符号
  6. questionsize = 3#生成多少道题

  7. print("计时开始!")
  8. timestart = time.time()#开始计时


  9. while questionsize > 0:

  10.     a = random.randint(1,9)#a数字的范围,生成数字a
  11.     b = random.randint(1,9)#b数字的范围,生成数字b
  12.     symbollist = [a + b, a - b, a * b, [a // b,a % b]]  # 计算符号


  13.     choice = random.randint(0,3)#随机选择一种符号

  14.     #运算出结果
  15.     if choice != 3:#如果不是除法
  16.         result = symbollist[choice]
  17.         if result < 0:#如果答案小于0,就再来一遍
  18.             continue
  19.         else:
  20.             result = str(result)#一切正常生成答案
  21.     else:#其他可能(是除法)
  22.         result = symbollist[3][0]
  23.         if a / b == result:#如果没有余数(普通除的答案等于地板除答案)
  24.             result = str(result)
  25.         else:#如果有余数
  26.             result = "%d余%d" % (symbollist[3][0],symbollist[3][1])

  27.     #判断对错
  28.     inputresult = input("%d%s%d%s" % (a, symbolstr[choice], b,"="))#输入答案
  29.     if inputresult == result:#答对啦
  30.         print("你答对了!")
  31.         countT += 1
  32.     else:#答错啦,显示答案
  33.         print("结果貌似不太对!")
  34.         print("答案是:",result)

  35.     count += 1#做的题数量加一
  36.     questionsize -= 1 #计数器减一

  37. timeend = time.time()#计时结束
  38. print("计时结束!")

  39. #答题汇总
  40. print("答题结果汇总:共%d题,答对了%d道,正确率:%d%%" % (count,countT,countT/count*100))
  41. print("     总共用时:%.2f秒,平均每题%.2f秒" % (timeend - timestart,(timeend - timestart)/count))
复制代码


新人,求评分






点评

我很赞同!: 5.0
我很赞同!: 5
给我弟弟用很好{:10_256:}  发表于 2023-7-22 17:58

评分

参与人数 8荣誉 +21 鱼币 +22 贡献 +12 收起 理由
琅琊王朝 + 1
高山 + 5 + 5 + 3
zhangjinxuan + 5 + 5 鱼C有你更精彩^_^
cjjJasonchen + 3 鱼C有你更精彩^_^
myd0313 + 1 鱼C有你更精彩^_^
myd0311 + 1 太酷啦
tommyyu + 5 + 5 + 3
歌者文明清理员 + 5 + 5 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-22 12:54:47 | 显示全部楼层
谢谢支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 17:08:52 | 显示全部楼层
上去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-22 17:15:11 | 显示全部楼层
这个帖子再小小的加一点格式和鱼币奖励就可以申请精华了(参考https://fishc.com.cn/thread-229960-1-1.html

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
JasonChencCjj + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2023-7-22 17:46:54 | 显示全部楼层
tommyyu 发表于 2023-7-22 17:15
这个帖子再小小的加一点格式和鱼币奖励就可以申请精华了(参考https://fishc.com.cn/thread-2299 ...

哇!谢谢大佬支持!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 17:55:31 | 显示全部楼层
各位大佬多摇点人,等我有评分权限了给每个给我评分的人评分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 17:58:15 | 显示全部楼层
等一会儿,还差一点点就能评分了

做得很棒,给我弟弟用很好

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
JasonChencCjj + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2023-7-22 17:58:30 | 显示全部楼层
zhangjinxuan 发表于 2023-7-22 17:58
等一会儿,还差一点点就能评分了

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 18:01:30 | 显示全部楼层
你知道吗,有个函数叫做 eval。

eval(表达式) 可以直接返回表达式的结果


例如:
  1. eval("1+1") == 2
  2. eval("[1, 1+1, 1+2, 1+3, 1+4]") == [1, 2, 3, 4, 5]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 18:04:55 | 显示全部楼层
zhangjinxuan 发表于 2023-7-22 18:01
你知道吗,有个函数叫做 eval。

eval(表达式) 可以直接返回表达式的结果

学习了!等我有权限给你评分

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

使用道具 举报

发表于 2023-7-22 18:05:32 | 显示全部楼层
JasonChencCjj 发表于 2023-7-22 18:04
学习了!等我有权限给你评分

谢谢大佬!


Python 这方面较深,需要多多学习才能了解其中的奥秘。

评分

参与人数 1鱼币 +1 收起 理由
JasonChencCjj + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2023-7-22 18:06:07 | 显示全部楼层
zhangjinxuan 发表于 2023-7-22 18:05
Python 这方面较深,需要多多学习才能了解其中的奥秘。

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

使用道具 举报

发表于 2023-7-24 18:51:46 | 显示全部楼层
加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 19:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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