求问一个问题,求老师帮忙看一下这个代码出了什么问题!
来源:3-2 项目作业
kkkkke
2019-04-07 23:29:13
import random
def guide_page(guide_word):
if guide_word ==0:
print('您输入的数字区间相同,请重新启动游戏')
elif guide_word ==1:
print('*'*20)
elif guide_word == 2:
print('{}{}{}'.format('*'*10,'欢迎使用猜猜猜小游戏','*'*20))
def construct_range_value(n1,n2):
n1 = int(n1)
n2 = int(n2)
return [n1, n2]
def set_final_num(num1, num2):
if num_equal(num1, num2) == 1:
l = construct_range_value(num1, num2)
lst = filter(lambda m: m == int(m),l)
return list(lst)
if num_equal(num1, num2) == 0:
return '您输入的区间有误,请重新启动程序'
#调用自定义函数判断用户输入值是否正确
def num_equal(s1,s2):
if s1 != s2:
return 1
else:
return 0
def all_num(n):
if n.isdigit():
return True
else:
return False
def check_num_legal(num,num1,num2,rl):
i = 1
while True:
if num in range(num1,num2+1):
if num == rl:
print('恭喜您!只用了{}次就赢得了游戏'.format(i))
break
elif num < rl:
i +=1
print('Lower than the answer')
elif num > rl:
i +=1
print('Higher than the answer')
num = int(input('请继续输入您猜测的数字:'))
guide_page(1)
else:
print('对不起!您输入的数字未在指定区间内!')
num = int(input('请继续输入您猜测的数字:'))
def rand(p1,p2):
ran = random.randint(p1,p2)
return ran
guide_page(2)
m1 = int(input('请输入起始值:'))
m2 = int(input('请输入结束值:'))
if len(set_final_num(m1,m2)) == 2:
print(set_final_num(m1,m2))
num = input('请输入您猜测的数字:')
if all_num(num) == False:
num = int(num)
cl = rand(m1,m2)
check_num_legal(num,m1,m2,cl)
else:
guide_page(0)
#老师,我还不是很懂封装,对于那个main函数更是没弄懂,当然,这些都先不提问,我想问下,我这些代码执行下来:
**********欢迎使用猜猜猜小游戏********************
请输入起始值:20
请输入结束值:80
[20, 80]
请输入您猜测的数字:21
对不起!您输入的数字未在指定区间内!
请继续输入您猜测的数字:21
Lower than the answer
请继续输入您猜测的数字:
#如上,第一次输入猜测数字总会显示不在区间内。
n1 = int(input('请输入起始值:'))
n2 = int(input('请输入结束值:'))
if n1<n2:
i = 1
ls = random.randint(n1, n2)
print('所产生的随机数区间:{}'.format([str(n1),str(n2)]))
num = int(input('请输入您猜测的数字:'))
while True:
if num in range(n1,n2+1):
if num == ls:
print('恭喜您!只用了{}次就赢得了游戏'.format(i))
break
elif num < ls:
i +=1
print('Lower than the answer')
elif num > ls:
i +=1
print('Higher than the answer')
num = int(input('请继续输入您猜测的数字:'))
else:
print('对不起!您输入的数字未在指定区间内!')
num = int(input('请继续输入您猜测的数字:'))
elif n1 == n2:
print('您输入的数据区间数相同,请重启程序!')
elif n1 > n2:
print('您输入的数据区间数错误,请重启程序!')
#然后这个程序都是正确的,是哪里出错了吗?求老师指导,还有怎么封装,大致的思想是怎么样的,也求老师给个参考,课堂中讲的都很片面,云里雾里的,作业布置的描述也不是很能懂,感觉还不如这种直接写简单
1回答
同学,你好,
(1)当输入猜测的数字时结果为字符串4,进行if all_num(num) == False判断,进入all_num函数里,这里的n传入的是字符串4,n.isdigit():如果字符串只包含数字则返回 True ,该函数返回True,没有执行if all_num(num) == False中的语句,进入check_num_legal(num,m1,m2,cl),这里的num还是字符串4,不在num1和num2+1中,所以执行了else中语句,输出了——对不起!您输入的数字未在指定区间内!
解决方案:将if all_num(num) == False改为:
(2)封装——将重复代码封装成函数,进行使用,提高效率,减少重复代码,实现代码复用
1、原代码编写
2、封装后的代码:
(3)项目作业的设计,巩固知识的同时,更是为了培养用户的编程思维,在拿到项目要求时,如何下手,怎样一步一步的完成,在复杂的程序开发中,项目要求比较繁琐,有的地方是需要互相调用的,建议同学跟着项目的思路分析一步一步的完成该项目,遇到不理解不懂的可以在问答区提问,会有专业的老师帮你解决问题。。。。。。。。。
如果我的回答解决了你的疑惑,欢迎采纳!!^_^ 祝学习愉快~~~~~
相似问题