Python 如何检查某些值是否不在for循环(二进制到十进制程序)内的列表中

Python 如何检查某些值是否不在for循环(二进制到十进制程序)内的列表中,python,list,loops,for-loop,indexing,Python,List,Loops,For Loop,Indexing,我的目标是在列表中找到除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: ")

我的目标是在列表中找到除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()

如果您确实需要确保它正好是8、
0
1
s,那么一个简单的方法可能是:

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位,但可以小于或大于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')

你必须检查x!='0'和x!='1',加上“and”,而不是“or”。只是一个小提示:用true代替“true”,用false代替“false”。像这样,您将使用真正的Python布尔值,请参阅will
if not re.match('[01]{8}$',binaryNumber)
在这里做您想做的事?如果您感兴趣,编写这样一个程序的最简单的方法是打印(int(输入(“请输入一个8位二进制数”),2)),请参阅@quant-yup并捕获非零/一的异常,也许可以检查长度,但是的…)