কম্পিউটার টিউটোরিয়াল

পাইথন প্রোগ্রাম - ক্রেডিট কার্ড নম্বর বৈধ কিনা তা যাচাই করুন

মনে করুন একটি ক্রেডিট কার্ড নম্বর আছে। এটিকে বৈধ কিনা তা যাচাই করতে হবে। কার্ড নম্বরের কিছু বৈশিষ্ট্য:

  • এটি ৪, ৫ বা ৬ দিয়ে শুরু হবে
  • এটি ১৬ অঙ্কের দীর্ঘ হবে
  • শুধু ডিজিট থাকবে
  • এতে ৪ গ্রুপে ডিজিট থাকতে পারে '-' দিয়ে আলাদা করা
  • অন্য কোনো সেপারেটর (স্পেস, আন্ডারস্কোর) ব্যবহার করা যাবে না
  • ৪ বা অধিক কনsekutিভ একই ডিজিট থাকতে পারবে না

ইনপুট s = "5423-2578-8632-6589" হলে আউটপুট হবে True।

সমাধানের ধাপসমূহ:

  • যদি s-এ '-' এর সংখ্যা > 0:
    • a := '-' দিয়ে ভাগ করা পার্টসের লিস্ট
    • p := 1
    • যদি len(a) != 4: p := None, a := খালি লিস্ট
    • a-এ প্রতিটি b-এর জন্য: যদি len(b) != 4: p := None, ব্রেক
  • অন্যথায়:
    • p := ৪ বা ৫ বা ৬ দিয়ে শুরু হওয়া এবং বাকি ১৫ ডিজিট এমন সাবস্ট্রিং সার্চ করুন
    • s := s থেকে '-' সরিয়ে দিন
    • q := ৪ বা অধিক কনsekutিভ একই ক্যারেক্টার এমন সাবস্ট্রিং সার্চ করুন
    • যদি p != None এবং q == None: True ফেরত দিন
    • অন্যথায়: False ফেরত দিন

উদাহরণ

বাস্তবায়ন:

import re

def solve(s):
    if s.count("-") > 0:
        a = s.split("-")
        p = 1
        if len(a) != 4:
            p = None
            a = []
        for b in a:
            if len(b) != 4:
                p = None
                break
    else:
        p = re.search("[456][0-9]{15}", s)
        s = s.replace("-", "")
        q = re.search(".*([0-9])\\1{3}.*", s)
        if p is not None and q is None:
            return True
        else:
            return False

s = "5423-2578-8632-6589"
print(solve(s))

ইনপুট

"5423-2578-8632-6589"

আউটপুট

False
  1. পাইথনে হিপ লিস্ট ম্যাক্স হিপ কিনা চেক করা

  2. প্রাইম নম্বর চেক করার পাইথন প্রোগ্রাম

  3. পাইথনে আর্মস্ট্রอง নম্বর চেক করা

  4. পাইথনে প্যালিনড্রোম স্ট্রিং চেক করা