Credit
Implement a program that determines whether a provided credit card number is valid according to Luhn’s algorithm.
$ python credit.py
Number: 378282246310005
AMEX
Specification
Instructions for Harvard College students
- Head to GitHub and, after signing in, accept this assignment on GitHub Classroom.
- After about a minute, refresh the page and click the link to visit your personal GitHub Classroom assignment page.
- On the assignment page, click the green Code button and choose Open with Codespaces.
- Cilck New codespace and then, if prompted, Create codespace.
- Once your Codespace loads, click the
+
button in the bottom section of your window (next to the word “bash”). You should then see blue text appear that says/workspaces/sentimental-credit-USERNAME
(whereUSERNAME
is your GitHub username).
Instructions for non-Harvard College students
Create a new directory called credit
inside of your pset6
directory by executing
~/ $ mkdir ~/pset6/credit
Create a new file called credit.py
inside your credit
directory.
- In
credit.py
, write a program that prompts the user for a credit card number and then reports (viaprint
) whether it is a valid American Express, MasterCard, or Visa card number, exactly as you did in Problem Set 1, except that your program this time should be written in Python. - So that we can automate some tests of your code, we ask that your program’s last line of output be
AMEX\n
orMASTERCARD\n
orVISA\n
orINVALID\n
, nothing more, nothing less. - For simplicity, you may assume that the user’s input will be entirely numeric (i.e., devoid of hyphens, as might be printed on an actual card).
- Best to use
get_int
orget_string
from CS50’s library to get users’ input, depending on how you to decide to implement this one.
Usage
Your program should behave per the example below.
$ python credit.py
Number: 378282246310005
AMEX
Hints
- It’s possible to use regular expressions to validate user input. You might use Python’s
re
module, for example, to check whether the user’s input is indeed a sequence of digits of the correct length.
Testing
While check50
is available for this problem, you’re encouraged to first test your code on your own for each of the following.
- Run your program as
python credit.py
, and wait for a prompt for input. Type in378282246310005
and press enter. Your program should outputAMEX
. - Run your program as
python credit.py
, and wait for a prompt for input. Type in371449635398431
and press enter. Your program should outputAMEX
. - Run your program as
python credit.py
, and wait for a prompt for input. Type in5555555555554444
and press enter. Your program should outputMASTERCARD
. - Run your program as
python credit.py
, and wait for a prompt for input. Type in5105105105105100
and press enter. Your program should outputMASTERCARD
. - Run your program as
python credit.py
, and wait for a prompt for input. Type in4111111111111111
and press enter. Your program should outputVISA
. - Run your program as
python credit.py
, and wait for a prompt for input. Type in4012888888881881
and press enter. Your program should outputVISA
. - Run your program as
python credit.py
, and wait for a prompt for input. Type in1234567890
and press enter. Your program should outputINVALID
.
Execute the below to evaluate the correctness of your code using check50
. But be sure to compile and test it yourself as well!
check50 cs50/problems/2021/summer/sentimental/credit
Execute the below to evaluate the style of your code using style50
.
style50 credit.py
This problem will be graded only along the axes of correctness and style.
How to Submit
Instructions for Harvard College students
Harvard College students (those with an @college.harvard.edu email address) should submit this problem via GitHub, not via Gradescope.
In your Codespace, execute the below, replacing USERNAME
with your actual GitHub username.
submit50 classroom50/sentimental-credit USERNAME
Instructions for non-Harvard College students
- Download your
credit.py
file by control-clicking or right-clicking on the file in CS50 IDE’s file browser and choosing Download. - Go to CS50’s Gradescope page.
- Click “Problem Set 6: Sentimental (Credit)”.
- Drag and drop your
credit.py
file to the area that says “Drag & Drop”. Be sure it has the correct filename, or the autograder will fail to run on it, and it will score no correctness points! - Click “Upload”.
You should see a message that says “Problem Set 6: Sentimental (Credit) submitted successfully!” You won’t see a score just yet, but if you see the message then we’ve received your submission!