簡體   English   中英

Python函數使用for循環檢查信用卡號是否為有效號碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM