随机选择数字以及一个算术函数, 显示问题, 以及验证结果. 在 3 次错误的尝试以后给出结果,等到用户输入一个正确的答案后便会继续运行.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# -*- coding: UTF-8 -*-
from
operator
import
add, sub
#从 operator 和 random 模块中,导入我们会用到的函数
from
random
import
randint, choice
ops
=
{
'+'
: add,
'-'
: sub}
#定义全局变量 一个包含了运算符和与其相关联的函数的集合(字典)
maxtaries
=
3
#定义全局变量 用户有多少次机会尝试给出答案的整型变量
def
doprob():
#定义此程序的核心程序
op
=
choice(
'+-'
)
#随机选择一个操作
nums
=
[randint(
1
,
10
)
for
i
in
range
(
2
)]
#随机生成两个操作数
nums.sort(reverse
=
True
)
#为了避免减法问题中的负数问题,将这两个操作数按大到下进行排序
ans
=
ops[op](
*
nums)
#调用一个数学函数计算出正确的解
pr
=
'%d %s %d ='
%
(nums[
0
], op, nums[
1
])
#生成 提示用户计算的等式
oops
=
1
#定义 用户尝试机会的计数器
while
True
:
try
:
if
int
(
raw_input
(pr))
=
=
ans:
#判断 用户输入的答案和 正确答案比较
print
'correct'
#输出提示信息
break
#退出循环
if
oops
=
=
maxtaries:
#当用户尝试次数等于用户最大尝试次数时
print
'answer\n%s%d'
%
(pr,ans)
#将等式和 正确的答案输出
break
else
:
#在其他情况下
print
'incorrect... try again'
#输出提示信息
oops
+
=
1
#用户尝试机会的计数器加一
except
(KeyboardInterrupt, EOFError, ValueError):
#捕捉用户的错误输出
print
'invalid input... try again'
#输出提示信息
def
main():
while
True
:
doprob()
#调用核心函数
try
:
opt
=
raw_input
(
'Again?[y]'
).lower()
#读取用户输入的参数 如果是大写字母时变为小写
if
opt
and
opt[
0
]
=
=
'n'
:
#当用户输入n 或 N 退出用户循环
break
except
(KeyboardInterrupt, EOFError):
break
if
__name__
=
=
'__main__'
:
main()
|
本文转自 Xuenqlve 51CTO博客,原文链接:http://blog.51cto.com/13558754/2062597,如需转载请自行联系原作者