Skip to main content
Tweeted twitter.com/StackCodeReview/status/1073639080091635712
deleted 89 characters in body; edited title; edited tags
Source Link
200_success
  • 145.6k
  • 22
  • 191
  • 481

Efficient implementation Implementation of Luhn credit card algorithm

I'm trying to implement Luhn's algorithm for checking credit card numbers.

Hers is my code: I've implemented (Works Fine)Luhn's algorithm for checking credit card numbers. My code works, but I wanted to learn about a more efficient and more Pythonic way of doing this.

def validate_credit_card_number(card_number):
    #start writing your code here
    
    #Step 1a - complete
    temp_list=list(str(card_number))
    my_list=[]
    list1 = temp_list[-2::-2]
    list2=temp_list[::-2]
    list2 = [int (n) for n in list2]
    #print(list2)
    my_list=[int(n) for n in list1]
    #print(my_list)
    list1 = [int(n)*2 for n in list1]
    t_list=list1
    
    for el in list1:
        sum_res=0
        
        if el>9:
            idx = list1.index(el)
            t_list.pop(idx)
            
            while el:
                rem = el%10
                sum_res+=rem
                el = el//10 
            t_list.insert(idx, sum_res)
    #print(t_list)
    
    #step 1b
    
    list1_sum=sum(t_list)
    list2_sum = sum(list2)
    #print(b_list)
    final_sum = list1_sum+ list2_sum
    #print(final_sum)
    
    if final_sum%10==0:
        return True
    return False
    
card_number= 1456734512345698 #4539869650133101  #1456734512345698 # #5239512608615007

result=validate_credit_card_number(card_number)
if(result):
    print("credit card number is valid")
else:
    print("credit card number is invalid")

My Output:

credit card number is invalid

However, I wanted to learn about a more efficient and more pythonic way of doing this.

Efficient implementation of Luhn credit card algorithm

I'm trying to implement Luhn's algorithm for checking credit card numbers.

Hers is my code: (Works Fine)

def validate_credit_card_number(card_number):
    #start writing your code here
    
    #Step 1a - complete
    temp_list=list(str(card_number))
    my_list=[]
    list1 = temp_list[-2::-2]
    list2=temp_list[::-2]
    list2 = [int (n) for n in list2]
    #print(list2)
    my_list=[int(n) for n in list1]
    #print(my_list)
    list1 = [int(n)*2 for n in list1]
    t_list=list1
    
    for el in list1:
        sum_res=0
        
        if el>9:
            idx = list1.index(el)
            t_list.pop(idx)
            
            while el:
                rem = el%10
                sum_res+=rem
                el = el//10 
            t_list.insert(idx, sum_res)
    #print(t_list)
    
    #step 1b
    
    list1_sum=sum(t_list)
    list2_sum = sum(list2)
    #print(b_list)
    final_sum = list1_sum+ list2_sum
    #print(final_sum)
    
    if final_sum%10==0:
        return True
    return False
    
card_number= 1456734512345698 #4539869650133101  #1456734512345698 # #5239512608615007

result=validate_credit_card_number(card_number)
if(result):
    print("credit card number is valid")
else:
    print("credit card number is invalid")

My Output:

credit card number is invalid

However, I wanted to learn about a more efficient and more pythonic way of doing this.

Implementation of Luhn credit card algorithm

I've implemented Luhn's algorithm for checking credit card numbers. My code works, but I wanted to learn about a more efficient and more Pythonic way of doing this.

def validate_credit_card_number(card_number):
    #start writing your code here
    
    #Step 1a - complete
    temp_list=list(str(card_number))
    my_list=[]
    list1 = temp_list[-2::-2]
    list2=temp_list[::-2]
    list2 = [int (n) for n in list2]
    #print(list2)
    my_list=[int(n) for n in list1]
    #print(my_list)
    list1 = [int(n)*2 for n in list1]
    t_list=list1
    
    for el in list1:
        sum_res=0
        
        if el>9:
            idx = list1.index(el)
            t_list.pop(idx)
            
            while el:
                rem = el%10
                sum_res+=rem
                el = el//10 
            t_list.insert(idx, sum_res)
    #print(t_list)
    
    #step 1b
    
    list1_sum=sum(t_list)
    list2_sum = sum(list2)
    #print(b_list)
    final_sum = list1_sum+ list2_sum
    #print(final_sum)
    
    if final_sum%10==0:
        return True
    return False
    
card_number= 1456734512345698 #4539869650133101  #1456734512345698 # #5239512608615007

result=validate_credit_card_number(card_number)
if(result):
    print("credit card number is valid")
else:
    print("credit card number is invalid")
removed tag name in title
Link
Graipher
  • 41.7k
  • 7
  • 70
  • 134

Efficient implementation of Luhn credit card algorithm using Python

Effiecent Implementation Efficient implementation of Luhn Credit Card Algorithmcredit card algorithm using pythonPython

I'm trying to implement the Luhn's algorithmLuhn's algorithm for checking credit card numbers.

Hers is my code: (Works Fine)

def validate_credit_card_number(card_number):
    #start writing your code here
    
    #Step 1a - complete
    temp_list=list(str(card_number))
    my_list=[]
    list1 = temp_list[-2::-2]
    list2=temp_list[::-2]
    list2 = [int (n) for n in list2]
    #print(list2)
    my_list=[int(n) for n in list1]
    #print(my_list)
    list1 = [int(n)*2 for n in list1]
    t_list=list1
    
    for el in list1:
        sum_res=0
        
        if el>9:
            idx = list1.index(el)
            t_list.pop(idx)
            
            while el:
                rem = el%10
                sum_res+=rem
                el = el//10 
            t_list.insert(idx, sum_res)
    #print(t_list)
    
    #step 1b
    
    list1_sum=sum(t_list)
    list2_sum = sum(list2)
    #print(b_list)
    final_sum = list1_sum+ list2_sum
    #print(final_sum)
    
    if final_sum%10==0:
        return True
    return False
    
card_number= 1456734512345698 #4539869650133101  #1456734512345698 # #5239512608615007

result=validate_credit_card_number(card_number)
if(result):
    print("credit card number is valid")
else:
    print("credit card number is invalid")

My Output:

credit card number is invalid

However, I wanted to learn about a more efficient and more pythonic way of doing this.

Effiecent Implementation of Luhn Credit Card Algorithm using python

I'm trying to implement the Luhn's algorithm for checking credit card numbers

Hers is my code: (Works Fine)

def validate_credit_card_number(card_number):
    #start writing your code here
    
    #Step 1a - complete
    temp_list=list(str(card_number))
    my_list=[]
    list1 = temp_list[-2::-2]
    list2=temp_list[::-2]
    list2 = [int (n) for n in list2]
    #print(list2)
    my_list=[int(n) for n in list1]
    #print(my_list)
    list1 = [int(n)*2 for n in list1]
    t_list=list1
    
    for el in list1:
        sum_res=0
        
        if el>9:
            idx = list1.index(el)
            t_list.pop(idx)
            
            while el:
                rem = el%10
                sum_res+=rem
                el = el//10 
            t_list.insert(idx, sum_res)
    #print(t_list)
    
    #step 1b
    
    list1_sum=sum(t_list)
    list2_sum = sum(list2)
    #print(b_list)
    final_sum = list1_sum+ list2_sum
    #print(final_sum)
    
    if final_sum%10==0:
        return True
    return False
    
card_number= 1456734512345698 #4539869650133101  #1456734512345698 # #5239512608615007

result=validate_credit_card_number(card_number)
if(result):
    print("credit card number is valid")
else:
    print("credit card number is invalid")

My Output:

credit card number is invalid

However, I wanted to learn about a more efficient and more pythonic way of doing this.

Efficient implementation of Luhn credit card algorithm using Python

I'm trying to implement Luhn's algorithm for checking credit card numbers.

Hers is my code: (Works Fine)

def validate_credit_card_number(card_number):
    #start writing your code here
    
    #Step 1a - complete
    temp_list=list(str(card_number))
    my_list=[]
    list1 = temp_list[-2::-2]
    list2=temp_list[::-2]
    list2 = [int (n) for n in list2]
    #print(list2)
    my_list=[int(n) for n in list1]
    #print(my_list)
    list1 = [int(n)*2 for n in list1]
    t_list=list1
    
    for el in list1:
        sum_res=0
        
        if el>9:
            idx = list1.index(el)
            t_list.pop(idx)
            
            while el:
                rem = el%10
                sum_res+=rem
                el = el//10 
            t_list.insert(idx, sum_res)
    #print(t_list)
    
    #step 1b
    
    list1_sum=sum(t_list)
    list2_sum = sum(list2)
    #print(b_list)
    final_sum = list1_sum+ list2_sum
    #print(final_sum)
    
    if final_sum%10==0:
        return True
    return False
    
card_number= 1456734512345698 #4539869650133101  #1456734512345698 # #5239512608615007

result=validate_credit_card_number(card_number)
if(result):
    print("credit card number is valid")
else:
    print("credit card number is invalid")

My Output:

credit card number is invalid

However, I wanted to learn about a more efficient and more pythonic way of doing this.

Source Link
Loading