無料のオンライン Python チュートリアルについては、次のことを行う必要があります。
指定されたクレジット カード番号が有効かどうかをチェックする関数を作成します。この関数
check(S)は、文字列Sを入力として受け取る必要があります。"#### #### #### ####"まず、文字列がそれぞれ#が数字である形式に従っていない場合は、を返す必要がありFalseます。10次に、数字の合計が(「チェックサム」メソッド) で割り切れる場合、プロシージャは を返しTrue、そうでない場合は を返しFalseます。たとえば、Sが文字列の"9384 3495 3297 0123"場合、形式は正しいですが、桁の合計は である72ため、 を返す必要がありますFalse。
以下は、私が思いついたことを示しています。私の論理は正しいと思いますが、なぜ間違った値を与えているのかよくわかりません。私のコードに構造的な問題がありますか、それともメソッドの使い方が間違っていますか?
def check(S):
if len(S) != 19 and S[4] != '' and S[9] != '' and S[14] != '':
return False # checking if the format is correct
S = S.replace(" ",'') # Taking away spaces in the string
if not S.isdigit():
return False # checking that the string has only numbers
L = []
for i in S:
i = int(i) # Making a list out of the string and converting each character to an integer so that it the list can be summed
L.append(i)
if sum(L)//10 != 0: # checking to see if the sum of the list is divisible by 10
return False