Реализовать проверку номера клиента по биту четности.
Реализовать класс ParityBitPython с помощью метода validate_client_number(client_number: str) -> bool для проверки 10-значных номеров клиентов, содержащих бит четности.
Банк хочет реализовать метод для проверить свои номера клиентов. Действительный 10-значный номер клиента должен удовлетворять следующим требованиям:
[*]Содержать только цифры 0–9.
[*]Иметь длину 10 цифр.
[*]Последний бит номера клиента в двоичной форме (бит четности) должен делать общее число «1» во всем числе четным.
< /ul>
Мой подход:
Код: Выделить всё
class ParityBitPython:
@staticmethod
def validate_client_number(client_number: str) -> bool:
if len(client_number) != 10 or not client_number.isdigit():
return False
data_digits = client_number[:-1]
parity_bit = int(client_number[-1])
total_ones = sum(format(int(digit), '04b').count('1') for digit in data_digits)
if total_ones % 2 == 1:
return True
else:
return False
Код: Выделить всё
8456894318 is even (True)
3456848879 is odd (False)
4864684516 is even (True)
9999999999 is even (True)
Код: Выделить всё
FalseКод: Выделить всё
TrueЧто я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/792 ... -paritybit
Мобильная версия