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

পাইথন: ফাংশন থেকে একাধিক মান রিটার্ন করা

আপনি ডিকশনারি, টাপল, বা লিস্ট ব্যবহার করে একাধিক মান বান্ডেল করে রিটার্ন করতে পারেন। এই ডেটা টাইপগুলো আপনাকে একাধিক সমান есте বাড়ু মান সংরক্ষণ করতে দেয়। আপনি আপনার মেইন প্রোগ্রামে সেগুলো থেকে ইনডিভিজুয়াল মান এক্সট্রাক্ট করতে পারেন। অথবা, আপনি একাধিক মান পাস করতে পারেন এবং সেগুলোকে কমা দিয়ে আলাদা করতে পারেন।

পাইথন: একাধিক মান রিটার্ন করা

পাইথন ফাংশন একাধিক মান রিটার্ন করতে পারে। একাধিক মান রিটার্ন করতে, আপনি আপনার মেইন প্রোগ্রামে হয় একটি ডিকশনারি, একটি পাইথন টাপল, বা একটি লিস্ট রিটার্ন করতে পারেন।

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

পাইথন: একাধিক মান রিটার্ন করার পদ্ধতিগুলো

আপনি একটি পাইথন ফাংশন থেকে একাধিক মান নিচের পদ্ধতিগুলো ব্যবহার করে রিটার্ন করতে পারেন:

  • একাধিক মান ধারণকারী একটি লিস্ট।
  • একাধিক মান ধারণকারী একটি টাপল।
  • একাধিক রেকর্ড ধারণকারী একটি ডিকশনারি।
  • কমা দিয়ে আলাদা করা একাধিক মান।

উপরের সব ডেটা টাইপ আপনাকে একাধিক মান সংরক্ষণ করতে দেয়। কমা দিয়ে আলাদা করা একাধিক মান রিটার্ন করা সবচেয়ে এলিগ্যান্ট সমাধান। কারণ এই অ্যাপ্রোচ আপনার উদ্দেশ্য স্পষ্ট করে: আপনার মেইন প্রোগ্রামে একাধিক পৃথক মান রিটার্ন করা।

একটি পাইথন return স্টেটমেন্ট ফাংশন থেকে মেইন প্রোগ্রামে মান পাঠায়। এই স্টেটমেন্ট সবচেয়ে কমনলি একটি মান মেইন প্রোগ্রামে রিটার্ন করার জন্য ব্যবহার হয়। কিন্তু এটা একাধিক মান মেইন প্রোগ্রামে রিটার্ন করতে ও ব্যবহার করা যায়।

পাইথন: কমা দিয়ে একাধিক মান রিটার্ন করা

আপনি যেই মানগুলো রিটার্ন করতে চান সেগুলোকে কমা দিয়ে আলাদা করে রিটার্ন করতে পারেন। এই মানগুলো আপনার পাইথন return স্টেটমেন্টের পরে থাকা উচিত।

আমরা একটি প্রোগ্রাম লিখব যা একটি ইলেকট্রনিক্স স্টোরে কতগুলো সেলস হয়েছে সেটি ক্যালকুলেট করবে। আমরা শুধু ৫০০ ডলারের বেশি মূল্যের সেলস গুনব করব। আমাদের প্রোগ্রাম প্রতিটি সেলসের গড় মানও ক্যালকুলেট করবে।

শুরু করি একটি পাইথন অ্যারে ডিফাইন করে যেটি সেলসের তালিকা ধারণ করে:

sales = [59.99, 240.00, 655.25, 75.99]

এরপর, একটি পাইথন ফাংশন লিখি যা ৫০০ ডলারের বেশি মূল্যের সেলসের সংখ্যা এবং প্রতিটি কেনাকাটার গড় মান ক্যালকুলেট করবে:

def calculate_data(sales):
    over_limit = 0
    for s in sales:
        if s > 500:
            over_limit += 1
    average_purchase = sum(sales) / len(sales)
    return over_limit, average_purchase

আমাদের ফাংশন একটি ফর লুপ ব্যবহার করে আমাদের লিস্টের প্রতিটি সেলসের ওপর ইটারেট করে। যদি কোনো সেলস ৫০০ ডলারের বেশি মূল্যের হয়, তবে আমাদের over_limit পাইথন ভেরিয়েবল এক বাড়ে। তারপর আমরা সব সেলসের টোটাল ভ্যালুকে সেলসের সংখ্যা দিয়ে ভাগ করে প্রতিটি কেনাকাটার গড় মান বের করি।

আমাদের ফাংশনের শেষে, আমরা return স্টেটমেন্ট ব্যবহার করে over_limit এবং average_purchase এর মানগুলো আমাদের মেইন প্রোগ্রামে রিটার্ন করি।

এখন শুধু আমাদের ফাংশনটি কল করা বাকি এবং আমাদের প্রোগ্রাম যে ডেটা ক্যালকুলেট করেছে সেটি কনসোলে ডিসপ্লে করা:

over_limit, average_purchase = calculate_data(sales)
print("{} sales were made over $500. The average purchase was ${}.".format(over_limit, round(average_purchase)))

আমরা round() মেথড ব্যবহার করে গড় কেনাকাটাকে দুটি দশমিক স্থান পর্যন্ত রাউন্ড করেছি। আমাদের কোড একটি মেসেজ প্রিন্ট করে যা আমরা ক্যালকুলেট করা মানগুলো জানিয়ে দেয়। প্রোগ্রামটি রান করি:

1 sales were made over $500. The average purchase was $258.

আমাদের প্রোগ্রাম সফলভাবে বলে দিয়েছে কতগুলো সেলস ৫০০ ডলারের বেশি মূল্যের হয়েছে এবং কেনাকাটার গড় দাম কত।

এই কোডটি কাজ করে কারণ return স্টেটমেন্ট আমাদের মানগুলোকে একটি টাপলে রূপান্তর করে এবং একটি টাপল লিস্ট আমাদের মেইন প্রোগ্রামে রিটার্ন করে। আমরা তারপর এই টাপলটিকে দুটি ভেরিয়েবলে আনপ্যাক করি এই লাইনে:

over_limit, average_purchase = calculate_data(sales)

পাইথন: লিস্ট বা টাপল দিয়ে একাধিক মান রিটার্ন করা

লিস্ট এবং টাপল দুটোই একাধিক মান সংরক্ষণ করতে দেয়। এর মানে আমরা এগুলো ব্যবহার করে আমাদের মেইন প্রোগ্রামে একাধিক মান রিটার্ন করতে পারি।

লিস্ট বা টাপল ব্যবহার করা সেরা যদি আপনি যেই মানগুলো রিটার্ন করছেন সেগুলোর মধ্যে কোনো রিলেশনশিপ থাকে। কিন্তু, আপনি যেকোনো কালেকশন অফ ভ্যালু রিটার্ন করতে এই অ্যাপ্রোচ ব্যবহার করতে পারেন।

আমরা গড় কেনাকাটার সাইজ এবং ৫০০ ডলারের বেশি মূল্যের কেনাকাটার সংখ্যা আমাদের মেইন প্রোগ্রামে রিটার্ন করব। এজন্য, চলুন আমাদের পূর্বের উদাহরণটি রেফার করি এবং লিস্ট ব্যবহার করার জন্য একটু পরিবর্তন আনিই:

def calculate_data(sales):
    over_limit = 0
    for s in sales:
        if s > 500:
            over_limit += 1
    average_purchase = sum(sales) / len(sales)
    return [over_limit, average_purchase]

আমরা শুধু আমাদের মানগুলোকে একটি সিঙ্গেল লিস্টে আলাদা করেছি। আমাদের লিস্টে ৫০০ ডলারের বেশি মূল্যের কেনাকাটার সংখ্যা এবং গড় কেনাকাটার মান রেসপেক্টিভলি আছে।

আমরা টাপল ডেটা স্ট্রাকচারও রিটার্ন করতে পারি। এজন্য, আমরা আমাদের স্কয়ার ব্র্যাকেটগুলোকে কার্লি ব্র্যাকেট দিয়ে রিপ্লেস করব। বড় ফ্যাক্টর হলো টাপল ডুপ্লিকেট ভ্যালু ধারণ করতে পারে না। আপনার মেইন প্রোগ্রামে পাস করা দুটি মান সমান হওয়ার চান্স থাকলে টাপল এভয়েড করুন।

আমাদের মেইন প্রোগ্রামে এই মানগুলো অ্যাক্সেস করতে হলে আমাদের ইন্ডেক্সিং ব্যবহার করতে হবে:

values = calculate_data(sales)
print("{} sales were made over $500. The average purchase was ${}.".format(values[0], round(values[1])))

আমরা values[0] সিনট্যাক্স ব্যবহার করে আমাদের calculate_data() ফাংশন যা লিস্ট রিটার্ন করে সেটির প্রথম মান অ্যাক্সেস করি। এটা আমাদের ফাংশনে over_limit-এর মান ক্যারেসপন্ড করে। আমরা values[1] সিনট্যাক্স ব্যবহার করে গড় কেনাকাটার ভ্যালু অ্যাক্সেস করি।

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

1 sales were made over $500. The average purchase was $258.

আমাদের কোড আমাদের লাস্ট উদাহরণের মতোই কাজ করে, কিন্তু এইবার আমরা আমাদের কোডে মানগুলো আলাদা করার জন্য একটি লিস্ট ব্যবহার করেছি।

পাইথন: ডিকশনারি দিয়ে একাধিক মান রিটার্ন করা

আমরা একটি ফাংশন থেকে একাধিক মান রিটার্ন করতে ডিকশনারি ব্যবহার করতে পারি।

আমাদের লাস্ট উদাহরণে, আমরা শুধু দুটি মান আমাদের মেইন প্রোগ্রামে রিটার্ন করেছিলাম। এতে আনপ্যাকিং সিনট্যাক্স (যেখানে আপনি আনপ্যাক করেন মানগুলোকে একাধিক ভেরিয়েবলে) ব্যবহার করা কনভেনিয়েন্ট ছিল।

যদি আমরা অধিক মান নিয়ে কাজ করতাম, তবে হয়তো একটি ডিকশনারি রিটার্ন করা সহজ হতো যা প্রতিটি মানের সাথে একটি লেবেল অ্যাসোসিয়েট করে। চলুন আমাদের লাস্ট ফাংশনটি রিভাইজ করি ডিকশনারি ব্যবহার করে একাধিক মান মেইন প্রোগ্রামে রিটার্ন করার জন্য:

def calculate_data(sales):
    over_limit = 0
    for s in sales:
        if s > 500:
            over_limit += 1
    average_purchase = sum(sales) / len(sales)
    return {
        "limit": over_limit,
        "average": average_purchase
    }

আমাদের ফাংশন একটি ডিকশনারি রিটার্ন করে যাতে দুটি কী এবং ভ্যালু আছে। কীগুলো, limit এবং average, প্রতিটি মানকে ইউনিকলি আইডেন্টিফাই করতে ব্যবহার করা যায়। এখন আমাদের ফাংশন কল এবং প্রিন্ট স্টেটমেন্ট রিভাইজ করতে হবে এই নতুন সিনট্যাক্স সাপোর্ট করার জন্য:

values = calculate_data(sales)
print("{} sales were made over $500. The average purchase was ${}.".format(values["limit"], round(values["average"])))

আমরা একটি ডিকশনারি আমাদের মেইন প্রোগ্রামে রিটার্ন করি। আমরা এই ডিকশনারি values ভেরিয়েবলে এসাইন করি। তারপর, আমরা ইন্ডেক্সিং ব্যবহার করে limit এবং average এর মান রিট্রিভ করি।

প্রোগ্রামটি রান করি:

1 sales were made over $500. The average purchase was $258.

আমাদের প্রোগ্রাম আগের মতো একই রেসপন্স রিটার্ন করেছে। এটা এক্সপেক্টেড কারণ আমরা শুধু মানগুলো মেইন প্রোগ্রামে রিটার্ন করার পদ্ধতি চেঞ্জ করেছি। আমাদের ক্যালকুলেশন লজিক একই আছে।

উপসংহার

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

কমা-সেপারেটেড মেথড অধিক কনসাইজ এবং বুঝতে সহজ যদি আপনি ছোট সেট অফ ভ্যালু নিয়ে কাজ করেন। যদি আপনি একটি ফাংশন থেকে বড় রেঞ্জ অফ ভ্যালু রিটার্ন করেন, তবে আপনি হয়তো একটি ডিকশনারি ব্যবহার করতে চান একাধিক মান মেইন প্রোগ্রামে পাঠাতে।

পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখতে আপনার যাত্রা ত্বরান্বিত করতে চান? টপ পাইথন কোর্স এবং অনলাইন লার্নিং রিসোর্সে পরামর্শের জন্য আমাদের How to Learn Python গাইডটি চেক করুন।

  1. পাইথন ফাংশন থেকে None রিটার্ন করা

  2. পাইথন ফাংশন থেকে void রিটার্ন করা

  3. পাইথন ফাংশন থেকে JSON অবজেক্ট রিটার্ন করা

  4. পাইথন ফাংশন থেকে ফাংশন রিটার্ন করা