这段代码有效,但是对python中的更快的代码有什么帮助找不知道n知道n是一个大于0的整数而且n没有上限,如果(x)将返回1如果x> n,如果x = n则为0,如果为x则为-1
def how(x):
if x > n:
return 1
elif x < n:
return -1
else:
return 0
def find(how):
if how(1) == 1:
return 1
x = 2
while how(x) != 1:
x = x**x
v = x
while how(x) != 0:
if how(x) == 1:
v = x
x = (x+1)//2
else:
x += (v-x+1)//2
return x
答案 0 :(得分:0)
丽贝卡,我添加了一些打印陈述,这样你就可以看出哪里出了什么问题。正如帕特里克·阿特纳所说的那样...它有点令人困惑,所以我试图清理一些能让你继续探索两个变量相互比较的东西(并假冒错误捕捉(0)。) p>
让我们开始并删除令人困惑的术语,并生成一些可行的代码。使用当前下面的脚本运行并且 value = 1,reference = 1 ,您将在继续循环中获得以下打印结果,直到您手动停止脚本:
v1 = n:错误
loop1 1
def selector(v1, n):
if v1 > n:
print 'v1 > n', v1, n
return 1
elif v1 < n:
print 'v1 < n', v1, n
return -1
else:
print 'v1 == n: error'
return 0
def find(value, reference):
if selector(value, reference) == 1:
return 1
while selector(value, reference) != 1:
x = value**value
print 'loop1', x
v = x
while selector(value, reference) != 0:
print 'loop2'
if selector(value, reference) == 1:
v = value
x = (value+1)/2
print 'loop2-if', v, x
else:
x += (v-(value+1))/2
print 'loop2-else', x
print ' Almost done...'
return x
if __name__ == '__main__':
n = 1
print find(1, 1)
快乐探索,......