Domanda

Sto cercando di calcolare la cifra di controllo per un ingresso ISBN su Python.Finora ho ...

    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()
.

Il bit in grassetto è dove ho problemi, non riesco a dividere l'ingresso a 10 cifre in singoli numeri nell'elenco (numlist) e quindi moltiplicare i numeri individuali separati di 11 poi il prossimo per 9 etc... Per la parte successiva del programma, dovrò aggiungere questi nuovi numeri moltiplicati nell'elenco insieme, utilizzerò la funzione Mod (%) per ottenere il resto sottrarre il numero da 11, qualsiasi assistenza con una qualsiasi della mia codificao dichiarazioni errate su come calcolare l'ISBN sarebbero molto apprezzate. Grazie.

È stato utile?

Soluzione

Questo codice dovrebbe prenderti sulla strada:

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

Le stringhe sono iterabili, quindi se li iterano, ogni elemento viene restituito come una stringa di un singolo carattere.

int Builds Un INT da una stringa (valida).

La notazione [a*b for a,b in zip(listofnums, multipliers)] è una comprensione dell'elenco, una sintassi conveniente per la mappatura di sequenze a nuovi elenchi.

Per quanto riguarda il resto, esplorali nel tuo repp.Nota che reversed restituisce un generatore: se vuoi vedere cosa è "in" esso, è necessario utilizzare tuple o list per forzare la sua valutazione.Questo può essere pericoloso per i generatori infiniti, per ovvi motivi.

Altri suggerimenti

Credo che list() sia ciò che stai cercando.

numlist=list(request)

Ecco come vorrei scrivere il codice.Spero di interpretare correttamente il codice.

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"
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top