Вопрос

Я пытаюсь вычислить контрольную цифру для ввода ISBN на Python.пока у меня есть...

    def ISBN():
        numlist = []
        request = raw_input("Please enter the 10 digit number:  ")
        if len(request) == 10:
            **numlist == request
            print numlist**
        if len(request) != 10:
            print "Invalid Input"
            ISBN()

    ISBN()

Жирным шрифтом обозначен тот момент, когда у меня возникли проблемы: я не могу разделить вводимые 10 цифр на отдельные числа в списке (список чисел), а затем умножить отдельные отдельные числа на 11, затем следующее на 10, затем следующее на 9 и т. д.В следующей части программы мне нужно будет сложить эти новые умноженные числа в список вместе, затем я воспользуюсь функцией mod(%), чтобы получить остаток, а затем вычту число из 11, любая помощь с любым моим кодированием. или неправильные утверждения о том, как рассчитать ISBN, были бы очень признательны.Спасибо.

Это было полезно?

Решение

Этот код должен заставить вас на свой путь:

listofnums = [int(digit) for digit in '1234567890']
multipliers = reversed(range(2,12))
multipliednums = [a*b for a,b in zip(listofnums, multipliers)]
. Строки

неразмерны, поэтому, если вы их итерете их, каждый элемент возвращается как односигнальная строка.

int создает int из (действительной) строки.

Обозначения [a*b for a,b in zip(listofnums, multipliers)] - это понимание списка, удобный синтаксис для сопоставления последовательностей в новые списки.

Отдохнуть, исследуйте их в вашей репре.Обратите внимание, что reversed возвращает генератор: если вы хотите увидеть, что «в», вам нужно будет использовать tuple или list, чтобы заставить его оценку.Это может быть опасно для бесконечных генераторов по очевидным причинам.

Другие советы

Я считаю list() это то, что вы ищете.

numlist=list(request)

Вот как я бы написал код.Надеюсь, я правильно интерпретирую код.

def ISBN():
    request = raw_input("Please enter the 10 digit number:  ")
    if len(request) == 10:
        numlist = list(request)
        print numlist
    else:
        print "Invalid Input"

ISBN()
import itertools

if sum(x * int(d) for x, d in zip(nums, itertools.count(10, -1))) % 11 != 0:
    print "no good"
.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top