Luhnのアルゴリズムに従って、指定されたクレジットカード番号が有効かどうかを判断するプログラムを実装します。
$ python credit.py
Number: 378282246310005
AMEX
仕様
~/pset6/credit/
のcredit.py
に、クレジットカード番号をユーザに要求し、それが有効なAmerican Express、MasterCard、Visaカード番号のいずれであるかをレポートする (print
する) プログラムを作成します。これは問題セット 1とまったく同じですが、今回のプログラムはPythonで作成する必要があります。- コードのテストを自動化できるように、プログラムの出力の最後の行を
AMEX\n
またはMASTERCARD\n
またはVISA\n
またはINVALID\n
にしてください。 - 単純化するために、ユーザの入力は完全に数字 (すなわち、実際のカードに印刷されるようなハイフンがない) であると想定することができます。
- CS50のライブラリから
get_int
またはget_string
を使用して、ユーザの入力を取得することをお勧めします。
使い方
プログラムは次の例のように動作するはずです。
$ python credit.py
Number: 378282246310005
AMEX
ヒント
- 正規表現を使用してユーザ入力を検証できます。たとえば、Pythonの
re
モジュールを使用して、ユーザの入力が正しい長さの数字のシーケンスであるかどうかをチェックできます。
テスト
この問題についてはcheck50
を使用できますが、次の各項目については、最初に自分でコードをテストすることをお勧めします。
- プログラムを
python credit.py
として実行し、入力を求めるプロンプトが表示されるのを待ちます。378282246310005
と入力し、Enterキーを押します。プログラムによってAMEX
が出力されます。 - プログラムを
python credit.py
として実行し、入力を求めるプロンプトが表示されるのを待ちます。371449635398431
と入力し、Enterキーを押します。プログラムによってAMEX
が出力されます。 - プログラムを
python credit.py
として実行し、入力を求めるプロンプトが表示されるのを待ちます。5555555555554444
と入力し、Enterキーを押します。プログラムはMASTERCARD
を出力するはずです。 - プログラムを
python credit.py
として実行し、入力を求めるプロンプトが表示されるのを待ちます。5105105105105100
と入力し、Enterキーを押します。プログラムはMASTERCARD
を出力するはずです。 - プログラムを
python credit.py
として実行し、入力を求めるプロンプトが表示されるのを待ちます。4111111111111111
と入力し、Enterキーを押します。プログラムはVISA
を出力するはずです。 - プログラムを
python credit.py
として実行し、入力を求めるプロンプトが表示されるのを待ちます。4012888888881881
と入力し、Enterキーを押します。プログラムはVISA
を出力するはずです。 - プログラムを
python credit.py
として実行し、入力を求めるプロンプトが表示されるのを待ちます。1234567890
と入力し、Enterキーを押します。プログラムはINVALID
を出力するはずです。
check50
を使用して以下を実行し、コードの正確さを評価してください。ただし、コンパイルとテストは必ず自分で行ってください。
check50 cs50/problems/2021/x/sentimental/credit
以下を実行し、style50
を使用してコードのスタイルを評価します。
style50 credit.py
この問題は、正確さとスタイルの評価に沿ってのみ採点されます。
提出方法
次のコマンドを実行し、GitHubのユーザ名とパスワードを入力してログインします。セキュリティのため、パスワードには実際の文字ではなくアスタリスク (*
) が表示されます。
submit50 cs50/problems/2021/x/sentimental/credit