Блог для маленьких школьников и их родителей
ШколаЛа

Напишіть програму на мові Python даю 100 балів! Буду дуже вдячний! 13-цифровий міжнародний стандартний…

Автор:
Предмет: Информатика
Уровень: 1 - 4 класс

Напишіть програму на мові Python даю 100 балів! Буду дуже вдячний!

13-цифровий міжнародний стандартний номер книги (International Standard Book Number) – це унікальний код, який ідентифікує книгу в продажі. Остання цифра називається перевірочною цифрою (check digit) і використовується для перевірки на помилки. Для обчислення цього значення

1) кожну з 12 перших цифр почережно множать на 1 або 3,

2) додають добутки та ділять результат за модулем 10. Перевірочна цифра отримується відніманням від 10 отриманого результату.

Наприклад, для ISBN 9789609319614:

9×1+7×3+8×1+9×3+6×1+0×3+9×1+3×3+1×1+9×3+6×1+1×3=126.

Перевірочна цифра – 10−(126 10)=10−6=4.

Напишіть програму, що зчитуватиме 13-цифровий ISBN та перевірятиме останню цифру на валідність цього номеру.

Ответов к вопросу: 1
  • Олесяя1111111
    02.08.2024 | 15:44

    Ответ:
    def check_ISBN(num):
       if len(str(num)) != 13:
           return False
       ISBN_sum = 0
       for ix,digit in enumerate(map(int, str(num)[:-1])):
           ISBN_sum += digit * (1 if ix%2==0 else 3)
       return int(str(num)[-1]) == 10-ISBN_sum%10
    Объяснение:
    На вход функции идёт номер ISBN.
    Сначала проверим что в числе 13 цифр. Если нет, то сразу говорим, что ISBN неправильный.
    В функции объявляем ISBN_sum в котором будем считать сумму как в задании.
    Объявляем цикл где ix — это индекс цифры в числе, а digit цифра. Для того чтобы пройтись по числу как по массиву, приводим его к строковой переменной и используем функцию map, таким образом получаем список с искомыми цифрами.
    Считаем сумму. Для каждой цифры смотрим модуль индекса (ix%2), если он равен нулю, то берём единицу, если не нулю, т.е. единице, то берём 3. Таким образом для каждой цифры чередуем 1 и 3 как в задании. Это чередование умножаем на число и добавляем к сумме.
    Далее по заданию проверяем равно ли последнее число в ISBN 10-сумма модуль 10.
    Функция вернёт ИСТИНУ если условие выполнено и ЛОЖЬ если числа не совпали.
    Далее данную функцию можно использовать на искомом номере и нескольких сгенерированных. См. скрин.

Ответить на вопрос:
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
Нажимая на кнопку я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.