问题1:实现10以内任意数字的加法
思路:这里主要是一个判断输入是否合法,exit()控制退出,这里要注意直接退出的不输出正确率。
import random
rightCount = 0 # 初始化记录正确的次数
wrongCount = 0
while True:
num1, num2 = random.randint(0, 10), random.randint(0, 10)
print('开始游戏!退出游戏请输入"exit"')
print("%d + %d = ?\n请输入你的答案:" % (num1, num2))
res = input()
if res.isdigit(): # 如果输入的是数字的话进行判断
if int(res) == (num1 + num2):
print("恭喜!")
rightCount += 1
else:
print("猜错了!")
wrongCount += 1
elif res == 'exit': # 如果输入的是exit,退出
# 这里要注意,用户直接输入exit,此时总判断次数为0,即被除数为0,会出现编译出错,所以进行一个判断
if not (wrongCount == 0) or not (rightCount == 0):
print("猜对次数为:%d;正确率为:%.2f%%" % (rightCount, rightCount / (rightCount + wrongCount) * 100))
print("退出游戏")
exit()
else:
print("请输入数字!")
测试结果:
问题2:100以内任意数字的加减乘除
思路:这里有几处难点,一是要控制带符号的数字输入,有多种方法,这里采用用正则定义一个函数,也可以用replace替换’-’,直接判断数值结果;二是处理小数,比如除法运算,这里统一规定输入除法结果要保留两位小数,输入将‘.’直接替换成’’,即只保留数值部分,利用格式化字符串format保留2位小数,同样去除’.’,与输入直接对比数值。
import random
from re import match
rightCount = 0
wrongCount = 0
sumCount = wrongCount + rightCount
# 定义一个函数,判断有无符号的整数,因为isalnum无法判断符号数字
def is_Digit(num):
return (match('^[+-]{0,9}\d+$', num) is not None)
# 测试这个函数是否有用
# test1 = '_abc'
# test2 = '-124'
# print(is_Digit(test1),is_Digit(test2))
while True:
num1, num2 = random.randint(0, 100), random.randint(0, 100)
list = ["+", "-", "*", "/"]
option = random.choice(list)
print("%d %s %d = ?\n请输入你的答案:" % (num1, option, num2))
print("(注意:如果是除法,请保留2位小数)")
res = input().replace('.','')
if is_Digit(res): # 判断是否是数字(带符号)
if option == "+":
if int(res) == num1 + num2:
print("恭喜!")
rightCount += 1
else:
print("猜错了!")
wrongCount += 1
elif option == '-':
if int(res) == num1 - num2:
print("恭喜!")
rightCount += 1
else:
print("猜错了!")
wrongCount += 1
elif option == '*':
if int(res) == num1 * num2:
print("恭喜!")
rightCount += 1
else:
print("猜错了!")
wrongCount += 1
elif option == '/':
# if res == str(round(num1 / num2, 2)).replace('.', ''):
if res == format(num1 / num2, '.2f').replace('.',''):
print("恭喜!")
rightCount += 1
else:
print("猜错了!")
wrongCount += 1
elif res == "exit":
if rightCount != 0 or wrongCount != 0:
print('正确次数:%d\n正确率:%.2f%%' % (rightCount,
rightCount / (rightCount + wrongCount) * 100))
print("退出游戏!")
exit()
else:
print("请输入数字!")
wrongCount += 1
测试结果: