编程需求
# 随机生成两个100以内的数字
# 随机选择加法或是减法
# 总是使用大的数字减去小的数字
# 如果用户答错三次,程序给出正确答案
源代码
import random
#定义加法运算
def add(x,y):
return x+y
#定义减法运算
def loss(x,y):
return x-y
#定义判断函数
def exam():
#将函数存入字典
cmds={'+':add,'-':loss}
#随机生成两个有一百以内的随机数
nums=[random.randint(1,100)for i in range(2)]
#为了保证不出现负数的情况,所以需要对两个数进行降序排列,确保大的数字在前面,小的数字在后面
nums.sort(reverse=True)
#随机决定是加法运算还是减法运算
op=random.choice('+-')
#先让系统算出正确答案
result=cmds[op](*nums)
#输出题目让用户作答
prompt="%s%s%s="%(nums[0],op,nums[1])
#每一道题目有三次作答机会
for i in range(3):
#可能出现的错误
try:
#让用户输入答案
answer=int(input(prompt))
#任何报错都终止本次循环进入下一次循环
except:
continue
#如果用户答对了就退出循环,询问用户是否继续
if answer==result:
print("你真棒!答对了")
break
#答错了就再来一次,直到三次机会用完
else:
print("答错了,请再来一次")
#当用户三次都不对,则告诉答案
else:
print('%s%s'%(prompt,result))
#定义主函数
def main():
while True:
#调用函数,输出题目
exam()
try:
#让用户选择是否继续做题
choice=input('是否继续(y or n)')
#索引错误
except IndexError:
continue
#用户强制中断
except (KeyboardInterrupt,EOFError):
print('用户中断程序')
#跟用户输入了n一样,退出程序
choice == 'n'
#用户输入y则继续
if choice=='y':
continue
#用户输入n则退出
if choice=='n':
print('Bye-bye')
break
#测试
main()
程序运行结果
64-5=59
你真棒!答对了
是否继续(y or n)y
79-79=0
你真棒!答对了
是否继续(y or n)y
92+46=138
你真棒!答对了
是否继续(y or n)