GitHub 项目地址

https://github.com/745421831/-/tree/master


PSP

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

10

20

· Estimate

· 估计这个任务需要多少时间

10

10

Development

开发

360

600

· Analysis

· 需求分析 (包括学习新技术)

30

40

· Design Spec

· 生成设计文档

30

40

· Design Review

· 设计复审 (和同事审核设计文档)

10

15

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

5

5

· Design

· 具体设计

40

80

· Coding

· 具体编码

300

500

· Code Review

· 代码复审

60

120

· Test

· 测试(自我测试,修改代码,提交修改)

180

120

Reporting

报告

120

60

· Test Report

· 测试报告+博客

120

120

· Size Measurement

· 计算工作量

10

10

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

40

30

合计

1325

1770

项目要求

  • 能自动生成小学四则运算题目
  • 除了整数以外,还要支持真分数的四则运算

解题思路

  • 了解四则运算的基本法则
  • 利用随机函数随机生成数字以及运算符
  • 用户输入答案程序需要判断答案是否正确
  • 支持真分数运算

设计实现及代码说明

import random

from fractions import Fraction

operation = ['+', '-', '*', '/']   #四则运算的符号

global f

def integer_score():

    #rand = operation[random.randint(0,3)]

    number = random.randint(1,4)     #随机产生的表达式长度

    f = ''

    for i in range(number):

        a = random.randint(1,20)       #随机产生的表达式中的数

        rand = operation[random.randint(0, 3)]     #随机选择一个四则运算中的符号

        if rand == '/':

            b = random.randint(a, 20)               #随机产生的真分数的分母

            f += str(a) + rand + str(b)               #数与符号相连

            rand = operation[random.randint(0, 2)]     #随机选择一个四则运算中的符号

            f += rand

        else:

            f += str(a) + rand

        #print(a,rand,end='')

    b = random.randint(1, 20)

    f += str(b)                     #得到完整的表达式

    n = eval(f)                      #得到表达式的结果

    n = Fraction('{}'.format(n)).limit_denominator()    #小数转化为分数

    if n > 0:

        print('题目:')

        print(f,'=')

        print('请输出答案:')

        x = Fraction('{}'.format(eval(input()))).limit_denominator()

        if n == x:                  #输入的数与表达式比较

            print(True)

        else:

            print(False)

            print('正确的答案为:',n)

    else:

        integer_score()

def integer():

    # rand = operation[random.randint(0,3)]

    number = random.randint(1, 3)

    f = ''

    for i in range(number):

        a = random.randint(1, 10)

        rand = operation[random.randint(0, 3)]

        f += str(a) + rand

    b = random.randint(1, 10)

    f += str(b)

    n = eval(f)

    if isinstance(n, int) and n > 0:

        print('题目:')

        print(f, '=')

        print('请输出答案:')

        x = eval(input())

        if n == x:

            print(True)

        else:

            print(False)

            print('正确的答案为:', n)

    else:

        integer()

def score():

    op = ['+', '-']

    number = random.randint(1, 3)

    f = ''

    for i in range(number):

        a = random.randint(1, 10)

        b = random.randint(a, 10)

        rand = op[random.randint(0, 1)]

        f += str(a) + '/'+ str(b)+rand

    a = random.randint(1, 10)

    b = random.randint(a, 10)

    f += str(a) + '/'+ str(b)

    n = eval(f)

    n = Fraction('{}'.format(n)).limit_denominator()

    if n > 0:

        print('题目:')

        print(f,'=')

        print('请输出答案:')

        x = Fraction('{}'.format(eval(input()))).limit_denominator()

        if n == x:

            print(True)

        else:

            print(False)

            print('正确的答案为:',n)

    else:

        score()

if __name__ == '__main__':

    while True:

        print('选择你想做的题目:')

        print('0(退出)1(分数题目),2(整数题目),3(综合题目)')

        m = int(input())

        if m == 1:

            score()

        elif m == 2:

            integer()

        elif m == 3:

            integer_score()

        elif m == 0:

            exit()

        else:

            print('请重新输入你的选择')

#isinstance(1, int)

总结

这次利用Python实现简单的四则运算还不够完美,比如没有随机生成带括号的由于时间原因以及个人能力有限,这些只能以后慢慢完善。

Python实现简单的四则运算的更多相关文章

  1. Python 实现简单的 Web

    简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...

  2. 利用ANTLR4实现一个简单的四则运算计算器

    利用ANTLR4实现一个简单的四则运算计算器 ANTLR4介绍 ANTLR能够自动地帮助你完成词法分析和语法分析的工作, 免去了手写去写词法分析器和语法分析器的麻烦 它是基于LL(k)的, 以递归下降 ...

  3. 用 python实现简单EXCEL数据统计

    任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlrd workbook = xlrd.open_ ...

  4. python开启简单webserver

    python开启简单webserver linux下面使用 python -m SimpleHTTPServer 8000 windows下面使用上面的命令会报错,Python.Exe: No Mod ...

  5. Python开发简单爬虫 - 慕课网

    课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序   课程目录 第1章 课程介绍 ...

  6. python使用简单http协议来传送文件

    python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...

  7. Python超简单的HTTP服务器

    Python超简单的HTTP服务器 安装了python就可以 python -m SimpleHTTPServer 执行这一个命令即可实现一个HTTP服务器,将当前目录设为HTTP服务目录,可以通过h ...

  8. 教学项目之-通过Python实现简单的计算器

    教学项目之-通过Python实现简单的计算器   计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/ ...

  9. python多线程简单例子

    python多线程简单例子 作者:vpoet mail:vpoet_sir@163.com import thread def childthread(threadid): print "I ...

随机推荐

  1. 5.JAVA基础复习——JAVA中的static关键字作用与用法

    static关键字: 特点: 1.static是一个修饰符,用于修饰成员.(成员变量,成员函数)static修饰的成员变量 称之为静态变量或类变量. 2.static修饰的成员被所有的对象共享. 3. ...

  2. chocolatey使用

    chocolatey使用 安装 使用管理员权限打开CMD,输入: @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ( ...

  3. GOQTTemplate简单介绍

    集合OpenCV的视频功能和QCamera的摄像头接口,开发出易于理解的.结构简单的摄像头控制和采集框架.   MainWindow);    bCameraOpen = false;     //显 ...

  4. 编程类-----matlab基础语法复习(2)

    2019年美赛准备:matlab基本题目运算 clear,clc %% 计算1/3 + 2/5 + ...3/7 +10/21 % i = 1; j = 3; ans = 0; % while i & ...

  5. Python day 04

    Day 04 今日内容 补充 1.解释器/编译器 补充:编译型语言和解释型语言? # 编译型:代码写完后,编译器将其变成成另外一个文件,然后交给计算机执行. # 解释型:写完代码交给解释器,解释器会从 ...

  6. EmberJS 为什么我偏爱 Ember.js 胜过 Angular 和 React.js

    文章写的很老到,非常值得一看!评论也很精彩,值得一看 为什么我偏爱 Ember.js 胜过 Angular 和 React.js 前几天看到了这篇文章:Why I prefer Ember.js ov ...

  7. node一些相关

    1.Node node的核心语言是JavaScript ,基于Google的V8引擎. 2.node使用 找到当前文件所在目录 node  文件名.js 直接用绝对路径 在当前目录打开命令窗口 3.n ...

  8. Linux常用命令——网络命令

    Linux常用命令——网络命令 Linux  ifconfig 描述:查看设置网络IP 安装命令:yum -y install net-tools 语法:ifconfig 示例:ifconfig et ...

  9. C语言: 简易图书管理系统

    这只是一个简易的图书管理系统,虽然它有千余行代码,不过终究是个简单基本的东西. 在Linux系统下,用Vim编写,如要在Windows上运行则需要一些改动,主要是一些调用系统函数的改动.如Window ...

  10. 如何查找redis使用的是哪个配置文件

    ps -ef|grep redis 得到了进程号 xxxx 然后 ls -l /proc/xxxx/cwd ps:可以推广到其他进程,只要有pid,就能找到配置文件