天天看点

Python之心算练习程序写此程序的意义所用到的库两位数的加减乘除运算

心算练习

  • 写此程序的意义
  • 所用到的库
    • random库里面的部分常用函数
  • 两位数的加减乘除运算
    • 代码展示
    • 运行结果
    • 程序说明
    • 程序中部分函数及代码说明

写此程序的意义

突然有一天,我发现自己的计算能力直线下降,突然意识到:由于大学课程少,作业又少,所以用到脑子的时候也很少,所以这2年半来耍的我脑子都快生锈了,思考问题的能力也直线下降,计算能力也直线下降。然后我就打算写个小东西来练练自己的计算能力,同时让自己多动动脑,省得它真的生锈了。再者也可以为我后面的毕业项目作出一定的准备。

所用到的库

datetime库、random库以及time库中的clock()函数

time库中的clock()函数:用于记录程序运行的时间,因为程序运行时间与使用者的计算时间比起来实在是微乎其微,所以系统运行时间可以被忽略,从而用得到的时间来作为使用者做计算所花费的时间

datetime库:用于获取系统的当前时间,然后用系统的当前时间来初始化随机数种子,从而得到想要的随机数

Python之心算练习程序写此程序的意义所用到的库两位数的加减乘除运算

random库:用于获取随机数

random库里面的部分常用函数

seed(a=None):初始化随机数种子,默认值为当前系统时间

random():生成一个[0.0, 1.0)之间的随机小数

randint(a, b):生成一个[a, b]之间的整数

getrandbits():生成一个k比特长度的随机整数

randrange(start, stop[, step]):生成一个[start, stop)之间以step为步长的随机整数

uniform(a, b):生成一个[a, b]之间的随机小数

choice(seq):从序列类型,例如从列表中随机返回一个元素

shuffle(seq):将序列类型中的元素随机排列,返回打乱后的序列

sample(pop, k):从pop类型中随机选取k个元素,以列表类型返回

两位数的加减乘除运算

代码展示

import datetime
from random import *
from time import clock

def ranNumber():
    num1 = randint(10, 99)
    num2 = randint(10, 99)
    num0 = randint(1, 3)
    return [num1, num2, num0]

def Calculation(number):
    if number[2] == 1:
        num = number[0] + number[1]
        print("{} + {} = ?".format(number[0], number[1]))
    elif number[2] == 2:
        number.sort(reverse = True)
        num = number[0] - number[1]
        print("{} - {} = ?".format(number[0], number[1]))
    elif number[2] == 3:
        num = number[0] * number[1]
        print("{} * {} = ?".format(number[0], number[1]))
    elif number[2] == 4:
        num = number[0] / number[1]
        print("{} / {} = ? (保留三位小数)".format(number[0], number[1]))
        num = round(num, 3)
    return num

def judge(num):
    result = int(input("请输入你的计算结果:"))
    a = 5
    while a != -1:
        if result == num:
            print("恭喜你,回答正确!")
            a = -1
        else:
            result = int(input("很遗憾,回答错误!请重新作答:"))
            
def main():
    clock()
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    # print(now)
    seed(now)
    for i in range(10):
        number = ranNumber()
        num = Calculation(number)
        judge(num)
    print("你答对这10道题所用的时间是:{:.3f}s".format(clock()))
    
main()
           

运行结果

Python之心算练习程序写此程序的意义所用到的库两位数的加减乘除运算

程序说明

此程序会随机产生10道题。但并不是所有题目一起产生,而是用户答对了前一道题之后,系统才会出现下一道题。要是用户回答错误,则系统会提示用户回答错误,要求用户重新作答,直至用户回答正确为止;若是回答正确,则系统会提示用户回答正确,并出现下一道题。当用户将10道题全部答对之后,系统会打印出用户答对这10道题所用的时间。

但是由于题目是随机出现的加减乘除运算,所以每道题难易不同,因此不能通过用户所用时间来判断用户的计算能力,而应该根据10道题的具体情况来判断用户的计算能力。

程序中部分函数及代码说明

1、main()函数:程序主函数,同时也是程序的入口函数。

2、seed()函数:初始化随机数种子。

3、2次调用clock()函数:

第一次:启动一个新的计时器;

第二次:返回启动计时器后的时间,即程序运行时间。

4、ranNumber()函数:用于获取3个随机数,然后返回一个列表。前两个是两个两位数,用于之后运算中,第三个是[1, 4]的随机整数,根据得到的整数来决定进行何种运算。

5、Calculation()函数:此函数用于计算。接受一个参数——ranNumber()函数所获得的随机数列表。然后在函数中对这两个数进行运算,最后将计算结果返回。

6、judge()函数:此函数用于判断。此函数接收一个参数——Calculation()函数所得到的计算结果。在此函数中,用户需要输入自己的计算结果,然后与传入的参数进行对比,若是相等,则告诉用户回答正确,此函数执行结束,然后回到循环中继续执行;若是不相等,则告诉用户计算错误,要求用户重新作答,直到用户回答正确为止。

7、number.sort(reverse = True):调用列表中的sort()函数,将列表number中的元素从大到小排列

8、now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"):获取系统当前时间