سؤال

أحاول حساب رقم التحقق لإدخال رقم ISBN على بيثون.حتى الآن لدي...

    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)] هو فهم القائمة، وهو بناء جملة مناسب لتعيين التسلسلات إلى قوائم جديدة.

أما بالنسبة للباقي، استكشاف لهم في repl الخاص بك.لاحظ أن 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()
giveacodicetagpre.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top