@Janna1603

Как закончить мою программу на Python?

По данному натуральному числу N найдите наибольшую целую степень двойки, не превосходящую N. Выведите показатель степени и саму степень.

b = 0
while True:
n = int(input())
b = b + 1
x = 2 ** b
if x > n1:
print(b, x)

Traceback (most recent call last):
File "/Users/jannagriga/Desktop/питон/пробники.py", line 4, in
n = int(input())
ValueError: invalid literal for int() with base 10: ''

Не понимаю в чем ошибка
  • Вопрос задан
  • 710 просмотров
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Можно проверять ввод, можно использовать конструкцию try .. except:
b = 0
while True:
	try:
		n = int(input('Введите число: '))
		b = b + 1
		x = 2 ** b
		if x > n:
			print(b, x)
	except ValueError:
		print('Ошибка ввода. Введите число.')

У вас в строчке скорее всего опечатка - 'if x > n1:'
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@andro1
?
b = 0
while True:
    n = input()
    b = b + 1
    x = 2 ** b
    if x > int(n):
        print(b, x)
Ответ написан
@dmshar
Самый простой способ - определить сколько разрядов в двоичном представлении числа. По-моему, такую задачу дают на первых занятиях по информатике, при изучении двоичной системы счисления:
n = int(input())    
count=0    
while n > 1:  
    n = n // 2
    count = count + 1
print (count, 2**count)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы