Python习题练习

问题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

测试结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值