Instruções

Depurar um Validador de ISBN

O ISBN (Número Padrão Internacional de Livro) é um identificador único atribuído a livros comerciais. Pode ter 10 ou 13 dígitos, e o último dígito é um dígito de verificação calculado a partir dos outros dígitos. Camperbot tentou construir seu próprio validador de ISBN. Entretanto, ele cometeu alguns erros ao longo do caminho. Neste laboratório, você corrigirá o código existente e fará com que ele funcione corretamente. Comportamento esperado: Quando o usuário executar o programa, ele exibirá o prompt Digite o ISBN e o comprimento: .</dfn> O usuário pode inserir o código ISBN que deseja validar no formato ISBN,length. O código ISBN não deve conter hífens, seguido pelo seu comprimento (10 ou 13), separados por vírgula. Exemplos de entradas: 1530051126,10 para códigos ISBN-10. 9781530051120,13 para códigos ISBN-13. Como encontrar o dígito de verificação:
  • Você não precisa conhecer a lógica detalhada de cálculo neste laboratório. As funções calculate_check_digit_10 e calculate_check_digit_13 cuidarão do cálculo e retornarão o dígito verificador esperado em formato de string.
  • O dígito verificador para códigos ISBN-10 pode ser um número de 0 a 9 ou uma letra maiúscula X.
  • O dígito verificador para códigos ISBN-13 pode ser um número de 0 a 9.
Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratório. Histórias de Usuário: 1. Você deve corrigir o IndentationError no código atual. 1. Mesmo que o usuário não insira um valor separado por vírgulas, o programa deve tratar o IndexError sem travar. 1. Quando o usuário não inserir um valor separado por vírgulas, ele deve ver a mensagem Digite valores separados por vírgulas. no console, e o programa deve ser encerrado. 1. Mesmo que o usuário insira um valor não numérico para o comprimento, o programa deve tratar o ValueError sem travar. 1. Quando o usuário inserir um valor não numérico para o comprimento, ele deve ver a mensagem O comprimento deve ser um número. no console, e o programa deve ser encerrado. 1. Você deve corrigir o erro de deslocamento de um na função validate_isbn. 1. Você deve corrigir o TypeError no código atual que ocorre quando o usuário insere um código ISBN válido. 1. Você deve corrigir o IndexError no código atual quando o usuário inserir um código ISBN válido. 1. Mesmo que o usuário insira um código ISBN incorreto com caracteres diferentes de números, o programa deve tratar o ValueError que ocorre sem travar. 1. Quando o usuário inserir um código ISBN incorreto com caracteres diferentes de números, ele deverá ver a mensagem Caractere inválido encontrado. no console. 1. Quando o usuário inserir 1530051126,10, ele deverá ver a mensagem Código ISBN Válido. 1. Quando o usuário inserir 9781530051120,13, ele deverá ver a mensagem Código ISBN válido. Importante: você precisará comentar a chamada main() no espaço global para que os testes sejam executados corretamente. Quando você concluir o projeto, o usuário deverá ver as seguintes mensagens dependendo dos valores que ele inserir. | ISBN Code | Length | Message | Example input | |-----------|--------|---------| ------------- | | Valid | Valid | Valid ISBN Code. | 1530051126,10 | | Invalid Number | Valid | Invalid ISBN Code. | 1530051125,10 | | Does not match specified length or left blank | Valid | ISBN-10 code should be 10 digits long. or ISBN-13 code should be 13 digits long., depending on the length they entered. | 9781530051120,10 or 1530051126,13 | | Contains non-numeric characters (except for the check digit) | Valid | Invalid character was found. | 15-0051126,10 | | Any | Invalid Number | Length should be 10 or 13. | 1530051126,9 | | Any | Contains non-numeric characters or left blank | Length must be a number. | 1530051125,A | | Not comma-separated | Not comma-separated | Enter comma-separated values. | 1530051125 | Você pode usar os seguintes valores para testar seu código manualmente, se desejar. Exemplos de entradas para códigos ISBN-10 válidos: 1530051126,10 9971502100,10 080442957X,10 Exemplos de entradas para códigos ISBN-13 válidos: 9781530051120,13 9781947172104,13

O que fazer:

Testes:

  • Você deve comentar a chamada para a função `main` para permitir que o restante dos testes funcione corretamente.
  • Você deve ter uma função `validate_isbn`.
  • Você deve ter uma função `calculate_check_digit_10`.
  • Você deve ter uma função `calculate_check_digit_13`.
  • Você deve ter uma função `main`.
  • Quando o usuário insere um valor que não é um valor separado por vírgulas, você deve ver a mensagem `Digite valores separados por vírgulas.` no console.
  • Quando o usuário inserir um valor não numérico para o comprimento, você deverá ver a mensagem `O comprimento deve ser um número.` no console.
  • Quando o usuário inserir um código ISBN incorreto com caracteres diferentes de números, você deve ver a mensagem `Caractere inválido foi encontrado.` no console.
  • Quando o usuário inserir `1530051126,10`, você deverá ver a mensagem `Código ISBN Válido.` no console.
  • Quando o usuário digitar `9781530051120,13`, você deve ver a mensagem `Valid ISBN Code.`
  • Quando o usuário digita `1530051125,10`, você deve ver a mensagem `Código ISBN Inválido.`.
  • Quando o usuário digitar `9781530051120,10`, você deve ver a mensagem `ISBN-10 code should be 10 digits long.`
  • Quando o usuário digitar `1530051126,13`, você deve ver a mensagem `ISBN-13 code should be 13 digits long.`
  • Quando o usuário digitar `15-0051126,10`, você deve ver a mensagem `Invalid character was found.`
  • Quando o usuário digitar `1530051126,9`, você deve ver a mensagem `Length should be 10 or 13.`
  • Quando o usuário digitar `1530051125,A`, você deve ver a mensagem `Length must be a number.`
  • Quando o usuário digitar `1530051125`, você deve ver a mensagem `Enter comma-separated values.`
  • Quando o usuário digitar `9971502100,10`, você deve ver a mensagem `Valid ISBN Code.`
  • Quando o usuário digitar `080442957X,10`, você deve ver a mensagem `Valid ISBN Code.`
  • Quando o usuário digitar `9781947172104,13`, você deve ver a mensagem `Valid ISBN Code.`

Preview