我有一个python文件IO程序,该程序不会基于用户输入所输入的子字符串返回Issuer ID名称

问题描述

我无法获得for循环来迭代文本文件并基于用户输入的子字符串返回定界结果。我不断获得整个发行人ID网络,而不仅仅是特定的ID网络。

如何优化此方法以返回正确的结果? 请输入您的卡号:5558397375275489 Luhn验证:真实 信用卡发行人:AmericanExpress 信用卡发行人:ChinaT-Union 信用卡发行人:银联 信用卡发行人:Dankort 信用卡发行商:DinersClub-CarteBlanche 信用卡发行商:DinersClub-International 信用卡发行人:DinersClub-USA&Canada 信用卡发行人:发现 信用卡发行人:InstaPayment 信用卡发行人:JapanCreditBureau(JCB) 信用卡发行人:Maestro 信用卡发行人:万事达卡 信用卡发行人:RuPay 信用卡发行人:UATP 信用卡发行商:Verve 信用卡发行人:Visa 信用卡发行商:ViSAElectron

是当前输出。 5558397375275489 是用户输入的示例 计划的输出将是 请输入信用卡号: 5558397375275489 信用卡卡号:5558397375275489 信用卡类型:万事达卡 Luhn验证:真实。

这是附件的txt文件

ChinaUnionPay;16,19;62,88
Dankort;16;5019
DinersClub-CarteBlanche;14;300,301,302,303,304,305
DinersClub-International;14;36,38,39
DinersClub-USA&Canada;16;54
discover;16,19;6011,622126-622925,644,645,646,647,648,649,65
InstaPayment;16;637,638,639
JapanCreditBureau(JCB);16;19,3528-3589
Maestro;16,19;5018,5020,5038,5893,6304,6759,6761,6762,6763
MasterCard;16;51,52,53,54,55,222100-272099
RuPay;16;60,6521,6522
UATP;15;1
Verve;16;506099-506198,650002-650027
Visa;13,16,19;4
ViSAElectron;16;4026,417500,4405,4508,4844,4913,4917
       #!/usr/bin/env python3
       import csv
       import utils

       def user_choice(card_verify,card_number):
           result_one = utils.is_valid(card_verify)
           if result_one == False:
            print("Luhn Verification: N/A")

           else:
               result = utils.luhn(card_number)
               state = "Authentic" if result else "Unauthentic"
               print('Luhn Verification: ' +  state)


        def file_iterator(card_issuer,card_verify,length):
            cards = []
            with open('credit_card_types.ssv','r') as card_file:
                for lines in card_file.readlines():
                    issuer_id,card_len,id_num = lines.strip().split(';')
                    cards.append({'Issuer' : issuer_id,'Length' : card_len,'Id_num' : id_num})
                    id_number = id_num.replace(',',' ')
                    card_length = card_len.replace(',' ')
    
                    for issuer_id in card_verify:
                        if card_issuer in id_number:
                            print("Credit Card Issuer: " + issuer_id)
                                break
              

        def main():
            card_number = list(input("Please Enter Your Card Number: ").strip())
            card_verify = ''.join(card_number)
            length = len(card_verify)
            print(length)
            card_issuer = str(''.join(card_verify[0:6]))
            user_choice(card_verify,card_number)
            file_iterator(card_issuer,length)

        if __name__ == '__main__':
           main()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)