码迷,mamicode.com
首页 > 编程语言 > 详细

Python实现简单的四则运算

时间:2019-04-06 10:00:53      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:一个   支持   tor   tin   limit   proc   随机   nal   design   

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实现简单的四则运算

标签:一个   支持   tor   tin   limit   proc   随机   nal   design   

原文地址:https://www.cnblogs.com/ywl1218/p/10660550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!