本文共 1345 字,大约阅读时间需要 4 分钟。
随机选择数字以及一个算术函数, 显示问题, 以及验证结果. 在 3 次错误的尝试以后给出结果,等到用户输入一个正确的答案后便会继续运行.
从 operator 和 random 模块中导入我们会用到的函数。定义全局变量 ops,一个包含了运算符和与其相关联的函数的集合(字典)。定义全局变量 maxtaries,表示用户有多少次机会尝试给出答案的整型变量。
定义核心程序 doprob()。在程序开始时随机选择一个操作(op 选自 '+' 或 '-'),并生成两个随机操作数(nums 选自 [1, 10])。将这两个操作数按大到小排序,以避免减法问题中的负数问题。
定义变量 ans 为运算结果,调用一个数学函数计算出正确的解。定义变量 pr 用于生成提示用户计算的等式。定义变量 oops 用于计数用户尝试次数。
通过循环方式让用户尝试输入答案。在用户输入答案时,判断是否正确。如果正确则输出“correct”,并继续运行程序。如果错误则输出“incorrect... try again”并计数尝试次数。当用户尝试次数达到最大值或用户输入 n 或 N 时退出循环。
ops = { '+': add, '-': sub} 定义全局变量 maxtaries 为 3,表示用户有3次机会尝试给出答案。
定义核心程序 doprob()。在程序开始时随机选择一个操作(op 选自 '+' 或 '-'),并生成两个随机操作数(nums 选自 [1, 10])。将这两个操作数按大到小排序,以避免减法问题中的负数问题。
定义变量 ans 为运算结果,调用一个数学函数计算出正确的解。定义变量 pr 用于生成提示用户计算的等式。定义变量 oops 用于计数用户尝试次数。
通过循环方式让用户尝试输入答案。在用户输入答案时,判断是否正确。如果正确则输出“correct”,并继续运行程序。如果错误则输出“incorrect... try again”并计数尝试次数。当用户尝试次数达到最大值或用户输入 n 或 N 时退出循环。
def doprob(): global op, nums op = choice(('+', '-')) nums = [randint(1, 10) for _ in range(2)] nums.sort(reverse=True) ans = ops[op](nums) pr = f"{'%d %s %d = ' %s}" % (nums[0], op, nums[1], ans) 定义变量 oops 用于计数用户尝试次数。通过 while True 循环让用户尝试输入答案。在用户输入答案时,通过 try 语句捕捉用户的输入错误(如 KeyboardInterrupt、EOFError 等)。
while True: try: opt = raw_input('Again?[y]') except: break if __name__ == '__main__': break 如果用户输入 n 或 N 退出用户循环。输出提示信息并重新运行程序。
转载地址:http://isofk.baihongyu.com/