Как проверить, нет ли определенных значений в списке внутри цикла (двоичная в десятичную программу) - PullRequest
0 голосов
/ 11 ноября 2018

Моя цель - найти любое значение, отличное от 1 или 0, в списке, выдать ошибку и выйти из цикла.

На данный момент он может проверять любые нецелые значения просто отлично, но я хотел бы избежать определенных чисел (2-9). Я попытался проверить, если x! = '1' или x! = '0', но это не сработало.

Я ценю любую помощь.

decimalTotal = 0
digit = 0
index = 0
power = 7
flag = 'false'

#get an 8-bit binary number
binaryNumber = input("Please enter an 8-bit binary number: ")
binary_list = list(binaryNumber)

if len(binary_list) != 8:
    print()
    print("You did not enter an 8-bit length.")
    print()


for x in binary_list:
    while (power >= 0):    
        try:
            (int(binary_list[index]))
        except ValueError:
             flag = 'true'
             break
        else:
            decimalTotal += (int(binary_list[index])) * (2**(power))
            index += 1
            power -= 1



if flag == 'false':
    print()
    print("The decimal value is: ", decimalTotal)
    print()

else:
    print()
    print("Invalid binary value entered.")
    print()

1 Ответ

0 голосов
/ 11 ноября 2018

Если вам определенно необходимо убедиться, что это ровно 8, 0 или 1 с, то, вероятно, проще всего сделать:

import re

binaryNumber = input("Please enter an 8-bit binary number: ")
if not re.match('[01]{8}$', binaryNumber):
    print('You did not enter exactly 8 zeros or ones.')
else:
    print('Your number as decimal is:', int(binaryNumber, 2))

В противном случае, если вам все равно, является ли оно ровно 8 битами, но может быть меньше или больше, и просто хотите показать его в виде десятичной дроби, тогда вы можете сделать:

try:
    print('Your number as decimal is:', int(binaryNumber, 2))
except ValueError: # couldn't be interpreted as binary
    print('Your number was not a valid binary string')
...