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
Έτσι, υλοποιούνται μέθοδοι που ελέγχουν τις ιδιότητες της κάρτας, εκτός από τον ήδη υπάρχοντα έλεγχο ημερομηνίας.