Я бы предложил поместить ваш код в функции, которые помогут разбить вещи на более мелкие части, и использовать регулярное выражение, чтобы проверить, есть ли символы, отличные от 1 или 0. Вот предложение, основанное на предоставленном вами коде (Код вот для Python3 +):
import re
def check_input(input_str):
# Regex for function, look for any single char not 1 or 0
regex = r"[^10]"
# Check if input is 4 bits
if len(input_str) != 4:
print('Sorry, input must only be 4 bits')
return False
# Check if characters are only 1 or 0
if re.search(regex, input_str):
print('Sorry, input must be composed of only 1s or 0s')
return False
return True
def get_binary_input():
good_input = False
input_str = ""
while not good_input:
input_str = input('Enter 4 digits for X(0 or 1): ')
good_input = check_input(input_str)
return input_str
def main():
binary_str = get_binary_input()
print('Got binary string: {}'.format(binary_str))
return
if __name__ == '__main__':
main()