無料のオンライン 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