import math
user_bin = str
while True:
try:
user_bin = int(input('Please enter binary number: '), 2)
except ValueError:
print('Please make sure your number contains digits 0-1 only.')
if (user_bin) != range(0,256):
print('Please make sure your number is 8-bit')
else:
print(user_bin)
Я дважды проверил, полностью удалив оператор if и else, и двоичный файл преобразуется правильно, но каким-то образом преобразовал 10101010 в 170 как user_bin, результат 170 не рассматривается в диапазоне, и он всегда печатает сообщение 'Пожалуйста, убедитесь, что ваш число 8-битное '. Я чувствую, что проблема связана с моей функцией диапазона, но это могут быть другие вещи. Я сомневаюсь, что это сделано эффективно, поэтому я открыт для любых советов, помимо решения моего вопроса.
ааа имеет смысл, спасибо за быстрый ответ






вы должны сделать это:
if user_bin not in range(256)
или:
if 0 <= user_bin < 256
Кроме того, по какой-то очевидной причине вы устанавливаете user_bin на str с самого начала.
ах, user_bin для str был остатком от ранее предпринятого решения, которое я не знал, нужно ли мне еще. Первоначально пытались использовать len () для определения длины входных данных, но выбрали другой путь.
Число не может быть диапазоном равно, это не имеет смысла. Это может быть в диапазон. Также обратите внимание, что канонический способ сделать это будет больше похож на
0 <= user_bin < 256.