python语言小程序-四则运算小程序(Python)

二. 题目要求

写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24

2)程序要求能处理用户的输入,判断对错,累积分数

3)程序支持可以由用户自行选择加、减、乘、除运算

4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

三. 代码

import random # 随机生成数

from fractions import Fraction # 分数的运算

list_questions=[] # 储存 题目 信息的列表

list_answers =[] # 储存 答案 信息的列表

#加法运算

def add():

num1 = random.randint(1, 100) #随机生成两个数

num2 = random.randint(1, 100)

list_questions.append(str(num1) + '+' + str(num2) + '=') #题目,答案 追加到列表中

list_answers.append(num1 + num2)

#减法运算

def cut():

num1 = random.randint(1, 100)

num2 = random.randint(1, 100)

if num1 < num2:

num1, num2 = num2, num1

list_questions.append(str(num1) + '-' + str(num2) + '=')

list_answers.append(num1 - num2)

#乘法运算

def mul():

num1 = random.randint(1, 100)

num2 = random.randint(1, 100)

list_questions.append(str(num1) + 'x' + str(num2) + '=')

list_answers.append(num1 * num2)

#除法运算

def div():

num1 = random.randint(1, 100)

num2 = random.randint(1, 100)

num = Fraction(num1,num2)

list_questions.append(str(num1) + '÷' + str(num2) + '=')

list_answers.append(num)

#随机运算

def rand_nums():

rule = random.choice(['+','-','x','÷']) #随机生成 运算符

if rule == '+': #生成 加法 题目,答案

add()

elif rule == '-': #生成 减法 题目,答案

cut()

elif rule == 'x': #生成 乘法 题目,答案

mul()

else: #生成 除法 题目,答案

div()

# 判断对错,并计算分数

def judge():

count = 0 #分数值

for i in range(len(list_questions)):

print("第{}题".format(i + 1))

print("题目:",list_questions[i])

y_answer = eval(input("请输入你的答案:")) #输入答案

if y_answer == float(list_answers[i]): #判断对错

print("回答正确!")

print("----------------")

count += 1

else:

print("很遗憾,回答错误!正确答案是:{}".format(list_answers[i]))

print("----------------")

return count

#真分数运算

def frac():

fz1 = random.randint(1,10) #分子 1

fm1 = random.randint(1,10) #分母 1

if fz1 > fm1:

fz1,fm1 = fm1,fz1 # 保证为真分数

num1 = Fraction(fz1,fm1) # 调用 Fraction 生成分数

fz2 = random.randint(1,10) #分子 2

fm2 = random.randint(1,10) #分母 2

if fz2 > fm2:

fz2,fm2 = fm2,fz2

num2 = Fraction(fz2,fm2)

if num1 < num2:

num1,num2 = num2,num1 # 保证结果为正数,除法除外

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

if rule == '+':

list_questions.append(str(num1) + ' + ' + str(num2) + '=')

list_answers.append(num1 + num2)

elif rule == '-':

list_questions.append(str(num1) + ' - ' + str(num2) + '=')

list_answers.append(num1 - num2)

elif rule == 'x':

list_questions.append("(" + str(num1) + ")" + 'x' + "(" + str(num2) + ")" + '=')

list_answers.append(num1 * num2)

else:

list_questions.append("(" + str(num1) + ")" + '÷' + "(" + str(num2) + ")" + '=')

list_answers.append(num1 / num2)

# 打印界面提示信息

def display():

print("------------------------欢迎来到随机生成四则运算小程序------------------------")

print()

print("********* 1. 加法运算(+)")

print("********* 2. 减法运算(-)")

print("********* 3. 乘法运算(x)")

print("********* 4. 除法运算(÷)")

print("********* 5. 随机生成(随机生成四种运算)")

print("********* 6. 真分数运算(随机生成四种运算)")

print()

print("提示:对于除不尽的数可以用分数表示:如 1÷3 = 1/3, 13÷67 = 13/67")

print("---------------------------------------------------------------------------")

#主函数

def main():

display() #调用显示函数

n = int(input("请输入题目的数量:"))

print("----------------")

choose_rule = int(input("请选择要进行的运算(1-6):"))

for i in range(n):

if choose_rule == 1:

add()

elif choose_rule == 2:

cut()

elif choose_rule == 3:

mul()

elif choose_rule == 4:

div()

elif choose_rule == 5:

rand_nums()

elif choose_rule == 6:

frac()

else:

print("输入有误,请选择(1-6)!")

break

count = judge() #调用judge函数,判断对错,并计分

rate = count/n

print("总共{}分,共答对{}分,正确率:{:.2f}%".format(n,count,rate*100))

main() #主函数调用

三.运行结果

1.显示界面python语言小程序-四则运算小程序(Python)

2.加法运算

python语言小程序-四则运算小程序(Python)

3.随机运算

python语言小程序-四则运算小程序(Python)

4.真分数运算

python语言小程序-四则运算小程序(Python)

任务内容

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

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

计划

20

20

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

20

15

开发

0

0

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

60

120

生成设计文档

0

0

设计复审

15

30

代码规范

5

5

具体设计

30

20

具体编码

120

180

代码复审

10

10

报告

0

0

测试报告

0

0

计算工作量

300

300+

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

30

50

四.总结或感想

通过此次班级作业学习到了一些新知识或技能,首先,因为第一次随笔只是简单的叙述,此次随笔学习到了博客园中如何插入代码,图片,设置表格等操作。其次,通过此次小程序的设计,对Python知识有了进一步的熟悉,为什么选择Python语言呢?因为最近接触的比较多,而且即将面临Python的考试。同时考虑到真分数的运算,调用Python的第三方库也比较方便。再者,作业中提到了psp表格,对软件开发过程有进一步了解,从目前自身情况来看,包括一些小程序的设计或者课程设计报告,每次都只是着重如何设计代码,没有考虑开发过程中的一系列步骤。就算考虑到了,也只是简而了之,对每个过程中的具体任务没有明确的划分。反应的问题就是,现实世界可能要比想象的复杂,从而导致需求也只是基本得到满足,还要考虑的因素还有很多。