2017-11-14 8 views
1

8ビットの2進数を10進数に変換する必要があります。ユーザーが8ビットのバイナリ番号を入力したかどうかを検証するとともに、0と1だけのユーザー入力を検証することに固執しています。0と1だけのユーザーの入力を確認する

助けがあれば助かります。私はこれを思っているように感じますが、私はすべてを試しました。ここで

は私が持っているコードです:

while True: 
binary = input("Please enter a 8-bit binary number: ") 
if len(binary) < 8 or len(binary) > 8: 
    print("Must be an 8 bit binary!") 

else: 
    print(int(binary, 2)) 
    break 

答えて

0

[OK]を、まず最初にまず、あなたはこのラインを使用します。

if len(binary) != 8 

は今、これは私があなたのコードを実装する方法を次のとおりです:

if len(binary) < 8 or len(binary) > 8: 

をそれだけで言うの方法より読みやすいです

while True: 
    binary = input("Please enter a 8-bit binary number: ") 

    for item in binary: 
     if item not in {'0','1'}: 
      print("Must only contains 0's and 1's !") 
      break 

    if len(binary) != 8: 
     print("Must be an 8 bit binary!") 

    else: 
     print(int(binary, 2)) 
     break 

これは、ユーザーに関連する洞察を提供する際に期待した両方の検証を確認することに注意してください彼の特別な間違いを犯した。

0

あなたは長さをチェックしますが、ユーザー入力を検証していません。例:

s = '12345678'はコードへの有効な入力です。

あなたが本当に検証したい場合は、単純なもののような

s1 = '11010101111' 

if s1.count('1') + s1.count('0') == len(s1): 
    print(int(s1,2)) 
0

を行うことができますが、正規表現のファンなら:

import re 
s1='10010011' 
print(re.match(r'[10]{8}', s1) is None) 

これは1100101001234568910010011と一致しませんが、または12345678

関連する問題