nikochan.cc

导航

 

0x00 Code

查询源代码及README请点此

0x01 需求分析

实现一个自动生成小学四则运算题目的命令行程序。

0x02 功能设计

主要功能为:

  1. 接受用户输入以便知道要出多少道题目python start.py -n NUMBER
  2. 能随机产生题目: 包括真分数在内的四则运算
  3. 打印题目并接收用户输入的答案
  4. 用户输入的答案与程序计算出来的结果进行匹对
    5.将生成器分别放在3个不同的文件。
calc.py 为 本项目所使用函数文件 
config.py 为 配置文件 
start.py 为启动文件

方便进行管理以及功能改善。
可阅读性和维护性较高

6.可以在配置文件中进行设置Fraction Mode.来满足不同年龄段小朋友的做题需求

0x03 代码分析

这次的题目比较简单。
python有包含fraction的包,导入from fractions import Fraction即可使用。
使用全局变量global result可在各个函数中相互调用,但是在函数中需声明
采用各个函数分离的方式,由于选择operation的过程有较多重复代码,所以将其分离。

def calc_fract():
    temp1,temp2=random.randrange(1,10),random.randrange(1,10)
    if temp1>temp2:
        temp1,temp2=temp2,temp1
    fract1=Fraction(temp1,temp2)
    temp1, temp2 = random.randrange(1, 10), random.randrange(1, 10)
    if temp1>temp2:
        temp1,temp2=temp2,temp1
    fract2 = Fraction(temp1, temp2)
    if fract1<fract2:
        fract1,fract2=fract2,fract1
    op = ['+', '-', '*', '/']
    operation = random.choice(op)
    operate(fract1,fract2,operation)
def calc_int():
    temp1, temp2 = random.randrange(1, 10), random.randrange(1, 10)
    if(temp1<temp2):
        temp1,temp2=temp2,temp1
    op = ['+', '-', '*', '/']
    operation = random.choice(op)
    operate(temp1,temp2,operation)

0x05 测试运行:

Fraction Mode

No Fraction Mode :

0x05 psp

0x06 小结

1.第一次自己写包再在不同的文件中调用。 import时只要写明文件名即可,不用加上.py

2.raw_input()这个函数在使用时直接获取的内容为str型。

3.eval()这个函数可以计算str中包含的运算式子.这样可以减少很多代码量!不过由于eval()的安全问题,建议少用。

4.在本次试验中遇到最大的问题是,一开始程序对answer和result无法判断正确,后来睡了一觉突然想起来有可能是type的问题。结果果然是!一个是 “class fractions. fraction” 一个是“type int”

posted on 2017-03-04 17:01  Nikoちゃん  阅读(321)  评论(6编辑  收藏  举报