第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

CS50 python Credit 不適用于 AMEX,但可以與其他卡一起使用

CS50 python Credit 不適用于 AMEX,但可以與其他卡一起使用

慕斯709654 2023-05-09 09:50:19
from cs50 import get_int, get_string#Asking User For Credit Card Numberdef main():    while True:        Credit_Card = str(get_int("Enter Credit Card Number: "))        if Credit_Card !=  "":            break            cardCheck(cardSum, Credit_Card)def cardSum(Credit_Card):    even = 0    odd = 0    CC = len(Credit_Card)    if (CC == 0):        return 0    else:        if (CC % 2 == 0):            last = int(Credit_Card[-1])            even += last                        return even + cardSum(Credit_Card[:-1])        else:            last = int(Credit_Card[-1])            last = last * 2            oddDigits = last // 10 + last % 10            odd += oddDigits                        return odd + cardSum(Credit_Card[:-1])#Checking is card valid or notdef cardCheck(cardSum,Credit_Card):    Total = cardSum(Credit_Card)    if (Total % 10 == 0):        if (len(Credit_Card) == 15) and (int(Credit_Card[0:2]) in [37, 34]):            print("AMEX")        elif (len(Credit_Card) == 16) and (int(Credit_Card[:2]) in range(50, 56)):            print("MASTER CARD")        elif (len(Credit_Card) in [13, 16]) and (int(Credit_Card[:1]) == 4):            print("VISA")        else:            print("INVALID")    else:        print("INVALID")if __name__ == "__main__":    main()我無(wú)法弄清楚為什么我的程序沒(méi)有使用這些AMEX 卡號(hào)提供正確的輸出:378282246310005,371449635398431在我的 C 實(shí)現(xiàn)的積分中,這兩張卡顯示 AMEX 但在 python 中它顯示 INVALID 作為輸出它工作正常對(duì)于 Master,Visa
查看完整描述

1 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

我認(rèn)為問(wèn)題在于您的代碼使用的是絕對(duì)奇偶校驗(yàn)而不是相對(duì)奇偶校驗(yàn)。也就是說(shuō),我們從右邊的倒數(shù)第二個(gè)數(shù)字開始加倍,然后每隔一個(gè)數(shù)字向左移動(dòng)。但是要加倍的數(shù)字的指標(biāo)的奇偶性取決于原始數(shù)字的位數(shù)是奇數(shù)還是偶數(shù)。您的代碼沒(méi)有考慮到這一點(diǎn)。


我們需要在開始時(shí)計(jì)算卡片的奇偶校驗(yàn),并通過(guò)遞歸cardSum()調(diào)用傳遞這個(gè)奇偶校驗(yàn),所以它會(huì)加倍正確的數(shù)字:


def cardSum(digits, parity):

    if not digits:

        return 0


    digit, digits = int(digits[-1]), digits[:-1]


    if len(digits) % 2 == parity:

        digit *= 2

        digit = digit // 10 + digit % 10


    return digit + cardSum(digits, parity)


def cardCheck(cardSum, credit_card):

    checksum = cardSum(credit_card, len(credit_card) % 2)


    if checksum % 10 == 0:


        if len(credit_card) == 15 and int(credit_card[0:2]) in [34, 37]:

            print("AMEX")

        elif len(credit_card) == 16 and int(credit_card[:2]) in range(50, 56):

            print("MASTER CARD")

        elif len(credit_card) in [13, 16] and int(credit_card[:1]) == 4:

            print("VISA")

        else:

            print("INVALID")

    else:

        print("INVALID")


if __name__ == "__main__":


    credit_card = input("Enter Credit Card Number: ")


    if credit_card != "":

        cardCheck(cardSum, credit_card)

我猜這是 AMEX 提出來(lái)的,因?yàn)樗且粋€(gè)奇數(shù)長(zhǎng)度的數(shù)字——您是否測(cè)試過(guò)任何其他發(fā)卡機(jī)構(gòu)的奇數(shù)長(zhǎng)度數(shù)字?


查看完整回答
反對(duì) 回復(fù) 2023-05-09
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)