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



我的目标是在列表中找到除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、01s,那么可能有一个简单的方法:

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')

最新更新