Программа Python ISBN - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь вычислить контрольную цифру для входа 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-значный ввод на отдельные числа в списке (numlist), а затем умножить отдельные отдельные числа на 11, затем на 10, затем на 9 и т. Д. ... Для следующей части программы мне нужно будет добавить эти новые умноженные числа в список вместе, затем я буду использовать функцию mod (%), чтобы получить остаток, а затем вычесть число из 11, любую помощь с любым моим кодированием или неправильные заявления о том, как рассчитать ISBN будет принята с благодарностью. Спасибо.

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Этот код должен помочь вам:

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, чтобы форсировать его оценку.Это может быть опасно для бесконечных генераторов по очевидным причинам.

0 голосов
/ 14 марта 2012
import itertools

if sum(x * int(d) for x, d in zip(nums, itertools.count(10, -1))) % 11 != 0:
    print "no good"
0 голосов
/ 14 марта 2012

Я считаю, 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()
...