Python 如何检查某些值是否不在for循环(二进制到十进制程序)内的列表中
我的目标是在列表中找到除1或0以外的任何值,并抛出一个错误并中断循环 目前,它可以检查任何非整数值,但我希望避免某些数字(2-9)。我试着检查x!='1'或x!='0'但这不起作用 谢谢你的帮助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: ")
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并捕获非零/一的异常,也许可以检查长度,但是的…)