Credit
Implemente um programa que determine se um número de cartão de crédito fornecido é válido de acordo com o algoritmo de Luhn.
$ python credit.py
Number: 378282246310005
AMEX
Começando
Abra o VS Code.
Comece clicando dentro da sua janela de terminal e, em seguida, execute cd
por si só. Você deve encontrar que seu "prompt" se parece
com o abaixo.
$
Clique dentro daquela janela de terminal e, em seguida, execute
wget https://cdn.cs50.net/2022/fall/psets/6/sentimental-credit.zip
seguido de Enter para baixar um ZIP chamado sentimental-credit.zip
no seu espaço de código. Certifique-se de não ignorar o espaço entre wget
e a URL a seguir, ou qualquer outro caractere!
Agora execute
unzip sentimental-credit.zip
para criar uma pasta chamada sentimental-credit
. Você não precisa
mais do arquivo ZIP, portanto, pode executar
rm sentimental-credit.zip
e responda com "y" seguido de Enter no prompt para remover o arquivo ZIP que você baixou.
Agora digite
cd sentimental-credit
seguido de Enter para se mover para dentro desse diretório. Seu prompt deve agora se parecer com o abaixo.
sentimental-credit/ $
Se tudo ocorreu bem, você deve executar
ls
e ver um arquivo chamado credit.c
. Se você tiver algum problema, siga essas mesmas etapas novamente e veja se consegue determinar onde errou!
Especificação
- No arquivo
credit.py
, escreva um programa que solicite ao usuário um número de cartão de crédito e, em seguida, informe (por meio deprint
) se é um número de cartão American Express, MasterCard ou Visa válido, exatamente como você fez no Problem Set 1, exceto que seu programa desta vez deve ser escrito em Python. - Para que possamos automatizar alguns testes do seu código, pedimos que a última linha de saída do seu programa seja
AMEX\n
ouMASTERCARD\n
ouVISA\n
ouINVALID\n
, nada mais, nada menos. - Para simplificar, você pode assumir que a entrada do usuário será totalmente numérica (ou seja, sem hífens, como pode ser impresso em um cartão real).
- Melhor usar
get_int
ouget_string
da biblioteca CS50 para obter a entrada do usuário, dependendo de como você decidir implementar este programa.
Uso
Seu programa deve se comportar como no exemplo abaixo.
$ python credit.py
Number: 378282246310005
AMEX
Dicas
- É possível usar expressões regulares para validar a entrada do usuário. Você pode usar, por exemplo, o módulo
re
do Python para verificar se a entrada do usuário é de fato uma sequência de dígitos com o comprimento correto.
Testando
Embora o check50
esteja disponível para este problema, você é encorajado a primeiro testar seu código por conta própria para cada um dos seguintes casos.
- Execute seu programa como
python credit.py
e aguarde uma solicitação de entrada. Digite378282246310005
e pressione enter. Seu programa deve retornarAMEX
. - Execute seu programa como
python credit.py
e aguarde uma solicitação de entrada. Digite371449635398431
e pressione enter. Seu programa deve retornarAMEX
. - Execute seu programa como
python credit.py
e aguarde uma solicitação de entrada. Digite5555555555554444
e pressione enter. Seu programa deve retornarMASTERCARD
. - Execute seu programa como
python credit.py
e aguarde uma solicitação de entrada. Digite5105105105105100
e pressione enter. Seu programa deve retornarMASTERCARD
. - Execute seu programa como
python credit.py
e aguarde uma solicitação de entrada. Digite4111111111111111
e pressione enter. Seu programa deve retornarVISA
. - Execute seu programa como
python credit.py
e aguarde uma solicitação de entrada. Digite4012888888881881
e pressione enter. Seu programa deve retornarVISA
. - Execute seu programa como
python credit.py
e aguarde uma solicitação de entrada. Digite1234567890
e pressione enter. Seu programa deve retornarINVALID
.
Execute o comando abaixo para avaliar a correção do seu código usando o check50
. Mas certifique-se de compilar e testar o código você mesmo também!
check50 cs50/problems/2023/x/sentimental/credit
Execute o comando abaixo para avaliar o estilo do seu código usando style50
.
style50 credit.py
Como Enviar
No seu terminal, execute o seguinte comando para enviar o seu trabalho.
submit50 cs50/problems/2023/x/sentimental/credit