Ich brauche einen Rat für diese Herausforderung. Die Anforderungen bestehen darin, zu sehen, ob die Eingabe gültig ist (d. H. Nur 0s und 1s, keine Leerzeichen und keine Buchstaben) und akzeptiert wird (enthält zwei 1s). Wenn die Eingabe gültig und akzeptiert ist, übersetzen Sie die Binärdatei in Dezimal. Jede Hilfe wäre willkommen!Überprüfen, ob Eingang binär ist und zwei 1s enthält
#Examples of invalid binary numbers: abc 10102011 10101FF
#0000 1111 (note:contains a space)
#Examples of valid, rejected binary numbers: 00000000 1111 01110000001
#Examples of valid, accepted binary numbers: 1000001 11000000 1111
binary = str(input("Enter a binary number: "))
binary_list = list(binary)
valid = True
accepted = True
convert = ""
var = binary_list.count('1')
for character in binary_list:
if (character != '1') and (character != '0'):
valid = False
for character in binary_list:
if (var != 2):
accepted = False
if (valid == True and accepted == True):
print("Input", binary ,"is valid and accepted")
convert = int(binary, 2)
print ("The number is ", convert)
elif (valid == False):
print ("Input was invalid")
elif (valid == True and accepted == False):
print ("Input was rejected")
Ich kann nicht scheinen, um die for-Schleifen zu tun, was ich will. Der erste sagt alles ist ungültig oder lässt Zeichen und binär mit Leerzeichen durch. –
Was ich versuche zu tun, ist die erste Schleife die Bedingung von gültig auf falsch ändern, wenn einige der Elemente in der Liste nicht 1s oder 0s sind. In der zweiten Schleife möchte ich, dass die Bedingung von akzeptiert zu false geändert wird, wenn die Anzahl von 1s nicht gleich 2 ist. –