Python加减法数学题 |
您所在的位置:网站首页 › 加减法数学题 › Python加减法数学题 |
大家好! 这是我第一次发博客,如有优化空间,请各位在评论区大胆地提出建议!我会虚心接受的! 前言最近一段时间,我亲爱的弟弟迷上了做数学题,天天缠着我妈出题给他,我妈被他搞得焦头烂额,便向我求助。我自告奋勇,要用Python帮她解决! 准备解释器:Python 3.9.6(版本都没关系,是Python3.x就行) IDE:VSCode 库:random、datetime、rich(为了美观)、pyinstaller rich和pyinstaller是第三方库,所以要先在cmd中输入: pip install rich pip install pyinstaller请一定要先看这篇文章来掌握rich库的用法。 等库下载完毕,就可以导入进去了。 import random import datetime from rich import print导完了库,就可以开始掉头发写代码了 第一部分:初始化我要在最后进行一个复盘,所以在前面先设好: rightTimes = 0#答对题目数量 a = 0#数1 sign1 = 0#符号1 b = 0#数2 sign2 = 0#符号2 c = 0#数3 answer_right = 0#正确答案 answer_input = 0#输入答案然后询问: print("[bold magenta]请输入出题范围:[/bold magenta]",end = "") size = int(input()) print("[bold magenta]请输入题目数量:[/bold magenta]",end = "") times = int(input())(因为rich我只导了print函数,所以input显示不出print可以显示出的漂亮的文本,我只能将print和input分开写) 这样,初始化就完毕了。 第二部分:创建算式首先,我们要确定这个式子是两个数的还是三个数的: control = random.randint(0,1)#控制变量control, 通过0和1来确定该算式为两数计算(0)还是三数计算(1)然后生成数和符号: a = random.randint(0,size) sign1 = random.randint(0,1) if sign1 == 0: sign1 = "+" else: sign1 = "-" if sign1 == "-": if a == 0: b = 0 else: b = random.randint(0,a) else: b = random.randint(0,size) if control == 1: sign2 == random.randint(0,1) if sign2 == 0: sign2 = "+" else: sign2 = "-" if sign1 == "-" and sign2 == "-":#控制c的范围 c = random.randint(0,a-b) elif sign1 == "-" and sign2 == "+": c = random.randint(0,size) elif sign1 == "+" and sign2 == "-": if a+b > size: c = random.randint(0,size) else: c = random.randint(0,a+b) else: c = random.randint(0,size)c的范围我现在自己也理不大清楚了,你们自己去琢磨吧 唉……ε=(´ο`*)))(别骂我!) 随后去生成答案: answer_right = a if sign1 == "+": answer_right += b else: answer_right -= b if control == 1: if sign2 == "+": answer_right += c else: answer_right -= c这块应该很好理解,就是顺序向下,如果是加号则加上下一个数,如果是减号则减掉下一个数。 至此,算式创建就正式结束了 第三部分:输入判断首先,我们要将算式输出: print(i+1,end = "") print("[bold blue]|[/bold blue]",end = "") print(a,end = "") print(sign1,end = "") print(b,end = "") if control == 1: print(sign2,end = "") print(c,end = "") print("=",end = "")随后判断输入是否符合逻辑(因为我的弟弟总是输入一些奇奇怪怪的答案)。 首先,我要建立两个(我认为是)布尔值变量: unRight = True enterFirst = False然后: while unRight: answer_input = input() if answer_input == '\n': print("请不要输入回车! 请再次输入!") unRight = True enterFirst = True if not enterFirst: if answer_input[0] == '0' and answer_input[1] != '.': print("请不要在开头输入0! 请再次输入!") unRight = True else: unRight = False if not unRight and not enterFirst: try: answer_input = int(answer_input) unRight = False except: print("请不要输入字符! 请再次输入!") unRight = True然后,如果输入错误,就再将式子输出一遍: if unRight: print(i+1,end = "") print("[bold blue]|[/bold blue]",end = "") print(a,end = "") print(sign1,end = "") print(b,end = "") if control == 1: print(sign2,end = "") print(c,end = "") print("=",end = "")如果输入正确,unRight变成false,就会退出循环,然后判断正误: if(answer_input == answer_right): print("[bold green]正确[/bold green]") rightTimes += 1 else: print("[bold red]错误[/bold red]") 第四部分:复盘、退出直接上代码: end = datetime.datetime.now() print("你一共答了",end = "") print(times,end = "") print("题, 答对了",end = "") print(rightTimes,end = "") print("题, 答错了",end = "") print(times-rightTimes,end = "") print("题, 共用时",end = "") if end.hour - end.hour != 0: print(end.hour - start.hour,end = "") print("小时",end = "") print(end.minute - start.minute,end = "") print("分钟",end = "") if end.minute > start.minute: print(end.second - start.second,end = "") print("秒。",end = "") elif end.hour - start.hour == 0 and end.minute - start.minute != 0: print(end.minute - start.minute,end = "") print("分钟",end = "") if end.minute > start.minute: print(end.second - start.second,end = "") print("秒。",end = "") elif end.hour - start.hour == 0 and end.minute - start.minute == 0 and end.second - start.second != 0: print(end.second - start.second,end = "") print("秒。",end = "") print() if rightTimes == times: print("[bold green]你真厉害![/bold green]") elif float(times*0.4) size: c = random.randint(0,size) else: c = random.randint(0,a+b) else: c = random.randint(0,size) answer_right = a if sign1 == "+": answer_right += b else: answer_right -= b if control == 1: if sign2 == "+": answer_right += c else: answer_right -= c print(i+1,end = "") print("[bold blue]|[/bold blue]",end = "") print(a,end = "") print(sign1,end = "") print(b,end = "") if control == 1: print(sign2,end = "") print(c,end = "") print("=",end = "") unRight = True enterFirst = False while unRight: answer_input = input() if answer_input == '\n': print("请不要输入回车! 请再次输入!") unRight = True enterFirst = True if not enterFirst: if answer_input[0] == '0' and answer_input[1] != '.': print("请不要在开头输入0! 请再次输入!") unRight = True else: unRight = False if not unRight and not enterFirst: try: answer_input = int(answer_input) unRight = False except: print("请不要输入字符! 请再次输入!") unRight = True if unRight: print(i+1,end = "") print("[bold blue]|[/bold blue]",end = "") print(a,end = "") print(sign1,end = "") print(b,end = "") if control == 1: print(sign2,end = "") print(c,end = "") print("=",end = "") if(answer_input == answer_right): print("[bold green]正确[/bold green]") rightTimes += 1 else: print("[bold red]错误[/bold red]") end = datetime.datetime.now() print("你一共答了",end = "") print(times,end = "") print("题, 答对了",end = "") print(rightTimes,end = "") print("题, 答错了",end = "") print(times-rightTimes,end = "") print("题, 共用时",end = "") if end.hour - end.hour != 0: print(end.hour - start.hour,end = "") print("小时",end = "") print(end.minute - start.minute,end = "") print("分钟",end = "") if end.minute > start.minute: print(end.second - start.second,end = "") print("秒。",end = "") elif end.hour - start.hour == 0 and end.minute - start.minute != 0: print(end.minute - start.minute,end = "") print("分钟",end = "") if end.minute > start.minute: print(end.second - start.second,end = "") print("秒。",end = "") elif end.hour - start.hour == 0 and end.minute - start.minute == 0 and end.second - start.second != 0: print(end.second - start.second,end = "") print("秒。",end = "") print() if rightTimes == times: print("[bold green]你真厉害![/bold green]") elif float(times*0.4) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |