我正在学习python,这里有一个简单的程序,我写道:
def guesser(var, num1,possible):
if var == 'n':
cutoff = len(possible)/2
possible = possible[0:cutoff]
cutoff = possible[len(possible)/2]
#print possible
if (len(possible) == 1):
print "Your Number is:", possible
else:
var = raw_input("Is Your Number Bigger Than %s? (y/n): " %cutoff)
guesser(var, cutoff,possible)
elif var == 'y':
cutoff = len(possible)/2
possible = possible[cutoff:len(possible)]
cutoff = possible[len(possible)/2]
#print possible
#print cutoff
if (len(possible) == 1):
print "Your Number is:", possible
else:
var = raw_input("Is Your Number Bigger Than %s? (y/n): " %cutoff)
guesser(var, cutoff,possible)
else:
var = raw_input("Is Your Number Bigger Than 50? (y/n): ")
guesser(var, 50, possible)
possible = []
possible = range(1,101)
guesser('a', 50, possible)
通常我会尝试帮助您编写代码,但您已经使它变得非常复杂,我认为您可以更容易地查看一些代码。在
在深入研究之前,您应该考虑一下您的算法将如何在抽象的术语中工作。在
编辑:以简洁为代价简化代码。在
在做更多的Python之前,我可能会让它更简单。。。这个算法比必要的复杂得多。当两个整数足够时,不需要使用列表。在
更多的python使用
bisect
模块,当然还有class
模块:)下面是python库中
^{pr2}$bisect.bisect
的定义。如您所见,大多数算法都是在这里为您实现的相关问题 更多 >
编程相关推荐