easyMath.py程序是一个儿童算数游戏,可以随机选择算数加减法。

我们通过函数add(),sub()等价+-操作符,这两者都可以在operator模块中找到。

接着我们生成一个参数列表(该列表只有两个参数,因为这些事二元操作符、运算),接着选取任意的数作为算子。

以为我们没打算在这个程序的基础版本中支持负数,所以我们将两个数字的列表按从大到小的顺序排列,然后用这个参数列表和随机选择的算数操作符去调用相对应的函数,最后获得问题的正确答案。

随机选择数字以及一个算数函数,显示问题,以及验证结果。

在三次错误的尝试后给出结果,等到用户输入一个正确的答案后便会继续运行。

#!/usr/bin/env Python

from operator import add,sub
from 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 ):break

if __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相关推荐

  1. 怎么用python编简单游戏_用Python实现一个简单的算术游戏详解

    用Python实现一个简单的算术游戏 #!/usr/bin/env python from operator import add, sub from random import randint, c ...

  2. 算术游戏C语言,10个有趣的算术游戏,让你立刻爱上数学!

    原标题:10个有趣的算术游戏,让你立刻爱上数学! 数学到底哪里有趣了?数学之美究竟在哪里? 今天让我们一起读一读matrix67大神的这篇文章,里面包含作者精心选择的10个老少咸宜的算术问题,以定理. ...

  3. 让你立刻爱上数学的8个算术游戏

    文科背景的朋友们经常会问我一个问题:数学到底哪里有趣了,数学之美又在哪里?此时,我通常会讲一些简单而又深刻的算术游戏,让每个只会算术的人都能或多或少地体会到一些数学的美妙.如果你从小就被数学考试折磨, ...

  4. python算术编写_用Python实现一个简单的算术游戏

    #!/usr/bin/env python from operator import add, sub from random import randint, choice ops = {'+': a ...

  5. python简单游戏实例_Python实现的简单算术游戏实例

    本文实例讲述了Python实现的简单算术游戏.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python from operator import add, sub from ...

  6. 同花顺python_python 同花顺接口用Python实现一个简单的算术游戏

    用Python实现一个简单的算术游戏 第二电脑网认为此文章对<python 同花顺接口用Python实现一个简单的算术游戏>说的很在理,W WW.002pc .COM为你提供最佳的电脑技术 ...

  7. 电话手表算术游戏不是计算机,数学逻辑智能 | 别开玩笑了,数学逻辑智能可不只是算术能力!...

    数学逻辑智能 Logical-Mathematical intelligence 数学逻辑智能是八大智能中的一个,它指"有效地运用数字和推理的能力,这项智慧包括对逻辑的方式和关系.功能和其他 ...

  8. 电话手表算术游戏不是计算机,算术小游戏红包版

    算术小游戏红包版是一款十分有意思的答题闯关游戏,通过挑战各种各样算术题的方式闯关,随时随地上手即玩,凭借你的智慧答对题目即可通关,每一关还可以借助一些道具的帮助,每一次顺利通关都能积攒红包的奖励,绝对 ...

  9. python儿童游戏_python 实现儿童算术游戏

    # -*- coding: UTF-8 -*- from operator import add, sub                 #从 operator 和 random 模块中,导入我们会 ...

最新文章

  1. Wide ResNet ResNeXt DenseNet DPNet [9] NASNet [10] SENet [11] Capsules [12
  2. Linux数据报文接收发送总结1
  3. RDL/RDLC批量单据打印 [转]
  4. 第22件事 产品规划和运营规划
  5. Boost:alignment对齐的测试程序
  6. ios重签名iReSign
  7. java 运行时路径_如何在运行时检查当前Java类路径(重复)
  8. ssh-key生成密钥及SSH无密码登录的配置(转载)
  9. 3.2 GUN as汇编(本文内容大部分引用原文,非原创)
  10. ASP.Net中控件的EnableViewState属性
  11. python二级考试大纲小学生_Python语言二级考试大纲
  12. [精简]托福核心词汇103
  13. iOS-打开本地或下载的Excel文件
  14. python基础训练—数字
  15. 【java】Java中关于String类型的详解
  16. cad调了比例因子没反应_天正CAD标注比例大小调整方法
  17. VScode调用KEIL-MDK
  18. 国内外免费CDN网址
  19. 查尔斯·巴贝奇——计算机先驱者之父
  20. nvidia显卡的Exclusive Process模式

热门文章

  1. Java Script基础
  2. iPhone/iOS开启个人热点的纵向适配小结
  3. 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(23):常数项级数的概念和性质(补充知识)
  4. Android开发相关下载汇总
  5. 天天基金估值数据接口http://j4.dfcfw.com/charts/pic6/基金代码.png
  6. Centos7的系统镜像下载链接
  7. 五笔字码反查字典 ZDic for Palm 制作方法
  8. 显示或隐藏MacOS中的隐藏文件
  9. 软件开发毕业4年后,靠自学自动化测试月入2W,本人亲身经历供大家参考
  10. java 实现loading效果_常见的几种loding效果实现