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

পাইথন সুইচ স্টেটমেন্ট: একটি হাউ-টু গাইড

জাভা (Java) বা সি شار্প (C#) এর মতো, পাইথনে কোনো বিল্ট-ইন সুইচ স্টেটমেন্ট (switch statement) নেই। এর মানে আপনি নিজের কোড লিখে একটি "switch...case" স্টেটমেন্টের অনুকরণ না করলে একটি সুইচ এক্সপ্রেশন মূল্যায়ন (evaluate) করতে পারবেন না।

এই গাইডে, আমরা পাইথনে "switch...case" কীভাবে লিখতে হয় সেটি আলোচনা করব, এবং নকল-সুইচ স্টেটমেন্টের দুটি উদাহরণের মাধ্যমে যাব যাতে আপনি আপনার কোডে এটি কীভাবে লিখবেন সেটি শিখতে পারেন।

সুইচ স্টেটমেন্ট: একটি রিফ্রেশার

একটি সুইচ স্টেটমেন্ট আপনাকে কোড ব্লক들의 একটি সেট থেকে একটি নির্বাচন করতে দেয় যেটি রান হবে। এগুলো একটি প্রোগ্রামে একাধিক এক্সপ্রেশন মূল্যায়ন করার একটি পদ্ধতি।

একটি সুইচ স্টেটমেন্ট একটি সুইচ এক্সপ্রেশন মূল্যায়ন করে এবং তার ফলাফলকে "case" স্টেটমেন্টের মানগুলোর সাথে তুলনা করে কাজ করে। যদি মিল পাওয়া যায়, তবে সংশ্লিষ্ট কোড ব্লকটি রান হয়। অন্যথায়, কিছুই হবে না।

ঐচ্ছিকভাবে, "default" কীওয়ার্ড ব্যবহার করা হয় যদি কোনো স্টেটমেন্ট একটি নির্দিষ্ট এক্সপ্রেশনের সাথে মেলে না তবে একটি কোড ব্লক রান করতে।

পাইথন সুইচ স্টেটমেন্ট: প্রত্যেক মান ফেরত দেওয়া

চলুন একটি প্রোগ্রাম লিখি যা একটি সংখ্যাসূচক মানকে সপ্তাহের দিনে রূপান্তর করে।

শুরুতে, ব্যবহারকারীকে একটি নম্বর ইনপুট দিতে বলুন যা তারা লেখা দিনে রূপান্তর করতে চায়:

convert_to_day = int(input("Insert a day of the week: "))

আমরা ব্যবহারকারী যে মানটি আমাদের প্রোগ্রামে ইনপুট দিয়েছে তা ইন্টিজার-এ রূপান্তর করেছি। আমরা এটি কেন আবশ্যক তা টিউটোরিয়ালে পরে আলোচনা করব।

এরপর, আমরা একটি ডিকশনারি সংজ্ঞায়িত করি। এই ডিকশনারিতে সপ্তাহের সকল দিন থাকবে। প্রতিটি কী (key) একটি দিনকে নম্বর হিসেবে সংরক্ষণ করবে এবং প্রতিটি ভ্যালু (value) দিনটি লেখা রূপে সংরক্ষণ করবে (যেমন: Tuesday):

days = {
    1: "Monday",
    2: "Tuesday",
    3: "Wednesday",
    4: "Thursday",
    5: "Friday",
    6: "Saturday",
    7: "Sunday"
}

আমাদের ডিকশনারিতে সাতটি কী এবং ভ্যালু আছে। কী "1" উপস্থাপন করে "Monday" কে এবং এভাবে সপ্তাহের শেষ দিন পর্যন্ত চলে।

এরপর, আমরা ডিকশনারির get() মেথড ব্যবহার করি এই ডিকশনারিতে সেই আইটেমটি অ্যাক্সেস করতে যা ব্যবহারকারীর ইনপুট দেওয়া মানের সাথে মিলে যায়:

day_as_written = days.get(convert_to_day, "There is no day with this numerical value.")
print(day_as_written)

আমরা ব্যবহারকারী যে মানটি আমাদের প্রোগ্রামে ইনপুট দিয়েছে তা ইন্টিজার-এ রূপান্তর করেছি যাতে আমরা আমাদের get() স্টেটমেন্টে এটি ব্যবহার করতে পারি। যদি "convert_to_day" যা সংরক্ষণ করে তার সমান কোনো কী নেই, তবে আমাদের কোড "There is no day with this numerical value." ফেরত দেবে।

যদি ব্যবহারকারী মান "১" ইনপুট দেন, তবে আমাদের কোড মূল্যায়ন করবে:

days[1]

এটি আমাদের লিস্টে কী "১" এর সাথে যুক্ত মানটি বের করবে।

আমাদের কোডটি রান করুন এবং ফলাফল দেখুন:

Insert a day of the week: 1
Monday

আমাদের কোডটি সফলভাবে ব্যবহারকারীর ইনপুট দেওয়া নম্বরকে একটি স্ট্রিং-এ রূপান্তর করে। আমাদের ডিকশনারিতে না থাকা একটি দিনে আমাদের কোডটি রান করুন:

Insert a day of the week: 8
There is no day with this numerical value.

আমাদের কোডটি কাজ করছে এমনকি ব্যবহারকারী একটি অবৈধ মান ইনপুট দিলেও।

পাইথন সুইচ স্টেটমেন্ট: ফাংশন কল করা

আমরা আমাদের কোডে ফাংশন কল করতে এই সিনট্যাক্সটি ব্যবহার করতে পারি। আমরা একটি অ্যাপ্লিকেশন তৈরি করব যা একটি স্যান্ডইচ স্টোরে ক্রয়ের একটি লিস্ট সম্পর্কে তথ্য প্রদর্শন করে।

প্রথমে, ক্রয়ের একটি লিস্ট সংজ্ঞায়িত করুন:

purchases = [2.50, 2.50, 2.75, 3.90, 5.60, 2.40]

এরপর, তিনটি ফাংশন সংজ্ঞায়িত করুন। এই ফাংশনগুলো গণনা করবে:

  • আমাদের লিস্টে ক্রয়ের সংখ্যা
  • গড় ক্রয়ের মান
  • সবচেয়ে বড় ক্রয়

চলুন এই ফাংশনগুলো সংজ্ঞায়িত করি:

def number_of_purchases():
    total = len(purchases)
    print(total)

def average_value():
    average = sum(purchases) / len(purchases)
    print(average)

def largest_purchase():
    largest = max(purchases)
    print(largest)

এখন যেহেতু আমরা এই ফাংশনগুলো সংজ্ঞায়িত করেছি, আমাদের নকল-সুইচ স্টেটমেন্ট লিখতে শুরু করি। প্রথম উদাহরণের মতো, আমরা শুরু করি ব্যবহারকারীকে একটি মান ইনপুট দিতে বলা দিয়ে। ব্যবহারকারী যে মানটি ইনপুট দেবে সেটি আমাদের ফাংশনগুলির সাথে মিলে যেতে হবে।

print("[1] Display the number of purchases made today")
print("[2] Display the average value of all the purchases made today")
print("[3] Display the largest purchase made today")
to_run = int(input("What would you like to do? "))

আমাদের কোড তিনটি বার্তা প্রিন্ট করে। প্রতিটি ব্যবহারকারীকে একটি অপশন জানায় যা তারা নিতে পারে। আমাদের কোড তারপর ব্যবহারকারীকে একটি মান ইনপুট দিতে বলে। আমরা এই মানকে একটি সংখ্যা-এ রূপান্তর করি যাতে আমরা এটি পরে আমাদের প্রোগ্রামে ব্যবহার করতে পারি।

এরপর, একটি ডিকশনারি সংজ্ঞায়িত করুন যা আমাদের ফাংশনগুলোক নম্বরগুলোর সাথে ম্যাপ করে:

options = {
    1: number_of_purchases,
    2: average_value,
    3: largest_purchase
}

মান "১" "number_of_purchases" নামে ফাংশনটির সাথে ম্যাপ করা, মান "২" "average_value" ফাংশনটির সাথে ম্যাপ করা, এবং মান "৩" "largest_purchase" ফাংশনটির সাথে ম্যাপ করা।

এরপর, get() মেথড ব্যবহার করে নির্বাচন করুন যে আমাদের প্রোগ্রামটি কোন ফাংশনটি রান করবে:

function_to_execute = options.get(to_run)
function_to_execute()

এই কোডটি আমাদের ডিকশনারি থেকে সেই ফাংশনটি বের করে যা আমরা এক্সিকিউট করতে চাই। আমরা আমাদের get() মেথডে দ্বিতীয় মান নির্দিষ্ট করিনি কারণ আমাদের কোড কাজ করার জন্য আমাদের একটি ফাংশন কল করতে হবে। এর মানে যদি ব্যবহারকারী একটি অবৈধ মান ইনপুট দেয়, তবে আমাদের কোড একটি এরর ফেরত দেবে। এই আচরণ হ্যান্ডল করার উপায় আছে কিন্তু এটি এই টিউটোরিয়ালের সুযোগের বাইরে।

আমাদের কোডটি রান করুন:

[1] Display the number of purchases made today
[2] Display the average value of all the purchases made today
[3] Display the largest purchase made today
What would you like to do? 3
5.6

আমরা আমাদের লিস্ট থেকে অপশন ৩ নির্বাচন করেছি। আমাদের কোডটি সফলভাবে একটি নির্দিষ্ট দিনে করা সবচেয়ে বড় ক্রয়টি প্রিন্ট করে। অপশন ২ নির্বাচন করে দেখি:

[1] Display the number of purchases made today
[2] Display the average value of all the purchases made today
[3] Display the largest purchase made today
What would you like to do? 2
3.275

আমাদের কোড আমাদের লিস্টে ক্রয়ের গড় মান ফেরত দিচ্ছে।

উপসংহার

যদিও পাইথনে কোনো বিল্ট-ইন সুইচ স্টেটমেন্ট নেই, আপনি একটি ডিকশনারি এবং get() মেথড ব্যবহার করে একটি তৈরি করতে পারেন।

সুইচ স্টেটমেন্টগুলো উপকারী যদি আপনি একটি এক্সপ্রেশনকে একাধিক সম্ভাব্য ফলাফলের সাথে মূল্যায়ন করতে চান।

আপনি একটি নকল-সুইচ স্টেটমেন্ট লিখতে পারেন যা আপনার নির্দিষ্ট কীের উপর ভিত্তি করে ডিকশনারি থেকে মান বের করে। আপনি একটি নকল-সুইচ স্টেটমেন্টও লিখতে পারেন যা একটি নির্দিষ্ট কী রেফার করে ডিকশনারি থেকে একটি ফাংশন বের করে।

এখন আপনি পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজে আপনার নিজস্ব সুইচ স্টেটমেন্ট তৈরি করতে পারেন এক্সপার্ট কোডারের মতো!

  1. পাইথন Hello World: হাউ-টু গাইড

  2. পাইথন pass স্টেটমেন্ট: প্লেসহোল্ডার হিসেবে ব্যবহার

  3. পাইথন লিস্ট কম্প্রিহেনশন: সম্পূর্ণ হাও-টু গাইড

  4. SQL WHERE ক্লজ: রেকর্ড ফিল্টার করার গাইড