Credit

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