python 四则运算作业2

1.GitHub地址:https://github.com/634017?tab=projects&q=is:open

 

2.PSP

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

70

80

· Estimate

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

50

100

Development

开发

1600

1700

· Analysis

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

30

40

· Design Spec

· 生成设计文档

50

60

· Design Review

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

20

20

· Coding Standard

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

10

10

· Design

· 具体设计

60

40

· Coding

· 具体编码

1000

1700

· Code Review

· 代码复审

60

50

· Test

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

60

40

Reporting

报告

120

130

· Test Report

· 测试报告

60

70

· Size Measurement

· 计算工作量

5

5

· Postmortem & Process Improvement Plan

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

40

50

合计

 

2705

3010

 

3.解题思路

  1)从题目出发,先考虑随机产生整数和运算符号。数字和字符交替出现。

  2)真分数,可先随机产生两个数,比较大小,结合”/ ”得到真分数。

  3)以数组存放式子,判断式子是否已存在,判断是否重复。

  4)加以提高功能,向式子加入括号,考虑到插入字符。

  5)提供答案,将字符转化为数字符号运算出式子的答案。

  6)测试程序,修改代码。

  7)结果写入文件。

4.设计实现,几个类,几个函数

  •     建立shizi()函数,生成随机数字以及真分数和运算符,构成式子。以cha(z)函数判断shizi()函数生成式子是否重复,实现查重功能。通过save(filename, s)函数将式子题目以及答案写入TXT文件。根据不同需求,以typ()函数满足用户的运算类型的选择。建立khao()函数向shizi()生成的式子加入括号;通过ans()函数将式子的答案运算出来。

 

 

5.代码说明

1)随机生成算术

def shizi(): #产生式子

 import random

 jl=''

 f=random.choice(['4','6','8'])  #数字和符号的个数

 for i in range(int(f)):   

   if i==0 or i==3 or i==5 or i==7:

      a=random.randint(1,100)

      b=random.randint(1,100)

      if a>b:

        c=str(b)+'/'+str(a) #真分数

      else:

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

      k=str(random.randint(1,150))

      d=random.choice([k,k,k,c])

      jl=jl+d

   if i==2 or i==4 or i==6:

      s=random.choice(['+','-','x','÷'])

      jl=jl+s

 return (jl+'=')

 

2)算术是否重复

def cha(z):#查看有无重复

  cd=[]

  if z not in cd:

      cd.append(z)

      return 1  

 

3)保存结果文件

def save(name, s):#name为写入文件的路径,data为要写入数据列表.

    file = open(filename,'a')

    file.seek(0)

    file.truncate() # 清空文件

    for x in s:

        x='%s\n'%(x)

        file.write(x)

file.close()

4)算术类型

def typ(): #四则运算类型

  print("加法居多,输入1。乘法居多,输入2,无限制,输入3")

  d=input()

5)查看答案

def ans(a):

    a=a.replace('x','*')

    a=a.replace('÷','/')

    a=a.replace('=','')

    return eval(a)

 

6)加入括号

def khao(a): #加括号

    t=0

    s=0

    for i in range(len(a)):

        if a[i] in ['+','-','x','÷']:

            t=t+1

    for i in range(len(a)):

        if a[i] in ['+','-','x','÷']:

            s=s+1

            if s==2:

                k=i

                break

    if t>=3: #加括号

        a='('+a

        a=a[:k+1]+')'+a[k+1:]

return(a)

 

7)主函数

#from fractions import Fraction   保留为分数

#m=Fraction(m)

n=eval(input("题目个数:"))

t=1

i=0

while i<99999:

    if cha(shizi()):  #是否重复

        k=shizi()  

        m=ans(k)

        f=khao(k)

        if m>=0: #判断不出现负数

            j=t

            print("{0}. {1}                                        答案 {2}".format(t,f,m)) #输出式子和答案

            h=str(j)+'. '

            save('C:/Users/abc/Desktop/timu.txt', h+k)  #保存文档

            m=str(m)

            save('C:/Users/abc/Desktop/answer.txt', h+m)

            t=t+1

            if t==n+1: #保证题目数量

                break

6.测试运行

 

 

 

 

 

 

 

 

 7,性能

   运行时间21秒,消耗最大的是shizi()函数。

     

posted @ 2019-03-27 21:12  ddaaazz  阅读(246)  评论(0)    收藏  举报