python自动生成标题_Python实现自动生成四则运算题目

https://github.com/bevis-debug/-/commit/20ddab87b84feea3889b5e683d2eb7ce9a40c66f

PSP2.1

任务内容

计划完成需要的时间(min)

实际完成所需要的时间(min)

Plainning

计划

30

50

Estimate

估计这个任务需要多少时间,并规划大致工作步骤

20

20

Analysis

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

60

90

Design

具体设计

50

60

Coding

具体编码

400

500

test

测试(自我测试,修改)

200

300

Postmortem&Process improvement Plan

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

30

40

summary

合计

790

1060

1,题目反思

功能需求:分多种选择来给客户提供不同的服务,有自我简单四则测试,有真分数的较难四则运算测试,用户可输入所需的题目数来进行自我测试,事后会给出分数统计,并在每一次回答后进行判断正确与否,错了就给出正确答案,最后还有个题库给客户观看。

2,程序设计

将几个功能分化为多个函数,简单四则运算用一个函数numericalOperation解决,加减乘除用random函数判断,然后给出结果和判断,题库同理,用两个函数将题目和答案收入,在循环完后全部显示出来;真分数的运算还要加入fraction的使用,以及判断是否构成真分数等等

3,实现代码

from fractions import Fraction

import random

ans=[]

quation=[]

f=0

#四则运算

def numerecalOperation():

sym = ['+', '-', '×', '÷']

f= random.randint(0, 3)

n1 = random.randint(1, 20)

n2 = random.randint(1, 20)

result = 0

if f== 0:#加法

result = n1 + n2

elif f == 1:#减法,要先比较大小,防止输出负数

n1, n2 = max(n1, n2), min(n1, n2)

result = n1 - n2

elif f== 2:#乘法

result = n1 * n2

elif f == 3:#除法,要比较大小,并循环取整除

n1, n2 = max(n1, n2), min(n1, n2)

while n1 % n2 != 0:

n1 = random.randint(1, 10)

n2 = random.randint(1, 10)

n1, n2 = max(n1, n2), min(n1, n2)

result = int(n1 / n2)

print(n1, sym[f], n2, '= ', end='')

return result

def createF(): #生成分数

fz1 = random.randint(1, 20)

fm1 = random.randint(1,20)

f1 = Fraction(fz1, fm1)

fz2 = random.randint(1, 20)

fm2 = random.randint(20, 20)

f2 = Fraction(fz2, fm2)

return f1, f2

def numOper():##真分数的运算

symbol = random.choice(['+','-','*','÷'])

f1,f2 = createF()

if symbol =='+':

while f1+f2>1:

f1,f2=createF()

quation.append(str(f1)+'+'+str(f2)+'=')

f=f1+f2

ans.append(str(f))

elif symbol =='-':

f1,f2 = max(f1,f2),min(f1,f2) #防止出现负数

quation.append(str(f1)+'-'+str(f2)+'=')

f=f1-f2

ans.append(str(f))

elif symbol == '*':

while f1*f2>1:

f1,f2 = createF()

quation.append(str(f1)+'*'+str(f2)+'=')

f=f1*f2

ans.append(str(f))

else:

while f1/f2>1:

f1,f2=createF()

quation.append(str(f1)+'÷'+str(f2)+'=')

f=f1/f2

ans.append(str(f))

print(quation)

print(ans)

#制作题库

def test():

sym = ['+', '-', '×', '÷']

print('输入所需要的题目数量')

n=int(input())

result =[]

m=0

while m<=(n-1):

print(m+1,end='、')

result .append(numericalOperation())

print(' ')

m=m+1

m=0

print('对应的答案:')

while m<=(n-1):

print(m+1,'、',result [m])

m=m+1

print('选择想要的模式')

print('1、进行四则运算')

print('2、制作题库')

print("3、真分数计算")

n=int(input())

#当输入1时,进行四则运算,调用函数syzs()

if n==1:

print("输入测试的题目数:")

k=int(input())

p=0

q=0

while p

result = numericalOperation()

j= input()

s= int(j)

if s== result :

q=q+1

print('right')

else:

print('error.,the answer is', result )

p=p+1

print("成绩为%f分",100*q/k)

#当输入2时,进行制作题库

if n==2:

test()

if n==3:

numOper()

4,更新升级

多余的代码判断,拖延程序运行时间

def createF():

fz1= random.randint(1, 20)

fm1= random.randint(1, 20)

f1=Fraction(fz1, fm1)

fz2= random.randint(1, 20)

fm2= random.randint(1, 20)

f2=Fraction(fz2, fm2)

f1,f2=createF()returnf1,f2

5,代码运行结果:

6,总结

python时间隔的太久了,而且一开始理解错误以为可以用java,导致很多时间被浪费了,python这次的作业也让我清楚的了解到自己的一些薄弱点,许多函数的使用任然不太熟,这一次任然有一个地方没有处理好,导致真分数的运算海不可以使用(电脑提示迭代次数过高),下一次我会做的更好的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值