Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

2.Дано целое число N (> 0), являющееся некоторой степенью числа 2: N = 2^K.

Илья Гонцов Ученик (75), на голосовании 16 часов назад
Найти целое число K — показатель этой степени. Решить задачу используя циклическую конструкцию while.
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (446992) 1 месяц назад
Ну хотя бы так:

 n = int(input('n=')) 
k = 0

while (n > 1):
n = n >> 1
k = k + 1

print(k)

Данный код найдет БЛИЖАЙШУЮ степень двойки. Обеспечить, чтобы введенное число было ТОЧНО степенью двойки - на совести пользователя.

Если тебя это не устраивает - можно добавить проверку:

 n = int(input('n=')) 
k = 0

while (n > 1):
if ( n & 1 == 1):
raise Exception("The number entered is not a power of 2")
n = n >> 1
k = k + 1

print(k)
Рустам Абдрашитов Мыслитель (9542) 1 месяц назад
На
 def find_exponent_of_two(): 
print("Добро пожаловать в программу поиска степени числа 2!")
print("Введите целое число N (> 0), являющееся степенью числа 2.")
print("Для выхода из программы введите 'q'.\n")

while True:
user_input = input("Ваш ввод: ").strip()
if user_input.lower() == 'q':
print("Выход из программы. До свидания!\n")
break

try:
N = int(user_input)

if N <= 0:
print("⚠️ Ошибка: Число N должно быть больше 0. Попробуйте еще раз.\n")
continue

if (N & (N - 1)) != 0:
lower_power = 1
while lower_power < N:
lower_power *= 2

higher_power = lower_power
lower_power //= 2

if (N - lower_power) <= (higher_power - N):
closest_power = lower_power
else:
closest_power = higher_power

print(f"⚠️ Ошибка: Число N должно быть степенью числа 2. Ближайшее правильное значение: {closest_power}.\n")
continue

K = 0
while N > 1:
N //= 2
K += 1

print(f"✅ Показатель степени K: {K}\n")

while True:
continue_input = input("Хотите продолжить? (да/нет): ").strip().lower()
if continue_input == 'да':
print("\nПожалуйста, введите следующее число N.\n")
break
elif continue_input == 'нет':
print("До свидания!\n")
return
else:
print("⚠️ Ошибка: Введите 'да' или 'нет'. Попробуйте еще раз.\n")

except ValueError:
print("⚠️ Ошибка: Введите корректное целое число. Попробуйте еще раз.\n")
except Exception as e:
print(f"⚠️ Произошла непредвиденная ошибка: {e}. Попробуйте еще раз.\n")

find_exponent_of_two()
Похожие вопросы