Проверка номера клиента с помощью ParityBitPython

Программы на Python
Ответить
Anonymous
 Проверка номера клиента с помощью ParityBit

Сообщение Anonymous »

Я хочу решить эту задачу:

Реализовать проверку номера клиента по биту четности.
Реализовать класс 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)
Первые два результата правильно решены с помощью моего подхода, но для последних двух чисел мой код возвращает «нечетное» () вместо правильного результата «даже» ().
Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -paritybit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»