编程、写代码属于脑力劳动 。做应用研究貌似是个生产虚拟之物的事件 。但电脑程序大都是用途明确的 。而且好的程序都是很实用 。
学python也讲究学以致用 。这点越早越好 。我们现在就用python编个实用的程序来 。不仅仅应该自家重复使用 。而且应该发给别人用:给小幼儿生成口算题 。
首先我们要把目标再详细、明确些 – 确认要求:生成百以内的加减法口算题
一次运行 。连续出10题供使用的人健身 。一题一题地做;
如果有做错的题目 。把它们打印出去给使用的人看
根据 自学Python进阶-把代码变成程序 。应用 讲的方法 。我们将把实现这些功能的代码全部放在一个文件里:mathExam.py 。编写完成后 。你就应该把这种文件重复运行 。多次使用 。也应该发给朋友家、好友用 。
为了提高程序出题的效果 。我们期望每次题目都会有大变化 – 编程里常称为:随机 。这种功能应该使用python基础库里的: random库 。我们仅仅用里面的 randint 函数来随机生成一个整数 。
这里我们提到了编程上一个新概念:函数 。Python程序代码里的函数和数学书本上的函数 。形式不一样 。但是功用十分类似 。定义Python的一个函数格式如下:
def functionName(p1, p2, p3):
functionBody
return result
之中的 def 是python的关键字 。说明我们要开始定义一个函数了 。而后面的 functionName是函数名字 – 这部分你应该自己想个名字的 。后面括号及其里面逗号隔开的部分只是函数的参数 – 它们应该在使用函数时临时一一提供 。这样即能重复使用它下面的代码又能灵巧变化 。这正是函数的威力和魅力 。
文章插图
python代码函数是全部现代编程语言里最基础、最重要的代码团队形式 。代码重复使用方法 。它在全部的应用代码里几乎无处不在 。前面提到的random库里面就提供好些随机生成资料的函数 。我们下面会用到里面的 randint函数 。
函数的 functionBody 部分只是我们要编码实现功能的地方 。末尾的 return result 只是把我们事件的结果返回给使用我们函数的人 。
就像python本身的基础库里有很多函数一样 。我们也应该在我们的mathExam.py里写多个函数 。用函数来团队我们的代码 。
首先 我们定义一个函数解决要求 1 的部分:
# 随机生成一个口算题及其正确结果的函数
def genOneExercise():
opt = random.randint(0, 1) # 在0和1中随机取一个值
if opt == 1: # 如果随机获取的是 1 。我们就生成加法口算题
a = random.randint(1, 99)# 小心这里是 99
b = random.randint(1, 100-a) # 这是保证百以内加法的地方
result = a + b
return a, opt, b, result
else:# 如果随机获取的是 0 。我们就生成减法口算题
a = random.randint(1, 100)
b = random.randint(1, 100)
if a > b:
result = a - b
return a, opt, b, result
else:
result = b - a # 这里是避免出现减数不够的地方
return b, opt, a, result
我们这种函数第一行的定义括号里是空的 。说明着使用它时不需要提供参数 。这种函数每使用一次 。程序员的叫法是调用一次 。就生成一个满足上面要求1的结果 。里面的 randint(start, end)函数 。调用它应该获取一个数 。这种数是从a开始(包含a)到b结束(包含b)的周围里随机选取的 。
口算的题目和结果 。我们存在一个元组里了 。并用1 。0来分别表示加 。减运算 。我们不应该把+ 。-符号存在变量里 。因为这两个符号在python语言里是特别的类别符号 。它们不一样于数字或字符串类别的资料 。所以随机的加减运算在记录、存储到变量里时我们转换了一下 。一样下面输出提示时也要相应转换 。
下面观望要求2里的代码长什么样:
def doExercises(times):
random.seed(time.time())
# 为了保障随机效果 。每次运行时给随机系统一个变化的种子
errorList = []
i = 0
while i < times:
x, op, y, res = genOneExercise()
if op == 1:
tip = str(x) + ' + ' + str(y) + ' = '
else:
tip = str(x) + ' - ' + str(y) + ' = '
ret = int(input(tip)) # 小心把输入的字符串类别转换成数学计算的整型
if ret != res:# 只有口算结果错了时才记录
record = (x, op, y, res, ret) # 把一次口算错误的消息团队成一个元组
errorList.append( record )
i = i + 1
return errorList
小心这种函数的定义我们指定了参数变量 times – 做口算题的次数 。这样我们在调用的地方就应该方便地规定一次做多少道口算题目了 。这里我们把口算的题目的提示转换成字符串的日常数学式子后 。放在python内部自带的函数 input里当作参数:输出到屏幕上 。并等待你输一个数字给程序 。
推荐阅读
- 喜欢给男主播打赏的女人是什么心理?
- 刘德华创作的歌曲 刘德华作词作曲的歌有多少首
- 被诱骗打赏主播后,钱还有希望要回来吗?
- 这应该是全网最全的CMS学习笔记了-cms教程大全
- 你玩过哪一款游戏最有武侠味?
- 给主播打赏和不打赏都属于哪一类群体的人,大家说说看?
- 王者荣耀荣耀水晶多少钱,荣耀水晶价格介绍
- 头条和抖音好多传奇广告,大家觉得这会诱导人陷入游戏坑吗?
- 关于快手直播打赏的现象,大家觉得该不该制止?为什么?