Python:最接近目标的二乘方

Python: Closest Power of Two To Target

我正在尝试找到大于或等于目标值的最接近的两个幂。必须使用 for 循环来实现此目的。但是,我不确定将什么作为范围值,以便在达到所需值时指数将停止增加 i 并退出 for 循环。感谢您的帮助。

target = int(input("Enter target number: "))
def power_of_two(target):

    x = 2
    change = 0
    power = 0
    for i in range():
        number = x ** change
        change = i
    if number >= target:
        power = number
    return power
p = power_of_two(target)
print("The closest power of 2 >= {0:d} is {1:d}." .format(target, p))

因为你必须使用:

def power_of_two(target):
    if target > 1:
        for i in range(1, int(target)):
            if (2 ** i >= target):
                return 2 ** i
    else:
        return 1

假设您希望该值大于或等于 2^0

我已经更正了您的代码,因此它可以正常工作。我认为你从错误中吸取了最好的教训:)

target = int(input("Enter target number: "))

def power_of_two(target):
    x = 2
    change = 0
    power = 0
    for i in range(target+1):
                       # target is okay for this, function terminates anyway
                       # add one to avoid error if target=0
        number = x ** change
        change = i
        if number >= target:  # you had indentation errors here and following
            power = number    
            return power

p = power_of_two(target)
print("The closest power of 2 >= {0:d} is {1:d}." .format(target, p))

您可以使用以 2 为底的对数为范围的末端找到一个完美的值,但是这样您就不需要 for 循环了;)

作为一个建议:也许看一下 2 的幂的二进制表示。您可以为此使用带有位移位的 for 循环。

编辑: 我自己有缩进错误,因为这里的格式系统很奇怪......也许你以前没有这些 :D