Conversation
Вес каждого элемента теперь убывает, а последний элемент умножается на свой вес.
Теперь мы учитываем случай, когда left == right.
Добавили хорошую проверку с Х и плохую проверку с 9 цифрами
Вводим номер и проверяем на корректность.
Добавили в функции проверку на правильность формата номера.
Godrik0
left a comment
There was a problem hiding this comment.
ISBN10: 5/10
Бинарный поиск: 4/5
Оформление: 8/10 (snake_case)
| if len(ISBNNumber) == 13 and ISBNNumber.count('-') == 3: | ||
| if ISBNNumber[1] == '-' and ISBNNumber[-2] == '-': |
There was a problem hiding this comment.
ISBN бывают разные, например 9971-5-0210-0.
| elif char.upper() == 'X': | ||
| digits.append(10) |
There was a problem hiding this comment.
Такая проверка позволит символу X стоять в любом месте кода, тогда как он может находится только на последней позиции.
| total += digit * weight | ||
|
|
||
| checksum = total + checkDigit | ||
| checksum = total + checkDigit * (weight - 1) |
There was a problem hiding this comment.
Это работает случайно, только лишь потому что weight после цикла остается равной 2. При этом в умножении на (weight - 1) нет никакой необходимости.
| def binSearch(xs: list[int], x: int): | ||
| left, right = 0, len(xs) - 1 | ||
| while left < right: | ||
| while left <= right: |
There was a problem hiding this comment.
Нет теста, который бы показывал что баг исправлен.
|
|
||
|
|
||
| def test_good2(): | ||
| assert modulo11Checksum("2-22X-11156-8") |
There was a problem hiding this comment.
- контрольная цифра (от 0 до 10: арабская от 0 до 9 и римская X — для 10)
| ISBNNumber = input("Введите исбн номер: ") | ||
| while ISBNNumber != "-1": | ||
| result = modulo11Checksum(ISBNNumber) | ||
| if result == 1: | ||
| print("correct") | ||
| else: | ||
| print("incorrect") | ||
| ISBNNumber = input("Введите исбн номер: ") |
There was a problem hiding this comment.
Когда pytest импортирует этот файл для тестов, он зависнет, ожидая ввода данных.
Код, который относится к запуску нужно оборачивать в if __name__ == "__main__".
Сделан форк и добавлены недостающие файлы
Исправлены баги в файлах
Добавлены тесты
Реализована утилита