[英]Python function to check if credit card number is a valid number using for loops
因此,這是一個cs分配,我編寫了適用於9個測試用例(未知)中的2個的代碼,但我不知道為什么它不起作用/不通過任何其他測試。 我知道我應該嘗試自己弄清楚該如何做,雖然我已經嘗試過,但是我真的迷路了,需要幫助!
“寫一個名為credit_card.py的文件,其中包含一個函數,檢查。檢查接受一個輸入-一個正整數。如果該整數表示有效的信用卡號,則返回True。與所有返回布爾值的函數一樣,如果返回不返回True,應該返回False。
信用卡號有一個校驗位。 這是檢測常見卡號輸入錯誤的簡單方法。 算法如下:
形成每隔一個數字的總和,包括最右邊的數字; 因此5490123456789128(5490123456789128)的總和為4 + 0 + 2 + 4 + 6 + 8 +1 + 8 =33。將每個剩余的數字加倍,然后將所有創建該數字的數字相加; 在我們的示例(5490123456789128)中,其余數字(5 9 1 3 5 7 9 2)翻倍至10 18 2 6 10 14 18 4,總計為1 + 0 + 1 + 8 + 2 + 6 + 1 + 0 + 1 +4 + 1 + 8 + 4 = 37將上面的兩個和相加(33 + 37 = 70)。如果結果是10的倍數(即,其最后一位為0),則為有效的信用卡號。”
def check(x):
num1 = 0
num2 = 0
if x < 0:
return False
for i in str(x) [1::2]:
num1 += int(i)
return num1
for i in str(x) [0::2]:
num2 += int(int(i * 2) % 10) + int(int(i * 2) / 10)
return num2
check_digit = num1 + num2
if check_digit % 10 == 0:
return True
else:
return False
def check(x):
if x[0] == '-': # x is [str], "x < 0" is wrong
return False
try:
nums = map(int, x)
except Exception:
return False
sum1 = 0
sum2 = 0
for i in nums[1::2]:
sum1 += int(i)
for i in nums[0::2]:
sum2 += ((i * 2) % 10 + (i * 2) / 10) # i is [str], "i * 2" is wrong
check_digit = sum1 + sum2
if check_digit % 10 == 0:
return True
else:
return False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.