算术游戏 easyMath.py
来源:互联网 发布:化工过程优化 微盘 编辑:程序博客网 时间:2024/06/05 00:43
easyMath.py程序是一个儿童算数游戏,可以随机选择算数加减法。
我们通过函数add(),sub()等价+-操作符,这两者都可以在operator模块中找到。
接着我们生成一个参数列表(该列表只有两个参数,因为这些事二元操作符、运算),接着选取任意的数作为算子。
以为我们没打算在这个程序的基础版本中支持负数,所以我们将两个数字的列表按从大到小的顺序排列,然后用这个参数列表和随机选择的算数操作符去调用相对应的函数,最后获得问题的正确答案。
随机选择数字以及一个算数函数,显示问题,以及验证结果。
在三次错误的尝试后给出结果,等到用户输入一个正确的答案后便会继续运行。
#!/usr/bin/env Pythonfrom operator import add,subfrom random import randint,choice #从operator和random模块中,导入我们会用到的函数ops = {"+": add, "-": sub} #全局变量,包含了操作符和与其相关联的函数的集合(字典)MAXTRIES = 2 #在决定给出正解之前,用户有多少次机会尝试给出答案def doprob(): #该函数随机选择一个操作并生成两个操作数,同时为了避免减法问题中的负数问题,将这两个算子按大道小排序 op = choice("+-") #随机选择操作符 nums=[randint(1,10) for i in range(2)] #仅仅用两次randint()来获得我们的额操作数。nums=[randint(1,10),randint(1,10)] nums.sort(reverse=True ) #使得选出的两个数为降序,保证得出的结果没有负数 ans=ops[op](*nums) pr='%d %s %d=' % (nums[0], op, nums[1]) oops=0 while True: #用来处理有效和无效输入的控制循环。while循环是无限循环。直到有正确答案 try: #输入或者允许尝试的次数(3)被耗尽才终止运行。这允许程序接受不合法的输入 if int(input(pr)) == ans: #一旦用户超过了尝试的最大次数,程序就会给出答案并“强制”用户给出正确的答案 print("correct") #只有给出正确答案,程序才会向下进行 break if oops==MAXTRIES: print("answer \n %s %d"%(pr,ans)) else: print("incorrect...try again") oops +=1 except (KeyboardInterrupt,EOFError,ValueError ): print("invalid input...try again")def main(): #29-41 程序的主入口是main函数,如果直接运行脚本,程序将自顶向下的运行。 while True: #如果被作为导入模块,导入者要么调用doprob()函数来开始执行,要么调用main()来进入程序控制 doprob() try: opt=input("again? [y]").lower() if opt and opt[0]=='n': break except(KeyboardInterrupt ,EOFError ): breakif __name__=='__main__': main()因为数值和操作符都是随机选择的,每次运行easyMath.py的结果应该都是不一样的。
C:\Users\minkl\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/minkl/PycharmProjects/untitled/easyMath.py
9 + 2=11
correct
again? [y]y
10 + 9=19
correct
again? [y]y
9 + 3=12
correct
again? [y]
5 + 2=7
correct
again? [y]y
9 + 7=16
correct
again? [y]
9 + 8=17
correct
again? [y]
6 + 1=7
correct
again? [y]
8 + 7=6
incorrect...try again
8 + 7=6
incorrect...try again
8 + 7=6
answer
8 + 7= 15
8 + 7=6
answer
8 + 7= 15
8 + 7=6
answer
8 + 7= 15
8 + 7=6
answer
8 + 7= 15
8 + 7=15
correct
again? [y]
10 - 6=4
correct
again? [y]
4 - 1=3
correct
again? [y]
7 - 3=2
incorrect...try again
7 - 3=2
incorrect...try again
7 - 3=2
answer
7 - 3= 4
7 - 3=4
correct
again? [y]
10 - 10=0
correct
again? [y]
9 - 1=t
invalid input...try again
9 - 1=9
incorrect...try again
9 - 1=
invalid input...try again
9 - 1=
invalid input...try again
9 - 1=8
correct
again? [y]n
Process finished with exit code 0
- 算术游戏 easyMath.py
- easyMath.py
- 算术
- 算术
- 用Python实现一个简单的算术游戏
- 让你立刻爱上数学的10个算术游戏
- python核心编程(第二版)-算术游戏
- py
- py
- py
- py
- py
- py
- py
- Py
- py批处理游戏资源脚本(小工具)
- 第四周项目三-随机数函数应用于游戏(小学生算术能力测试系统)
- 第4周项目3:随机数函数应用于游戏-小学生算术能力测试系统
- C++的运算符重载
- C语言开源项目及c++库大全
- redis+mysql
- 浅析Java抽象类和接口的比较
- 图片鼠标悬停放大
- 算术游戏 easyMath.py
- 关于Oracle 12.2 中system密码过期(expire)问题的研究
- ITOO---选课里的“秒杀”业务设计
- 乐观锁和悲观锁
- java MD5加密算法
- Kruskal(克鲁斯卡尔) 最小生成树 算法详解+模板
- 算法基础-分治法求解最大子数组(Java)
- 日常学习篇-Linux应用程序文件I/O编程
- 特殊求和,专治各种不服