Github地址:

https://github.com/guoyuyi/gyy.github.io/blob/%E4%BD%9C%E4%B8%9A1/zy1.py

题目描述:

  通过python语言编写一个能够自动生成小学四则运算的程序(注意是给小学生用的,要是结果出现负数的话他们会很迷茫的!),同时,除了整数外,还要支持真分数的四则运算。

Psp表格:

第一次作业PSP

任务内容

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

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

Planning

计划

60

60

Estimate

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

20

30

Analysis

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

40

80

Design

具体设计

30

40

Coding

具体编码

300

500

test

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

150

200

Postmortem & Process

Improvement Plan

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

30

50

Summary

合计

630

960

1.程序设计

生成简单的四则运算题目需要两个整数或是分数,为了将答案与算式分类,用两个列表储存。q[]用来存储问题,ans[]用来存储答案。我们可以通过random模块生成一定区间里的随机数,分数也可以通过随机生成分子和分母的形式随机生成。同时分数可以使用Fraction模块,可以同时实现分数与整数的运算以及分子和分母的约分。

下面是各个函数的代码:

2.实现代码

# -*- coding: utf-8 -*-
"""
Created on Sun Sep 20 20:24:13 2020

@author: guo'yu'yi
"""
import datetime
import argparse
import re
import random
from fractions import Fraction
##四则运算
def count1(question, ans1):
symbol = random.choice(['+', '-', '*', '/']) # 随机符号的产生
if symbol == '+':#加法
n1 = random.randint(0, 20)
n2 = random.randint(0, 20)
question.append(str(n1) + '+' + str(n2) + '=')
ans1.append(n1 + n2)
elif symbol == '-':#减法
n1 = random.randint(0, 20)
n2 = random.randint(0, 20)
n1,n2 = max(n1,n1),min(n1,n2)#保证出现的数字为正数
question.append(str(n1) + '-' + str(n2) + '=')
ans1.append(n1 - n2)
elif symbol == '*':#乘法
n1 = random.randint(0, 20)
n2 = random.randint(0, 20)
question.append(str(n1) + '×' + str(n2) + '=')
ans1.append(n1 * n2)
else:#除法保证分母不为0
n1 = random.randint(0, 20)
if n1 == 0:
n2 = random.randint(1, 20)
else:
n2 = random.randint(1, n1 + 1)
question.append(str(n1) + '÷' + str(n2) + '=')
ans1.append(Fraction(n1, n2))

##随机生成两个分数
def createF():
fz1 = random.randint(0, 20)
if fz1 == 0:
fm1 = random.randint(1, 20)
else:
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 f(f):#分数的转换
a=f.numerator #分子
b=f.denominator #分母
if a%b==0:#计算为整数
return '%d'%(a/b)
elif a<b:#计算为真分数
return '%d%s%d' % (a,'/',b)
else:#计算为带分数
c=int(a/b)
a = a - c * b
return '%d%s%d%s%d' % (c,'’',a,'/',b)#带分数

##两个分数的四则运算
def count2(question,ans1):
symbol = random.choice(['+','-','*','/'])
f1,f2 = createF()
if symbol =='+':
while f1+f2>1:
f1,f2 = createF()
question.append(str(f1)+'+'+str(f2)+'=')
ans1.append(f1+f2)
elif symbol =='-':
f1,f2 = max(f1,f2),min(f1,f2)#保证出现的数字为正数
question.append(str(f1)+'-'+str(f2)+'=')
ans1.append(f1-f2)
elif symbol == '*':
while f1*f2>1:
f1,f2 = createF()
question.append(str(f1)+'×'+str(f2)+'=')
ans1.append(f1*f2)
else:
while f1/f2>1:
f1,f2=createF()
question.append(str(f1)+'÷'+str(f2)+'=')
ans1.append(Fraction(f1,f2))

##主类
def main():
while 1:
print("输入题目的数量", end=" ")
k = int(input())
temp = 100 / k
score = 0
question = []
ans1 = []
ans2 = []
for i in range(k):
n = random.randint(1, 4)
if n == 1:
count1(question, ans1)
g = Fraction(ans1[i])
ans2.append(f(g))
else:
count2(question, ans1)
g = Fraction(ans1[i])
ans2.append(f(g))#记录带分数答案
for i in range(k):
print("第{}题:{}".format(i + 1,question[i]), end=" ")
a = input()
if a == str(ans1[i]):
score =score + temp
print("所得的分数为:{}".format(score))
print("正确答案:", end=" ")
for i in range(k):
if str(ans1[i]) == str(ans2[i]):
print(question[i] + str(ans1[i]))
else:
print("{}{}或{}".format(question[i],str(ans2[i]),str(ans1[i])))

if __name__ == '__main__':
main()

  

3.程序运行结果

总结:

写程序过程中发现了很多不足,花费的时间比起预计的时间超出很多,而且注册账号摸索GitHub花了很多时间,下次争取补上吧~

Python实现自动生成小学四则运算题目的更多相关文章

  1. python实现自动生成小学四则运算题目(软工第二次项目作业)

    前言 软件工程 传送带 作业要求 传送带 作业目标 结对编程:代码实现.性能分析.异常处理说明.记录PSP表格 代码见: github 个人信息:朱育清 3118005437 信安二班 我的partn ...

  2. myapp——自动生成小学四则运算题目的命令行程序(侯国鑫 谢嘉帆)

    1.Github项目地址 https://github.com/baiyexing/myapp.git 2.功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 功能(已全部实现) 使用 -n ...

  3. 作业二:个人编程项目——编写一个能自动生成小学四则运算题目的程序

    1. 编写一个能自动生成小学四则运算题目的程序.(10分)   基本要求: 除了整数以外,还能支持真分数的四则运算. 对实现的功能进行描述,并且对实现结果要求截图.   本题发一篇随笔,内容包括: 题 ...

  4. Individual Project "写一个能自动生成小学四则运算题目的程序"

    一.题目简介 写一个能自动生成小学四则运算题目的程序. 初步拟定要实现的功能后,估计一下自己需要花多长时间.编程过程中记录自己实际用了多长时间. 然后和同学们比较一下各自程序的功能.实现方法的异同等等 ...

  5. C语言:一个能自动生成小学四则运算题目的程序

    完成这个程序,半个小时内完成了,这个程序,可以自动生成小学简易的四则运算,提供菜单让用户选择,然后判断加减乘除,判断答对答错的题目个数,用户同时也可以重新选择继续答题或重新选择或退出程序. 源程序: ...

  6. 实现一个自动生成小学四则运算题目的命令行程序(java实现)

    Github项目地址:https://github.com/xiaobaot/wordcount/tree/master/sizeyusuan 团队成员:谢家明(代码生成)    谢竣(测试完善) 项 ...

  7. java实现自动生成小学四则运算——朱庭震,詹祺豪

    组员:朱庭震,詹祺豪 Github地址:https://github.com/ztz1998/second/tree/master 1题目:实现一个自动生成小学四则运算题目的命令行程序. 2说明: 自 ...

  8. 使用MFC做一个简单的‘能自动生成小学生四则运算的软件’

    这是软件工程的第一次作业!但由于我们python还没入门,所以这次的要求是‘语言不限’. 小学期做过一个关于MFC的‘资金管理系统’,也正好可以有界面,所以就选择了自己很熟悉的MFC来做这个作业! 1 ...

  9. (Python)自动生成代码(方法一)

    在写某个平台的自动化脚本时,笔者把全部的操作都封装到了两个类中,page.py和commonpage.py: page.py部分代码: class BasePage(object): ''' 页面基础 ...

随机推荐

  1. Dubbo系列之 (五)服务订阅(2)

    辅助链接 Dubbo系列之 (一)SPI扩展 Dubbo系列之 (二)Registry注册中心-注册(1) Dubbo系列之 (三)Registry注册中心-注册(2) Dubbo系列之 (四)服务订 ...

  2. 构造 IPv6 报文

    #!/usr/bin/python from scapy.all import * a=IPv6(nh=58, src='fe80::214:f2ff:fe07:af0', dst='ff02::1' ...

  3. 算法-heapq模块优先队列

    heapq模块, 优先队列,小顶堆,最少值放在顶部,值越小,优先级越高 heapq.heappop(heap) 从堆中弹出最小的元素,并重新调整 heapq.heappush(heap, item)新 ...

  4. jQuery 筛选方法

    前言 在jQuery中所有的东西全部都包含在jQuery对象中,并没有单独的DOM元素这一说法. 要想获取单独的DOM元素请用[index]获取,下面介绍的所有方法都会返回新的jQuery对象,而不是 ...

  5. Linux 部署java web 项目,验证码图片不显示文字问题

    系统上线后,在获取验证码接口时,获取的验证码图片上没有对应的验证码数字,经过验证后,是由于Linux缺少字体造成的. 正常我们也可以将window的字体直接上传到linux服务器上,window的字体 ...

  6. [PyTorch 学习笔记] 3.2 卷积层

    本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_convolution.py 这篇文 ...

  7. IntPtr to bytes

    byte[] managedArray = new byte[size]; Marshal.Copy(pnt, managedArray, 0, size);

  8. 递推dp数位

    1-n里有多少个1 #include <cstdio> #include <iostream> using namespace std; int main() { int n= ...

  9. Android Studio从Eclipse导项目

    要是你只下了Android Studio 就不能用Eclipse导出gradle项目了 可以直接使用Android Studio导入模块,在Android Studio里Project算Eclipse ...

  10. 大厂运维必备技能:PB级数据仓库性能调优

    摘要:众所周知,数据量大了之后,性能是大家关注的一点,所以我们在业务开发的时候,特别关注性能,做为一个架构师,必须对性能要了解,要懂.才能设计出高性能的业务系统. 一.GaussDB分布式架构 所谓集 ...