Sobes.tech
Middle+

Υλοποιήστε και δοκιμάστε τις ελλείπουσες μεθόδους της κλάσης επικύρωσης κάρτας. Η μέθοδος ελέγχου λήξης ημερομηνίας έχει ήδη υλοποιηθεί χωρίς σφάλματα. Για μερική λύση, αρκεί να υλοποιήσετε 2 ελλείπουσες μεθόδους που ελέγχουν τις ιδιότητες της κάρτας.

sobes.tech AI

Απάντηση από AI

Για την υλοποίηση των ελλείποντων μεθόδων της κλάσης επικύρωσης κάρτας, μπορείτε να προσθέσετε, για παράδειγμα, έναν έλεγχο της ορθότητας του αριθμού κάρτας και έναν έλεγχο CVV.

Παράδειγμα σε Python:

class CardValidator:
    def __init__(self, number, expiry_date, cvv):
        self.number = number
        self.expiry_date = expiry_date
        self.cvv = cvv

    def validate_expiry_date(self):
        # Υλοποιήθηκε
        pass

    def validate_number(self):
        # Έλεγχος αριθμού κάρτας με τον αλγόριθμο Luhn
        def luhn_checksum(card_number):
            def digits_of(n):
                return [int(d) for d in str(n)]
            digits = digits_of(card_number)
            odd_digits = digits[-1::-2]
            even_digits = digits[-2::-2]
            checksum = sum(odd_digits)
            for d in even_digits:
                checksum += sum(digits_of(d*2))
            return checksum % 10

        return luhn_checksum(self.number) == 0

    def validate_cvv(self):
        # Το CVV πρέπει να είναι 3 ή 4 ψηφία
        return self.cvv.isdigit() and len(self.cvv) in (3, 4)

# Δοκιμή
validator = CardValidator('4532015112830366', '12/25', '123')
assert validator.validate_number() == True
assert validator.validate_cvv() == True

Έτσι, υλοποιούνται μέθοδοι που ελέγχουν τις ιδιότητες της κάρτας, εκτός από τον ήδη υπάρχοντα έλεγχο ημερομηνίας.