解决py在python中是0以上的整数

时间:2018-03-03 10:47:20

标签: python-3.x

这段代码有效,但是对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

1 个答案:

答案 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)

快乐探索,......