ভূমিকা

পাইথন শেখার জার্নিতে আরেকটা মজার ধাপে এসে পড়েছি! আজ আমরা ডেটা স্ট্রাকচার নিয়ে কথা বলব। এগুলো হলো তথ্য জমা করার বিশেষ পদ্ধতি। এই পোস্টে আপনি শিখবেন:

  • লিস্ট (Lists): তথ্য যোগ, মুছে ফেলা, খুঁজে বের করা এবং স্লাইসিং।
  • টাপল (Tuples): যেগুলো বদলানো যায় না এবং কীভাবে ব্যবহার হয়।
  • ডিকশনারি (Dictionaries): কী-ভ্যালু জোড়া এবং নেস্টেড ডিকশনারি।
  • একটা ফোনবুক প্রজেক্ট।

ডেটা স্ট্রাকচার শিখলে আপনার প্রোগ্রাম আরও দক্ষ হবে। চলুন শুরু করি!


লিস্ট (Lists)

লিস্ট হলো একটা তালিকা, যেখানে অনেকগুলো তথ্য একসাথে রাখা যায়। এটা অনেকটা শপিং লিস্টের মতো।

লিস্ট তৈরি এবং ব্যবহার

লিস্ট [] দিয়ে তৈরি হয়:

fruits = ["আপেল", "কলা", "আম"]
print(fruits)  # আউটপুট: ['আপেল', 'কলা', 'আম']

তথ্য যোগ করা

  • append(): শেষে যোগ করে।
fruits.append("কমলা")
print(fruits)  # আউটপুট: ['আপেল', 'কলা', 'আম', 'কমলা']

তথ্য মুছে ফেলা

  • remove(): নির্দিষ্ট আইটেম মোছে।
fruits.remove("কলা")
print(fruits)  # আউটপুট: ['আপেল', 'আম', 'কমলা']

তথ্য খুঁজে বের করা

লিস্টে ইনডেক্স (শুরু হয় ০ থেকে) দিয়ে তথ্য পাওয়া যায়:

print(fruits[0])  # আউটপুট: আপেল

স্লাইসিং

লিস্টের একটা অংশ কাটতে স্লাইসিং ব্যবহার হয়:

print(fruits[1:3])  # আউটপুট: ['আম', 'কমলা']

কেন ব্যবহার? লিস্টে তথ্য বদলানো যায়, তাই এটা খুব নমনীয়।


টাপল (Tuples)

টাপলও লিস্টের মতো, তবে এটার তথ্য বদলানো যায় না। এটা () দিয়ে তৈরি হয়।

টাপল তৈরি

colors = ("লাল", "নীল", "সবুজ")
print(colors)  # আউটপুট: ('লাল', 'নীল', 'সবুজ')

তথ্য পড়া

ইনডেক্স দিয়ে পড়া যায়:

print(colors[1])  # আউটপুট: নীল

বদলানো যায় না

চেষ্টা করলে এরর হবে:

colors[0] = "হলুদ"  # এরর: TypeError

কেন ব্যবহার? যেখানে তথ্য বদলাতে হবে না (যেমন দিনের নাম), সেখানে টাপল দ্রুত এবং নিরাপদ।


ডিকশনারি (Dictionaries)

ডিকশনারি হলো কী-ভ্যালু জোড়ার সংগ্রহ। এটা {} দিয়ে তৈরি হয়।

ডিকশনারি তৈরি

student = {
    "name": "রাহিম",
    "age": 20,
    "grade": "A"
}
print(student)  # আউটপুট: {'name': 'রাহিম', 'age': 20, 'grade': 'A'}

তথ্য পড়া

কী দিয়ে ভ্যালু পাওয়া যায়:

print(student["name"])  # আউটপুট: রাহিম

তথ্য যোগ বা বদল

student["age"] = 21  # বদল
student["class"] = "10"  # নতুন যোগ
print(student)  # আউটপুট: {'name': 'রাহিম', 'age': 21, 'grade': 'A', 'class': '10'}

তথ্য মোছা

del student["grade"]
print(student)  # আউটপুট: {'name': 'রাহিম', 'age': 21, 'class': '10'}

নেস্টেড ডিকশনারি

ডিকশনারির ভেতর আরেকটা ডিকশনারি থাকতে পারে:

contacts = {
    "রাহিম": {"phone": "12345", "email": "[email protected]"},
    "রিয়া": {"phone": "67890", "email": "[email protected]"}
}
print(contacts["রাহিম"]["phone"])  # আউটপুট: 12345

কেন ব্যবহার? নাম-মান জোড়া দিয়ে তথ্য সাজাতে ডিকশনারি দারুণ।


প্রজেক্ট: ফোনবুক প্রোগ্রাম

চলুন একটা ফোনবুক বানাই, যেখানে কন্টাক্ট যোগ, খুঁজে বের করা এবং মোছা যাবে।

ধাপগুলো:

  1. নতুন ফাইল বানান, নাম দিন phonebook.py
  2. এই কোড লিখুন:
# ফোনবুক হিসেবে একটা ডিকশনারি
   phonebook = {}

   while True:
       print("\nফোনবুক মেনু:")
       print("1. কন্টাক্ট যোগ করুন")
       print("2. কন্টাক্ট খুঁজুন")
       print("3. কন্টাক্ট মুছুন")
       print("4. বেরিয়ে যান")
       choice = input("আপনার পছন্দ (1-4): ")

       if choice == "1":
           name = input("নাম লিখুন: ")
           number = input("ফোন নম্বর লিখুন: ")
           phonebook[name] = number
           print(name, "যোগ করা হয়েছে।")

       elif choice == "2":
           name = input("খুঁজতে নাম লিখুন: ")
           if name in phonebook:
               print(name, "এর নম্বর:", phonebook[name])
           else:
               print("কন্টাক্ট পাওয়া যায়নি।")

       elif choice == "3":
           name = input("মুছতে নাম লিখুন: ")
           if name in phonebook:
               del phonebook[name]
               print(name, "মুছে ফেলা হয়েছে।")
           else:
               print("কন্টাক্ট পাওয়া যায়নি।")

       elif choice == "4":
           print("বাই বাই!")
           break

       else:
           print("ভুল পছন্দ, আবার চেষ্টা করুন।")
  1. টার্মিনালে চালান:
python phonebook.py
  1. আউটপুট দেখুন:
ফোনবুক মেনু:
   1. কন্টাক্ট যোগ করুন
   2. কন্টাক্ট খুঁজুন
   3. কন্টাক্ট মুছুন
   4. বেরিয়ে যান
   আপনার পছন্দ (1-4): 1
   নাম লিখুন: রাহিম
   ফোন নম্বর লিখুন: 12345
   রাহিম যোগ করা হয়েছে।

কোড ব্যাখ্যা:

  • phonebook = {}: একটা খালি ডিকশনারি।
  • while True: মেনু চলতে থাকে যতক্ষণ না বের হন।
  • if-elif: পছন্দ অনুযায়ী কাজ করে—যোগ, খোঁজা, মোছা।
  • in: চেক করে নাম ডিকশনারিতে আছে কি না।

এই প্রজেক্টে ডিকশনারির শক্তি বোঝা যায়।


হোমওয়ার্ক: টু-ডু লিস্ট ম্যানেজার

আপনার কাজ হলো একটা টু-ডু লিস্ট প্রোগ্রাম বানানো, যেখানে ক্যাটাগরি দিয়ে কাজ সাজানো যাবে।

ধাপগুলো:

  1. ফাইল বানান, নাম দিন todo_list.py
  2. এই কোড লিখুন:
# টু-ডু লিস্ট হিসেবে ডিকশনারি
   todo_list = {
       "কাজ": [],
       "পড়াশোনা": [],
       "শপিং": []
   }

   while True:
       print("\nটু-ডু লিস্ট মেনু:")
       print("1. কাজ যোগ করুন")
       print("2. লিস্ট দেখুন")
       print("3. বেরিয়ে যান")
       choice = input("আপনার পছন্দ (1-3): ")

       if choice == "1":
           category = input("ক্যাটাগরি লিখুন (কাজ/পড়াশোনা/শপিং): ")
           task = input("কাজ লিখুন: ")
           if category in todo_list:
               todo_list[category].append(task)
               print("কাজ যোগ হয়েছে।")
           else:
               print("ভুল ক্যাটাগরি।")

       elif choice == "2":
           for category, tasks in todo_list.items():
               print(category + ":")
               for task in tasks:
                   print("- " + task)

       elif choice == "3":
           print("বাই বাই!")
           break

       else:
           print("ভুল পছন্দ, আবার চেষ্টা করুন।")
  1. চালান:
python todo_list.py
  1. উদাহরণ:
টু-ডু লিস্ট মেনু:
   1. কাজ যোগ করুন
   2. লিস্ট দেখুন
   3. বেরিয়ে যান
   আপনার পছন্দ (1-3): 1
   ক্যাটাগরি লিখুন (কাজ/পড়াশোনা/শপিং): পড়াশোনা
   কাজ লিখুন: পাইথন পড়া
   কাজ যোগ হয়েছে।

কোড ব্যাখ্যা:

  • todo_list: ক্যাটাগরি দিয়ে ডিকশনারি, প্রতিটা ক্যাটাগরিতে লিস্ট।
  • append(): ক্যাটাগরিতে কাজ যোগ করে।
  • for category, tasks in todo_list.items(): সব ক্যাটাগরি ও কাজ প্রিন্ট করে।

উপসংহার

আজ আমরা শিখলাম:

  • লিস্টে তথ্য যোগ, মোছা, এবং স্লাইসিং।
  • টাপলের অপরিবর্তনীয় বৈশিষ্ট্য।
  • ডিকশনারির কী-ভ্যালু জোড়া।
  • একটা ফোনবুক বানানো।

ডেটা স্ট্রাকচার আপনার তথ্য সাজানোর ক্ষমতা বাড়িয়ে দেয়। প্রজেক্ট আর হোমওয়ার্ক চেষ্টা করুন। কমেন্টে বলুন কেমন লাগলো বা কোথায় সমস্যা হয়েছে।

প্রশ্ন:

  1. লিস্ট, টাপল আর ডিকশনারির মধ্যে কোনটা বেশি পছন্দ হয়েছে?
  2. ফোনবুক প্রোগ্রামে কি কিছু যোগ করতে চান?
  3. ডেটা স্ট্রাকচার শিখে কি আপনার কোডিং সহজ লাগছে?