首页 > 学院 > 开发设计 > 正文

小学数学运算题出题程序

2019-11-11 04:28:35
字体:
来源:转载
供稿:网友

需求原始代码refactoring引入 with 语句处理文件用 dict 代替 list 实现 question_generator利用 list 切片将输出的问题与答案分开改为合起来利用格式化 Excel 文件代替 txt 文件

需求

朋友担心小孩暑假玩疯了,让我弄点小学一年级数学题给小孩做,要求: 1. 就是简单的口算式子 2. 可以打印成 A4 纸 3. 有答案

根据要求,我觉得最简单的办法,就是生成一个内容用 tab 分隔开的 txt 文件,然后手工复制到排版好的 Excel 文件里面直接打印即可。

原始代码

#coding: utf-8"""本代码来自第一感觉,使用函数实现。添加问题类型时,直接修改 main() 的 question_list 语句即可"""import randomdef question_1(): """生成 100 以内退位减法""" minuend = random.randint(11,98) units = minuend % 10 while units==9 : minuend = random.randint(11,98) units = minuend % 10 subtrahend = random.randint(units+1,9) answer = minuend - subtrahend return ("%d - %d = " % (minuend, subtrahend), str(answer))def question_2(): """生成两位数加法""" num1 = random.randint(10, 99) num2 = random.randint(10, 99) answer = num1 + num2 return ('%d + %d =' % (num1, num2), str(answer))def question_3(): """生成两位数减两位数""" minuend = random.randint(11,99) subtrahend = random.randint(10, minuend) answer = minuend - subtrahend return ("%d - %d = " % (minuend, subtrahend), str(answer))def write_it(questions, answers, output_file): format_items(questions) format_items(answers) f = open(output_file, 'w') f.write("".join(questions)) f.write("/n/n/n") f.write("".join(answers)) f.close()def format_items(items, number_per_line = 4): """用换行、tab 美化化输出结果,方便之后导入 excel""" for i,a in enumerate(items): if i % number_per_line == number_per_line - 1: items[i] = a + "/n" else: items[i] = a + "/t"def main(output_file, question_type = 1): """question_type取值:1 到 3 """ questions = [] answers = [] question_generator = [question_1, question_2, question_3] for x in range(80): question, answer = question_list[question_type - 1]() PRint( question) questions.append(question) answers.append(answer) print("now write it") write_it(questions, answers, output_file)if __name__ == '__main__': output_file = "out.txt" main(output_file)

refactoring

引入 with 语句处理文件

以便在发生异常的时候自动关闭资源。将

f = open(output_file, 'w')f.write("".join(questions))f.write("/n/n/n")f.write("".join(answers))f.close()

改为

with open(output_file, 'w') as f: f.write("".join(questions)) f.write("/n/n/n") f.write("".join(answers))

用 dict 代替 list 实现 question_generator

利用 list 切片,将输出的问题与答案分开改为合起来

利用格式化 excel 文件代替 txt 文件


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表