小白写的课堂作业,很多功能需要完善,很多代码需要优化,路过的前辈们可以指教一下可以优化的地方,万分感谢。
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为真就执行程序语句,否则为假时就退出程序
还是一名学生的我现在正在不断地进步,如果这份代码和截图可以帮到你,我的注释和代码书写让你明白了这道题目,希望你可以留言或点赞,告诉我你懂了就足够了,我想看到我是否真的帮助到了你,并以此作为我编码是否正确的参考之一,谢谢!最后真心希望你已经可以解决你遇到的问题!