from operator import add, sub
from random import randint, choice

ops = {'+': add, '-': sub,}
MAXTRLIES = 2

def doprod():
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 = 0
while True:
try:
if int(input(pr)) == ans:
print('correct')
break
if oops == MAXTRLIES: # 计数器到时,给出值。并让用户输入
print('answer\n%s%f' % (pr, ans))
else:
print('incorrect... tey again') # 输入的值不符合条件,计数器+1
oops += 1
except (EOFError, KeyboardInterrupt, ValueError, KeyError): # 用来保证不会因为用户的输入而导致程序报错。error
print('invalid input... try again')

def main():
while True: # 循环执行 doprod 函数。
doprod()
try:
opt = input('again? [y]').lower() # 当 doprod 函数执行完成。询问是否继续
if opt and opt[0] == 'n':
break
except (KeyboardInterrupt, EOFError): # 控制用户的错误输入。
break


if __name__ == '__main__':
main()

posted on 2019-01-13 11:50  rookiehbboy  阅读(430)  评论(0编辑  收藏  举报