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
我正在尝试找到大于或等于目标值的最接近的两个幂。必须使用 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