$lang['tuto'] = "টিউটোরিয়াল"; ?>$lang['tuto'] = "টিউটোরিয়াল"; ?> %: একটি অনুমান করার

%: একটি অনুমান করার খেলায় 'গণিত' এবং 'টুপল': অসমর্থিত অপারেন্ড টাইপ(গুলি): কীভাবে এটি ঠিক করা যায়

Temp mail SuperHeros
%: একটি অনুমান করার খেলায় 'গণিত' এবং 'টুপল': অসমর্থিত অপারেন্ড টাইপ(গুলি): কীভাবে এটি ঠিক করা যায়
%: একটি অনুমান করার খেলায় 'গণিত' এবং 'টুপল': অসমর্থিত অপারেন্ড টাইপ(গুলি): কীভাবে এটি ঠিক করা যায়

একটি ইন্টারেক্টিভ গেসিং গেম তৈরি করার সময় সাধারণ পাইথন ত্রুটি

পাইথন শেখার সময়, সবচেয়ে উত্তেজনাপূর্ণ প্রকল্পগুলির মধ্যে একটি হল একটি সংখ্যা অনুমান করা গেমের মতো ইন্টারেক্টিভ গেম তৈরি করা। এই ধরনের প্রকল্পগুলি আপনাকে বুঝতে সাহায্য করে যে কিভাবে পাইথন ব্যবহারকারীর ইনপুটের সাথে ইন্টারঅ্যাক্ট করে এবং প্রোগ্রামের আচরণকে গাইড করতে নিয়ন্ত্রণ প্রবাহ ব্যবহার করে। এই ক্ষেত্রে, লক্ষ্য হল পাইথন ব্যবহারকারীকে 1 থেকে 100 এর মধ্যে একটি সংখ্যা অনুমান করার জন্য অনুরোধ করবে, উচ্চ বা কম অনুমান করার জন্য প্রতিক্রিয়া প্রদান করবে এবং অবশেষে, সঠিক অনুমান করা হলে তা নিশ্চিত করবে।

যাইহোক, অনেক প্রোগ্রামিং অনুশীলনের মতো, ত্রুটিগুলি দেখা দিতে পারে যা অবিলম্বে স্পষ্ট নয়। একটি পাইথন টিউটোরিয়াল অনুসরণ করার সময় আপনি একটি ত্রুটির সম্মুখীন হতে পারেন, যেমন আপনি কাজ করছেন, %: 'Math' এবং 'tuple'-এর জন্য অসমর্থিত অপারেন্ড প্রকার(গুলি)। এটি হতাশাজনক হতে পারে, বিশেষ করে যখন বাক্য গঠনটি প্রথম নজরে সঠিক বলে মনে হয়।

এই অনুমান করা গেমটিতে, আপনি যে ত্রুটির মুখোমুখি হচ্ছেন তা সাধারণত ঘটে যখন আপনি একটি স্ট্রিংকে ভুলভাবে ফর্ম্যাট করার চেষ্টা করছেন গণিত মধ্যে ফাংশন IPython.display লাইব্রেরি এটি একটি সাধারণ ভুল, তবে সমাধানটি একবার চিহ্নিত হয়ে গেলেই সহজ।

এই নির্দেশিকাটি আপনাকে ত্রুটির অর্থ কী, কেন এটি ঘটে এবং কীভাবে আপনি এটিকে ঠিক করতে আপনার পাইথন কোডটি পরিবর্তন করতে পারেন তার মধ্য দিয়ে নিয়ে যাবে। শেষ পর্যন্ত, আপনার কাছে বিভ্রান্তিকর ত্রুটি বার্তা ছাড়াই একটি সম্পূর্ণরূপে কার্যকর অনুমান করার গেম থাকবে!

আদেশ ব্যবহারের উদাহরণ
random.randint() থেকে এই ফাংশন এলোমেলো লাইব্রেরি একটি নির্দিষ্ট পরিসরের মধ্যে একটি র্যান্ডম পূর্ণসংখ্যা তৈরি করে। অনুমান করার খেলায়, এটি ব্যবহারকারীর অনুমান করার জন্য 1 থেকে 100 এর মধ্যে একটি এলোমেলো সংখ্যা তৈরি করতে ব্যবহৃত হয়। উদাহরণ: random.randint(1, 100)।
IPython.display.Math() থেকে এই আদেশ IPython.display মডিউলটি একটি বিন্যাসিত উপায়ে গাণিতিক অভিব্যক্তি প্রদর্শন করতে ব্যবহৃত হয়। সমাধানে, এটি সঠিক সংখ্যা এবং ব্যবহারকারীর অনুমান প্রদর্শন করতে আউটপুট ফর্ম্যাট করতে সহায়তা করে। উদাহরণ: গণিত(f'অভিনন্দন! সঠিক সংখ্যাটি ছিল {a}')।
unittest.mock.patch() এই ফাংশনটি পরীক্ষার সময় আপনার কোডের একটি ফাংশন বা বস্তুকে একটি মক সংস্করণ দিয়ে প্রতিস্থাপন করতে ব্যবহৃত হয়। ম্যানুয়াল মিথস্ক্রিয়া ছাড়াই ব্যবহারকারীর ইনপুট অনুকরণ করতে ইউনিট পরীক্ষায় এটি বিশেষভাবে কার্যকর। উদাহরণ: @patch('builtins.input', side_effect=[50, 75, 85, 95, 100])।
unittest.TestCase একটি বেস ক্লাস ইউনিট পরীক্ষা ইউনিট পরীক্ষা তৈরি করতে ব্যবহৃত মডিউল। এটি পৃথক ফাংশন পরীক্ষা করার জন্য একটি কাঠামো প্রদান করে যাতে তারা প্রত্যাশা অনুযায়ী আচরণ করে। উদাহরণ: ক্লাস TestGuessingGame(unittest.TestCase)।
continue এই কন্ট্রোল ফ্লো কমান্ডটি লুপগুলির মধ্যে ব্যবহার করা হয় বর্তমান পুনরাবৃত্তি এড়িয়ে যেতে এবং পরবর্তীটিতে যেতে। স্ক্রিপ্টে, এটি নিশ্চিত করে যে অবৈধ ইনপুটের কারণে একটি ValueError ধরার পরে প্রোগ্রামটি চলতে থাকবে। উদাহরণ: চালিয়ে যান।
try-except ত্রুটি পরিচালনার জন্য ব্যবহার করা হয়, এই কাঠামোটি একটি ব্যতিক্রম উত্থাপিত হওয়া সত্ত্বেও প্রোগ্রামটিকে চালিয়ে যেতে দেয়। অনুমান করা গেমে, এটি ব্যবহারকারীদের দ্বারা অবৈধ ইনপুট পরিচালনা করে যারা পূর্ণসংখ্যা প্রবেশ করে না। উদাহরণ: চেষ্টা করুন: ... ValueError: ছাড়া।
input() এই ফাংশনটি একটি স্ট্রিং হিসাবে ব্যবহারকারীর ইনপুট ক্যাপচার করে। অনুমান করা গেমে, এটি ব্যবহারকারীকে তাদের অনুমান প্রবেশ করতে অনুরোধ করতে ব্যবহৃত হয়। ইনপুট পরে একটি পূর্ণসংখ্যা রূপান্তরিত হয়. উদাহরণ: user_guess = int(ইনপুট('1 এবং 100 এর মধ্যে একটি সংখ্যা অনুমান করুন:'))।
f-string Python 3.6-এ প্রবর্তিত, f-স্ট্রিং স্ট্রিং-এ সরাসরি এক্সপ্রেশন এম্বেড করে সহজ স্ট্রিং বিন্যাসের অনুমতি দিন। সমাধানে, তারা চূড়ান্ত বার্তার জন্য আউটপুট ফর্ম্যাট করতে ব্যবহৃত হয়। উদাহরণ: f'অভিনন্দন! সঠিক সংখ্যাটি ছিল {a}'।
unittest.main() এই কমান্ডটি পাইথনের টেস্ট স্যুট চালায় ইউনিট পরীক্ষা কাঠামো এটি প্রোগ্রামের জন্য লিখিত পরীক্ষাগুলি স্বয়ংক্রিয়ভাবে আবিষ্কার এবং চালানোর জন্য ব্যবহৃত হয়। উদাহরণ: যদি __name__ == '__main__': unittest.main()।

পাইথনের অনুমান করা গেম কোডের পিছনে মেকানিক্স বোঝা

পাইথন অনুমান করা গেমের স্ক্রিপ্টটি ব্যবহারকারীকে 1 থেকে 100 এর মধ্যে এলোমেলোভাবে তৈরি হওয়া সংখ্যা অনুমান করার অনুমতি দেওয়ার জন্য ডিজাইন করা হয়েছে। এই প্রোগ্রামের প্রথম গুরুত্বপূর্ণ উপাদান হল random.randint() ফাংশন, যা নির্দিষ্ট পরিসরের মধ্যে একটি এলোমেলো পূর্ণসংখ্যা তৈরি করে (1 থেকে 100)। এটি গেমটির পিছনে মূল যুক্তি তৈরি করে, কারণ এটি গোপন নম্বর প্রদান করে যা ব্যবহারকারীকে অনুমান করতে হয়। প্রোগ্রাম তারপর ব্যবহারকারীকে তাদের অনুমান ইনপুট করার জন্য অনুরোধ করে, ব্যবহার করে ইনপুট() ফাংশন, যা একটি স্ট্রিং হিসাবে ব্যবহারকারীর ইনপুট ক্যাপচার করে এবং পরে তুলনা করার উদ্দেশ্যে একটি পূর্ণসংখ্যাতে রূপান্তরিত হয়।

লুপ কাঠামো গেমের প্রবাহ নিয়ন্ত্রণে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। ক যখন এলোমেলোভাবে উৎপন্ন সংখ্যার বিপরীতে ব্যবহারকারীর অনুমান ক্রমাগত পরীক্ষা করতে লুপ ব্যবহার করা হয়। যতক্ষণ ব্যবহারকারীর অনুমান ভুল হয়, লুপ প্লেয়ারকে "উচ্চ অনুমান করুন" বা "নিম্ন অনুমান করুন" বলে প্রম্পট করতে থাকে। লুপের ভিতরের অবস্থা ব্যবহারকারীর অনুমানকে গোপন নম্বরের সাথে তুলনা করে, নিশ্চিত করে যে গেমটি অকালে শেষ না হয়ে উপযুক্ত প্রতিক্রিয়া প্রদান করে। এইভাবে ব্যবহারকারীর ইনপুট পরিচালনা করে, গেমটি ইন্টারেক্টিভ হয়ে ওঠে, খেলোয়াড়কে সঠিক উত্তরের দিকে পরিচালিত করে।

দ্বিতীয় স্ক্রিপ্ট ব্যবহার করে IPython.display, আমরা এর সাথে আরও পরিশীলিত আউটপুট বিন্যাস প্রবর্তন করি গণিত(), গাণিতিক স্বরলিপিতে বার্তা প্রদর্শন করতে ব্যবহৃত একটি ফাংশন। যাইহোক, একাধিক ভেরিয়েবল সহ বার্তা ফরম্যাট করতে শতাংশ চিহ্নের (%) প্রাথমিক ব্যবহার একটি ত্রুটির কারণ: %: 'ম্যাথ' এবং 'টুপল'-এর জন্য অসমর্থিত অপারেন্ড প্রকার(গুলি)। এই ত্রুটি দেখা দেয় কারণ গণিত স্ট্রিং ইন্টারপোলেশন এই ফর্ম সমর্থন করে না. পরিবর্তে, পাইথনের আধুনিক এফ-স্ট্রিং ফর্ম্যাটিং ব্যবহার করে, যা আরও স্বজ্ঞাত, এই সমস্যাটির সমাধান করে এবং ব্যবহারকারী সঠিকভাবে অনুমান করলে গেমের শেষে একটি সঠিকভাবে ফর্ম্যাট করা বার্তা প্রদর্শন করে।

উপরন্তু, তৃতীয় স্ক্রিপ্ট একটি সেট সংহত করে ইউনিট পরীক্ষা পাইথন ব্যবহার করে লেখা ইউনিট পরীক্ষা কাঠামো এই পরীক্ষাগুলির উদ্দেশ্য হল গেমের কার্যকারিতার বৈধতা স্বয়ংক্রিয় করা, নিশ্চিত করা যে গেমটি বিভিন্ন পরিস্থিতিতে প্রত্যাশিতভাবে আচরণ করে। উপহাস করে ইনপুট() ফাংশন ব্যবহার করে unittest.mock.patch, আমরা ম্যানুয়াল ইনপুট প্রয়োজন ছাড়াই পরীক্ষার সময় ব্যবহারকারীর ইনপুট অনুকরণ করি। এই পদ্ধতিটি কোডের দৃঢ়তা বাড়ায়, ডেভেলপারদের বিভিন্ন অবস্থার অধীনে গেমের যুক্তি যাচাই করতে দেয়। ইউনিট পরীক্ষাগুলি সম্ভাব্য বাগগুলিকে তাড়াতাড়ি ধরতে সাহায্য করে, এটি নিশ্চিত করে যে প্রোগ্রামের যেকোনো পরিবর্তন বিদ্যমান কার্যকারিতাকে ভঙ্গ করে না।

পাইথন গেসিং গেমে অসমর্থিত অপারেন্ড ত্রুটি ঠিক করা

সমাধান 1: সাধারণ লাইব্রেরি ব্যবহার করে একটি সাধারণ পাইথন অনুমান করার খেলা

# Importing required libraries
import random
# Function for the guessing game
def guessing_game():
    # Generate a random number between 1 and 100
    number_to_guess = random.randint(1, 100)
    user_guess = None
    # Loop until the user guesses the correct number
    while user_guess != number_to_guess:
        try:
            # Get input from the user
            user_guess = int(input('Guess a number between 1 and 100: '))
        except ValueError:
            print('Please enter a valid number.')
            continue
        # Provide hints for guessing higher or lower
        if user_guess < number_to_guess:
            print('Guess higher!')
        elif user_guess > number_to_guess:
            print('Guess lower!')
    # Congratulate the user when they guess correctly
    print(f'Congratulations! The correct number was {number_to_guess}.')
# Call the function
guessing_game()

IPython.display-এর সাহায্যে ত্রুটি পরিচালনা করা এবং Python-এ স্ট্রিং ফরম্যাটিং ঠিক করা

সমাধান 2: ফর্ম্যাট করা আউটপুটের জন্য IPython.display ব্যবহার করা এবং টিপল ত্রুটি ঠিক করা

# Importing required libraries from IPython
from IPython.display import display, Math
import random
# Function for the guessing game with IPython display
def guessing_game_ipython():
    number_to_guess = random.randint(1, 100)
    user_guess = None
    while user_guess != number_to_guess:
        try:
            user_guess = int(input('Guess a number between 1 and 100: '))
        except ValueError:
            print('Please enter a valid number.')
            continue
        if user_guess < number_to_guess:
            print('Guess higher!')
        elif user_guess > number_to_guess:
            print('Guess lower!')
    # Correctly formatting using the f-string instead of % formatting
    display(Math(f'Congratulations! The correct number was {number_to_guess} and you typed {user_guess}'))
# Call the function
guessing_game_ipython()

পরিবেশ জুড়ে সঠিকতা নিশ্চিত করতে ইউনিট পরীক্ষা যোগ করা

সমাধান 3: গেমের যুক্তি যাচাই করার জন্য ইউনিট পরীক্ষা বাস্তবায়ন করা

import unittest
from unittest.mock import patch
import random
# Function for the guessing game to be tested
def guessing_game_tested():
    number_to_guess = random.randint(1, 100)
    user_guess = None
    while user_guess != number_to_guess:
        user_guess = int(input('Guess a number between 1 and 100: '))
    return number_to_guess, user_guess
# Test class for the guessing game
class TestGuessingGame(unittest.TestCase):
    @patch('builtins.input', side_effect=[50, 75, 85, 95, 100])
    def test_guessing_game(self, mock_input):
        result = guessing_game_tested()
        self.assertEqual(result, (100, 100))
# Run the tests
if __name__ == '__main__':
    unittest.main()

ইন্টারেক্টিভ প্রোগ্রামে প্রদর্শনের জন্য পাইথন স্ট্রিং ফরম্যাটিং অপ্টিমাইজ করা

পাইথনে একটি সংখ্যা অনুমান করার গেম বিকাশের একটি মূল দিক হল প্রোগ্রামটি কীভাবে ব্যবহারকারীর সাথে যোগাযোগ করে। বিশেষত, "উচ্চ অনুমান করুন" বা "নিম্ন অনুমান করুন" এর মতো বার্তাগুলি প্রদর্শন করার সময় স্পষ্ট এবং সুনির্দিষ্ট বিন্যাস নিশ্চিত করা অপরিহার্য। লাইব্রেরি ব্যবহার করার সময় একটি সাধারণ চ্যালেঞ্জ IPython.display সঠিকভাবে আউটপুট স্ট্রিং বিন্যাস করা হয়. যদিও স্ট্রিং ইন্টারপোলেশনের জন্য শতাংশ চিহ্ন (%) ব্যবহার করা ঐতিহ্যগত, এটি %: 'ম্যাথ' এবং 'টুপল'-এর জন্য অসমর্থিত অপারেন্ড টাইপ(গুলি) এর মতো ত্রুটির কারণ হতে পারে। এই সমস্যাটি ঘটে কারণ নির্দিষ্ট লাইব্রেরি, যেমন গণিত(), f-স্ট্রিং বিন্যাসের মত বিকল্প পদ্ধতির প্রয়োজন।

আধুনিক পাইথন প্রোগ্রামিং-এ, f-স্ট্রিংগুলি স্ট্রিংগুলিতে ভেরিয়েবল সন্নিবেশ করার জন্য আরও কার্যকর এবং পঠনযোগ্য উপায় অফার করে। উদাহরণস্বরূপ, "অভিনন্দন! সঠিক সংখ্যাটি %g" লেখার পরিবর্তে আপনি একটি f-স্ট্রিং ব্যবহার করতে পারেন f'Congratulations! The correct number was {number}'. F-স্ট্রিংগুলি আপনাকে এক্সপ্রেশনগুলিকে সরাসরি এম্বেড করার অনুমতি দেয়, কোডটিকে আরও সংক্ষিপ্ত করে এবং ঐতিহ্যগত স্ট্রিং ইন্টারপোলেশনের সাথে সম্পর্কিত ঝুঁকিগুলি দূর করে। এটি শুধুমাত্র পঠনযোগ্যতা বাড়ায় না তবে সাধারণ বিন্যাস ত্রুটিও প্রতিরোধ করে।

এফ-স্ট্রিং ব্যবহার করার পাশাপাশি, ইন্টারেক্টিভ প্রোগ্রাম তৈরি করার সময় আরেকটি গুরুত্বপূর্ণ বিবেচনা হল ব্যবহারকারীর ইনপুট বৈধতা। ব্যবহারকারীদের কাছ থেকে ইনপুট গ্রহণ করার সময়, বিশেষ করে এমন একটি গেম যেখানে অনুমান বারবার প্রবেশ করা হয়, সম্ভাব্য ব্যতিক্রমগুলি পরিচালনা করা, যেমন অ-পূর্ণসংখ্যা ইনপুটগুলি অত্যাবশ্যক। বাস্তবায়ন করছে try-except ব্লক নিশ্চিত করে যে প্রোগ্রামটি অবৈধ ইনপুটের কারণে ক্র্যাশ না হয়। পরিবর্তে, এটি ব্যবহারকারীকে বৈধ ডেটা প্রবেশ করতে অনুরোধ করতে পারে, যার ফলে সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা উন্নত হয়। অপ্টিমাইজড স্ট্রিং ফরম্যাটিং এবং ইনপুট যাচাইকরণের এই সমন্বয় আরও শক্তিশালী এবং ব্যবহারকারী-বান্ধব পাইথন অ্যাপ্লিকেশনের দিকে নিয়ে যায়।

পাইথন গেসিং গেম এবং ত্রুটি সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন

  1. %: 'Math' এবং 'tuple'-এর জন্য "অসমর্থিত অপারেন্ড টাইপ(গুলি)" ত্রুটির অর্থ কী?
  2. এই ত্রুটি ঘটে যখন Math() ফাংশন ভুল স্ট্রিং বিন্যাস সঙ্গে ব্যবহার করা হয়. শতাংশ চিহ্ন (%) f-স্ট্রিং দিয়ে প্রতিস্থাপন করা এই সমস্যাটির সমাধান করে।
  3. পাইথনে শতাংশ (%) পদ্ধতির উপর কেন f-স্ট্রিং ব্যবহার করবেন?
  4. এফ-স্ট্রিংগুলি ঐতিহ্যগত তুলনায় আরও পঠনযোগ্য এবং দক্ষ বিন্যাস অফার করে % পদ্ধতি তারা জটিল স্ট্রিং বিন্যাসে ত্রুটির ঝুঁকিও কমায়।
  5. আমি কিভাবে একটি অনুমান খেলা অবৈধ ব্যবহারকারী ইনপুট পরিচালনা করতে পারি?
  6. আপনি একটি ব্যবহার করতে পারেন try-except যখন ব্যবহারকারী অ-পূর্ণসংখ্যা ডেটা প্রবেশ করে তখন ValueError-এর মতো ত্রুটি ধরার জন্য ব্লক করুন, যাতে গেমটি সুচারুভাবে চলতে থাকে।
  7. ভূমিকা কি random.randint() এই খেলায়?
  8. random.randint() ব্যবহারকারীর গেমে অনুমান করার জন্য নির্দিষ্ট পরিসরের (1 থেকে 100) মধ্যে একটি র্যান্ডম সংখ্যা তৈরি করে।
  9. কিভাবে while একটি অনুমান খেলা লুপ সাহায্য?
  10. while লুপ নিশ্চিত করে যে ব্যবহারকারী সঠিকভাবে এলোমেলোভাবে জেনারেট করা সংখ্যা অনুমান না করা পর্যন্ত গেমটি চলতে থাকবে।

পাইথন গেসিং গেমগুলিতে ফর্ম্যাটিং ত্রুটিগুলি ঠিক করা৷

স্ট্রিং ফরম্যাটিং সমস্যাটি সমাধান হয়ে গেলে পাইথনে অনুমান করা গেমটি মসৃণভাবে চলতে পারে। f-স্ট্রিং ব্যবহার করে, এর সাথে সম্পর্কিত ত্রুটি গণিত() এবং tuple সমাধান করা হয়েছে, একটি মসৃণ ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করে। এই আধুনিক বিন্যাস পদ্ধতিটি কার্যকর করা সহজ এবং সাধারণ সমস্যাগুলি এড়ায়।

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

পাইথন গেসিং গেমের জন্য রেফারেন্স এবং অতিরিক্ত সম্পদ
  1. এর ব্যবহার ব্যাখ্যা করে IPython.display এবং গণিত() ইন্টারেক্টিভ প্রোগ্রামে ফরম্যাট করা আউটপুটের জন্য ফাংশন। আরো বিস্তারিত জানার জন্য, দেখুন আইপিথন ডকুমেন্টেশন .
  2. তথ্য প্রদান করে f-স্ট্রিং বিন্যাস ক্লিনার স্ট্রিং ইন্টারপোলেশনের জন্য পাইথনে। আরও পড়ার জন্য, দেখুন পাইথন অফিসিয়াল ডকুমেন্টেশন .
  3. এই উত্সটি পাইথন ব্যবহার করে ত্রুটি এবং ব্যতিক্রমগুলি কীভাবে পরিচালনা করতে হয় সে সম্পর্কে বিস্তারিত বর্ণনা করে চেষ্টা-ব্যতীত ব্লক দেখুন বাস্তব পাইথন: পাইথন ব্যতিক্রম .
  4. পাইথনের মৌলিক বিষয়গুলো কভার করে এলোমেলো মডিউল এবং অনুমান গেম তৈরিতে এর প্রয়োগ। সম্পূর্ণ রেফারেন্স এ উপলব্ধ পাইথন র্যান্ডম মডিউল .