【题目一:随机数加法或乘法题,对做题结果给予评语,每个题目都是两个数的算法,第一个数1-100内,第二个数1-10内】【题目二:猜数字,0-100以内,通过限制猜测次数来分不同难度,并更新提示范围】

小白写的课堂作业,很多功能需要完善,很多代码需要优化,路过的前辈们可以指教一下可以优化的地方,万分感谢。

PS:如果是有需要的道友路过,注释我都写在代码后面了,需要提示的就是Python的严格空格问题、把握好全局变量和局部变量的位置以及变量名最好是有意义的,养成良好编码习惯(虽然我编码不是很规范哈)免得到后面哪个变量是代表什么值自己都懵了,更别说写给别人看来了。希望可以帮到你!

题目一

小明今年小学二年级。但是数学考试总是不过关。小明妈妈请求你开发一个小程序可以锻炼小明的基础计算能力。这个程序每次应该提供 5 个随机的加法或者 5 个乘法题目让小明进行答题,小明如果答对应该对他进行赞扬,如果答错应该安慰他并且告诉他正确的答案。通过菜单可以选择进行加法练习或者乘法练习,除非小明妈妈输入指令,否则程序不会退出。每个题目应当都是两个数的加法或乘法,第一个数 1-100 以内,第二个数 1-10 以内。

#题目一
import random   #导入Python提供的random库,可以使用random函数进行随机数的生成

flag = True  #定义flag为True(真),只要flag为真就执行程序语句,否则为假时就退出程序
while flag:  #只要flag为真就执行程序语句
    subject_Number = 0 #定义常量subject_Number并赋初值为0,此处定义subject_Number是为了计算题目的数量
    #打印提示信息,便于用户操作
    print("a > 加法测试题")
    print("m > 乘法测试题")
    print("q > 退出")
    print("\n")  #换行
    order = input("请输入指令(a/m/q):")   #获取用户输入的指令
    print("\n")  #换行
    while subject_Number < 5: #当所做的题目小于5道时,执行语句
        Num1 = random.randint(1, 100)  #第一个数获取1-100的随机数
        Num2 = random.randint(1, 10)  #第二个数获取1-10 的随机数
        if order == 'a' or order == 'A': #当用户输入a或A时执行下列语句
            #获取随机产生的数字并进行相加操作,返回类型为整型
            Answer = int(input("{} + {} =".format(Num1, Num2)))
            #用Correct_Answer1获取两个数相加后的结果
            Correct_Answer1 = Num1 + Num2
            #如果两个结果相等,则输出赞扬信息并换行,否则输出鼓励信息并输出正确答案
            if Answer == Correct_Answer1:
                print('回答正确!你真棒!')
                print("\n")

            else:
                print("还需要更细心噢!正确答案是 " + str(Correct_Answer1))
                print("\n")

        if order == 'm' or order == 'M': #同理当用户输入m或M时执行下列语句
            # 获取随机产生的数字并进行相加操作,返回类型为整型
            Answer = int(input("{} * {} =".format(Num1, Num2)))
            # 用Correct_Answer1获取两个数相加后的结果
            Correct_Answer2 = Num1 * Num2
            # 如果两个结果相等,则输出赞扬信息并换行,否则输出鼓励信息并输出正确答案
            if Answer == Correct_Answer2:
                print('回答正确!你真棒!')
                print("\n")
            else:
                print('还需要更细心噢!正确答案是:' + str(Correct_Answer2))
                print("\n")

        subject_Number += 1  #当所做的题目数量小于5道时,执行语句并进行+1操作
        if order == "q" or order =="Q": #如果用户输入q或Q时,则结束程序,并返回'小明再见!你会回来的!'
            flag = False

        else:
            continue #做完加法或乘法的五道题目后,若没有接收结束信息(q或Q),则跳出第一层循环继续做题
    #程序结束后返回'小明再见!你会回来的!'
print('小明再见!你会回来的!')

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

题目二

经典的猜数字问题。程序随机生成一个 0 到 100 之间的数字,让用户进行猜测。每次用户猜测之后,更新提示数字的范围。并且该程序应该限制用户的猜测次数,通过让用户选择难度进行次数上限的确认。简单难度 10 次,普通难度 8 次,困难难度 5 次,地狱难度 3 次。

#题目二
import random    #导入Python提供的random库,可以使用random函数进行随机数的生成

flag = True   #定义flag为True(真),只要flag为真就执行程序语句,否则为假时就退出程序
max=100  #定义max为最大值并赋初值为100
min=0    #定义min为最小值并赋初值为0
while flag:
    # 输出提示信息便于用户操作
    print("*********************猜数字游戏*********************")
    print("你能在有限机会之内猜到一个0-100范围内的数字吗? ")
    print("**************************************************** ")
    degree = input("请选择难度(简单[S]/普通[N]/困难[D]/地狱[H]):")  # 接收用户指令选择挑战难度
    if (degree == "S" or degree == "s"):  #用户输入S或s都可以表示选择普通难度
        print("简单难度你有10次机会") #提示用户拥有8次猜测机会
        print("\n")  #换行
        value1 = random.randint(0,100)  #答案是0-100中的某一随机数字
        for i in range(1,11):  #猜对之前有10次答题机会,用i表示用户猜测的次数
            # 在最大最小值范围内,猜对或猜错,都算是一次猜测,循环结束,次数i+1
            while flag:
                input_value1 = int(input("第{}次猜测,该数字在{}到{}之间:".format(i,min,max)))   #接收用户的第i次猜测的数字,并提示正确数字所在范围
                if (input_value1 == value1):   #判断用户猜的数字是否正确
                    print("\n")
                    print("恭喜你!经过{}次尝试,终于猜对啦!".format(i)) #若猜测正确则输出在第i次猜对
                    quit()  #猜对了就结束程序
                elif (input_value1 > value1 and input_value1 <= max and input_value1 >= min):   #判断输入的数字是否在所提示的范围内,输入的值是否大于答案
                    # 若输入数字大于答案,则把最大值改为输入的值减一,并把减一后的数字作为下一次猜测范围的最大值
                    max = input_value1 - 1
                    print("猜错了哟!该数字小于{}.".format(input_value1))
                    print("\n")
                    break  #猜错后没有达到猜题次数限制则继续猜数字
                elif (input_value1 < value1 and input_value1 <= max and input_value1 >= min):    #判断是否在所提示范围内,输入的值是否小于答案
                    min = input_value1 + 1      #若输入的值小于答案,则把最小值改为输入的值加一,作为下一次猜测范围的最小值
                    print("猜错了哟!该数字大于{}.".format(input_value1))
                    print("\n")
                    break  #猜错后没有达到猜题次数限制则继续猜数字
                elif(input_value1 >= max or input_value1 <= min):   #判断是否在某一猜测次数的那一次范围内(因为每次猜测后都会更新范围)
                    # 若不在猜测范围内则输出范围,不计入答题次数,并再次从无效输入这次的猜测次数开始猜测
                    print("无效输入!请输入{}到{}之间的数字.".format(min,max))
                    print("\n")
        print("非常遗憾!你的机会用光了") #当猜测次数到达限制后还没有猜出正确答案。则输出提示信息,并结束程序
        quit() #结束程序

    if(degree == "N" or degree == "n"):  #用户输入N或n都可以表示选择普通难度
        print("普通难度你有8次机会")  #提示用户拥有8次猜测机会
        print("\n")
        value2 = random.randint(0,100)  #答案是0-100中的某一随机数字
        for i in range(1,9):  #正#猜对之前有8次答题机会,用i表示用户猜测的次数
            # 在最大最小值范围内,猜对或猜错,都算是一次猜测,循环结束,次数i+1
            while flag:
                input_value2 = int(input("第{}次猜测,该数字在{}到{}之间:".format(i,min,max)))   #接收用户的第i次猜测的数字,并提示正确数字所在范围
                if (input_value2 == value2):   #判断用户猜的数字是否正确
                    print("\n")
                    print("恭喜你!经过{}次尝试,终于猜对啦!".format(i)) #若猜测正确则输出在第i次猜对
                    quit()  #猜对了就结束程序
                elif (input_value2 > value2 and input_value2 <= max and input_value2 >= min):   #判断输入的数字是否在范围内,输入的值是否大于答案
                    # 若输入数字大于答案,则把最大值改为输入的值减一,并把减一后的数字作为下一次猜测范围的最大值
                    max = input_value2 - 1
                    print("猜错了哟!该数字小于{}.".format(input_value2))
                    print("\n")
                    break  #猜错后没有达到猜题次数限制则继续猜数字
                elif (input_value2 < value2 and input_value2 <= max and input_value2 >= min):    #判断是否在所提示范围内,输入的值是否小于答案
                    # 若输入的值小于答案,则把最小值改为输入的值加一,作为下一次猜测范围的最小值
                    min = input_value2 + 1
                    print("猜错了哟!该数字大于{}.".format(input_value2))
                    print("\n")
                    break   #猜错后没有达到猜题次数限制则继续猜数字
                elif(input_value2 > max or input_value2 < min):    #判断是否在某一猜测次数的那一次范围内(因为每次猜测后都会更新范围)
                    # 若不在猜测范围内则输出范围,不计入答题次数,并再次从无效输入这次的猜测次数开始猜测
                    print("无效输入!请输入{}到{}之间的数字.".format(min,max))
                    print("\n")
        print("非常遗憾!你的机会用光了") #当猜测次数到达限制后还没有猜出正确答案。则输出提示信息,并结束程序
        quit() #结束程序

    if (degree == "D" or degree == "d"):  #用户输入D或d都可以表示选择普通难度
        print("困难难度你有5次机会")
        print("\n")
        value3 = random.randint(0, 100)  #答案是0-100中的某一随机数字
        for i in range(1, 6):  #猜对之前有5次答题机会,用i表示用户猜测的次数
            # 在最大最小值范围内,猜对或猜错,都算是一次猜测,循环结束,次数i+1
            while True:
                input_value3 = int(input("第{}次猜测,该数字在{}到{}之间:".format(i, min, max))) #接收用户的第i次猜测的数字,并提示正确数字所在范围
                if (input_value3 == value3):  #判断用户猜的数字是否正确
                    print("\n")
                    print("恭喜你!经过{}次尝试,终于猜对啦!".format(i))  #若猜测正确则输出在第i次猜对
                    quit()  #猜对了就结束程序
                elif (input_value3 >=value3 and input_value3 <= max and input_value3 >= min):  #判断输入的数字是否在范围内,输入的值是否大于答案
                    # 若输入数字大于答案,则把最大值改为输入的值减一,并把减一后的数字作为下一次猜测范围的最大值
                    max = input_value3 - 1
                    print("猜错了哟!该数字小于{}.".format(input_value3))
                    print("\n")
                    break  #猜错后没有达到猜题次数限制则继续猜数字
                elif (input_value3 < value3 and input_value3 <= max and input_value3 >= min): #判断是否在所提示范围内,输入的值是否小于答案
                    # 若输入的值小于答案,则把最小值改为输入的值加一,作为下一次猜测范围的最小值
                    min = input_value3  + 1
                    print("猜错了哟!该数字大于{}.".format(input_value3))
                    print("\n")
                    break  #猜错后没有达到猜题次数限制则继续猜数字
                elif (input_value3 > max or input_value3 < min):   #判断是否在某一猜测次数的那一次范围内(因为每次猜测后都会更新范围)
                    # 若不在猜测范围内则输出范围,不计入答题次数,并再次从无效输入这次的猜测次数开始猜测
                    print("无效输入!请输入{}到{}之间的数字.".format(min, max))
                    print("\n")
        print("非常遗憾!你的机会用光了")  #当猜测次数到达限制后还没有猜出正确答案。则输出提示信息,并结束程序
        quit()  # 结束程序

    if (degree == "H" or degree == "h"):  #用户输入H或h都可以表示选择普通难度
        print("地狱难度你有3次机会")
        print("\n")
        value4 = random.randint(0, 100)  #答案是0-100中的某一随机数字
        for i in range(1, 4):  #猜对之前有3次答题机会,用i表示用户猜测的次数
            # 在最大最小值范围内,猜对或猜错,都算是一次猜测,循环结束,次数i+1
            while flag:
                input_value4 = int(input("第{}次猜测,该数字在{}到{}之间:".format(i, min, max)))  #接收用户的第i次猜测的数字,并提示正确数字所在范围
                if (input_value4 == value4):  #判断用户猜的数字是否正确
                    print("\n")
                    print("恭喜你!经过{}次尝试,终于猜对啦!".format(i))  #若猜测正确则输出在第i次猜对
                    quit()  #猜对了就结束程序
                elif (input_value4 >= value4 and input_value4 <= max and input_value4 >= min):  #判断输入的数字是否在范围内,输入的值是否大于答案
                    # 若输入数字大于答案,则把最大值改为输入的值减一,并把减一后的数字作为下一次猜测范围的最大值
                    max = input_value4 - 1
                    print("猜错了哟!该数字小于{}.".format(input_value4))
                    print("\n")
                    break  #猜错后没有达到猜题次数限制则继续猜数字
                elif (input_value4 < value4 and input_value4 <= max and input_value4 >= min):  #判断是否在所提示范围内,输入的值是否小于答案
                    # 若输入的值小于答案,则把最小值改为输入的值加一,作为下一次猜测范围的最小值
                    min = input_value4 + 1
                    print("猜错了哟!该数字大于{}.".format(input_value4))
                    print("\n")
                    break  #猜错后没有达到猜题次数限制则继续猜数字
                elif (input_value4 > max or input_value4 < min):   #判断是否在某一猜测次数的那一次范围内(因为每次猜测后都会更新范围)
                    # 若不在猜测范围内则输出范围,不计入答题次数,并再次从无效输入这次的猜测次数开始猜测
                    print("无效输入!请输入{}到{}之间的数字.".format(min, max))
                    print("\n")
        print("非常遗憾!你的机会用光了")  #当猜测次数到达限制后还没有猜出正确答案。则输出提示信息,并结束程序
        quit()  # 结束程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

截图里的是题目一直接到题目二的,因为我把两个题目的代码放在一个.py文件下,要是放在一个.py文件下,注意题目二的导入random库的步骤不要删。
import random    #导入Python提供的random库,可以使用random函数进行随机数的生成

flag = True   #定义flag为True(真),只要flag为真就执行程序语句,否则为假时就退出程序

还是一名学生的我现在正在不断地进步,如果这份代码和截图可以帮到你,我的注释和代码书写让你明白了这道题目,希望你可以留言或点赞,告诉我你懂了就足够了,我想看到我是否真的帮助到了你,并以此作为我编码是否正确的参考之一,谢谢!最后真心希望你已经可以解决你遇到的问题!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值