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_10ecalculate_check_digit_13cuidarã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
0a9ou uma letra maiúsculaX. - O dígito verificador para códigos ISBN-13 pode ser um número de
0a9.
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