python出题器_[python小工具]加减法出题器-Go语言中文社区

本文介绍了使用Python快速构建一个加减法出题器,适用于小学生,避免出现负数,通过调整参数生成不同难度的题目,并以Excel格式保存。通过示例代码展示了如何实现这一功能。
摘要由CSDN通过智能技术生成

python的开发速度真心快快快,而计算速度也是在可以容忍的范围内,最近无聊,孩子也要放暑假了,给孩子做了一个加减法出提器,儿子,别怪爸爸狠,就拿机器来训练你吧~!

具体的构建思路可以总结如下:

①建立一个构建算式的函数,参数包括算式内的数字数量和取值的上下限,一共3个参数。

②在这个函数内会遇到一个问题,就是小学生没有学习负数知识,所以从左到右运算的时候是不能出现负数的,我的处理办法是用一个if分支语句判断算式由左到右构建的时候是否出现负数,如果出现负数,那么需要将上一步的“ - "号变成” + ” 号。这样做的结果是加法运算会比减法运算更多一些。

③构建完函数之后,需要构建一个DataFrame,分别为算式和答案,这个时候为了方便打印,我用了截取和重构原DataFrame,最终形成三列问题,三列答案。当然如果需要的话,可以将答案打印在另外一张纸上,这里就不详细解释了。最后to_excel到打印的Excel文档里就ok了。先上个效果图,当然给儿子不会作这么变态的题。:D

#ipython 命令和参数输入如下:

%run 'C:/Users/wind1982/Desktop/kidshomwork/powerfulmod.py'

please input by the following order:(w,x,y,z).

w,number of the question(Can be divided exactly by 3).

x,buttom of range_numerical.

y,top of range_numerical.

z,compute length.

must input 4 value:300,1000,10000,5

#输出效果如下如图

dc0de79be2816f496e2ea46d471e9519.png

import random

import pandas as pd

import numpy as np

def comput(x,y,z):

rnd_list=[random.randint(x,y) for a in range(z)] #构建基础随机序列

comput_mod=""

for i in map(str,rnd_list):

comput_mod=comput_mod+i+random.choice([" + "," - "]) #随机添加加减号

if eval(comput_mod[:-3])<0: #小学生从左到右不能有负数

comput_mod=comput_mod[:-3-len(i)-3]+" + "+comput_mod[-3-len(i):]

comput_1stmod=comput_mod[:-3] #截取算式长度,符合外观要求

k=eval(comput_1stmod) #得到算式的结果

j=comput_1stmod+" = " #添加等号

return j,k

####################以上完成单个对应算式的构建,以下构建整表#######################

(w,x,y,z)=input("please input by the following order:(w,x,y,z).nw,number of the question(Can be divided exactly by 3).nx,buttom of range_numerical.ny,top of range_numerical.nz,compute length.nmust input 4 value:")

seq=[]

for ql in range(w): #question number

seq.append(comput(x,y,z))

seq=pd.DataFrame(seq,index=None)

seq=seq.rename(columns={0:"q1",1:"a1"})

seq_new=pd.DataFrame({})

seq_new["q2"]=list(seq["q1"][int(w/3):2*int(w/3)])

seq_new["a2"]=list(seq["a1"][int(w/3):2*int(w/3)])

seq_new["q3"]=list(seq["q1"][2*int(w/3):])

seq_new["a3"]=list(seq["a1"][2*int(w/3):])

seq_new["q1"]=list(seq["q1"][0:int(w/3)])

seq_new["a1"]=list(seq["a1"][0:int(w/3)])

seq_new.to_excel('C:/Users/wind1982/Desktop/kidshomwork/powerfulmod.xlsx')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值