• পাইথনের মডিউল এবং প্যাকেজ, পাইথন প্রোগ্রামিং স্ট্রিং

    মডিউল এবং প্যাকেজ

    Standard Library Modules


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

    math — Mathematical functions

    math.ceil(x)
    ceil এর কাজ হচ্ছে একটা ফ্লোটিং পয়েন্ট এর পরের ইন্টিজার ভ্যালু দেওয়া। পরের বলতে যদি একটা ফ্লোটিং পয়েন্ট ভ্যালু হয় 6.2 এটার ceil ভ্যালু হবে 7, যদিও আমরা সাধারনত 6.2 এর কাছা কাছি ইন্টিজার হিসেব করি 6. আবার 6.9 এর ceil ভ্যালু হচ্ছে 7।
    1
    2
    import math
    print (math.ceil(6.2 ))

    math.floor(x)

    floor এর ক্ষেত্রে হয় ceil এর উলটো। ফ্লোট্রিং পয়েন্টের দশমিক মান যত বড়ই হোক, floor আমাদের তার আগের ইন্টিজার ভ্যালুটি আমাদের দিবে। আগের বলতে যদি একটা ফ্লোটিং পয়েন্ট ভ্যালু হয় 6.9 এটার floor ভ্যালু হবে 6, যদিও আমরা সাধারনত 6.9 এর কাছা কাছি ইন্টিজার হিসেব করি 7
    1
    2
    3
    import math
    print (math.floor(6.9 ))
    math.sqrt(x)
    sqrt একটা সংখ্যার বর্গমূল বের করার জন্য ব্যবহার করা হয়ঃ
    1
    2
    import math
    print (math.sqrt(9))
    sin, cos, ten এসবের মান ও আমরা সহজে বের করতে পারি। যেমন
    math.cos(x) রেডিয়ানের cos ভ্যালু দিবে আমাদের। cos (0) এর মান আমরা জানি ১, প্রোগ্রামটি রান করালে তাই আউটপুট পাবো আমরাঃ
    1
    2
    import math
    print (math.cos(0 ))
    এভাবে ম্যাথ লাইব্রেরীর অন্যান্য মেথড গুলো আমরা দেখে নিতে পারি।

    random

    random লাইব্রেরী ব্যবহার করে আমরা রেন্ডম নাম্বার তৈরি করতে পারি। যেমনঃ
    1
    2
    import random
    print ( random.random())
    এটি আমাদের ০-১ এর মধ্যে একটা রেন্ডম নাম্বার দিবে। আমরা ইচ্ছে করলে একটা রেঞ্জ দিয়ে দিতে পারি। যার মধ্যে আমরা রেন্ডম নাম্বারটি চাইঃ
    1
    2
    import random
    print ( random.randrange( 10))
    এটি আমাদের ১ থেকে ১০ এর মধ্যে যে কোন একটা রেন্ডম নাম্বার দিবে।
    আমরা চাইলে নির্দিষ্ট রেঞ্জের ভেতর রেন্ডম নাম্বার তৈরি করতে পারি, যেমনঃ
    1
    2
    import random
    print ( random.randrange(20 , 100 ))
    এটি ২০-১০০ এর মধ্যে একটা রেন্ডম নাম্বার দিবে।
    পাইথন মডিউল ও PyPi
    আমরা যখন বড় সড় কোন প্রজেক্টে কাজ করব, তখন প্রজেক্টের এক একটা ফিচার এক একটা ফাইলে আলাদা করে রাখব। আর এই আলদা করে রাখাটাই হচ্ছে মডিউল। মডিউল আকারে কোড লিখলে অন্য যে কোন প্রজেক্টে ঐ একই মডিউল ব্যবহার করতে পারি। আরেকটা সুবিধে হচ্ছে ডিস্টিবিউশন। আমরা চাইলে মডিউল তৈরি করে যে কারো সাথে আমাদের মডিউল শেয়ার করতে পারি।
    মডিউল আর কিছুইই না, আলাদা একটা ফাইল। ফাইলের নাম হচ্ছে মডিউলের নাম। যেমন odds.py নামে আমাদের একটা মডিউল আছে। যার মধ্যে getOdds নামে একটা মেথড রয়েছে। যেটাকে কল করলে আমাদের কিছু বিজোড় সংখ্যার লিস্ট দিবে। কল করার সময় আমরা বলে দিতে পারব কয়টা কত পর্যন্ত লিস্ট চাচ্ছি। তো এমন একটা মডিউলটা সহজেই আমরা তৈরি করে নিতে পারি। PyCharm ব্যবহার করে থাকলে প্রজেক্টের উপর রাইট ক্লিক করে New > File এ ক্লিক করব।
    এরপর ফাইলের একটা নাম দিব। যেমন odds.py। এরপর এতে নিচের কোড গুলো লিখবঃ
    1
    2
    3
    4
    5
    6
    7
    def getOdds(n):
        result = []
        b = 1
        while b < n:
            result.append(b)
            b +=2
        return result
    অন্য যে কোন আইডিইতেও একই ভাবে ফাইল তৈরি করা যাবে। শুধু খেলার রাখতে হবে প্রজেক্ট মানে মূল ফাইলটা যে ফোল্ডারে, রয়েছে, odds.py ও একই ফোল্ডারে যেন থাকে।
    এবার আমরা আমাদের মূল প্রোগ্রামে এই মডিউলটা ইম্পোর্ট করে ব্যবহার করতে পারব এভাবেঃ
    1
    2
    import odds
    print(odds.getOdds(10))
    পাইথনের স্ট্যান্ডার্ড প্যাকেজের মতই আমরা ইম্পোর্ট করতে পারি। ইম্পোর্ট করতে হয় ফাইলের নাম ব্যবহার করে। odds.py হচ্ছে আমাদের ফাইলের না, এখানে .py অংশটা লিখতে হয় না।
    getOdds হচ্ছে odds মডিউলের একটা মেথড। আমরা এরপর একে কল করলাম। প্যারামিটার হিসেবে পাস করেছি ১০। এটি আমাদের ১-১০ পর্যন্ত বিজোড় সংখ্যা গুলোর লিস্ট রিটার্ণ করবে। এরপর আমরা তা প্রিন্ট করেছি।
    আমরা এখানে খুব সহজ একটা মডিউল তৈরি করেছি। কিন্তু আমরা শিখে গিয়েছি কিভাবে মডিউল তৈরি করা যায়। কি ভাবে মডিউলকে ব্যবহার করতে হয়। এবার আপনি চাইলে নিজের ক্রিয়েটিভিটি প্রয়োগ করে যে কোন মডিউল তৈরি করে নিতে পারেন নিজের প্রয়োজন মত করে।
    থার্ড পার্টি মডিউল
    পাইথনের স্ট্যান্ডার্ড লাইব্রেরীর মডিউল গুলো ছাড়াও আমরা থার্ড পার্টি মডিউল ব্যবহার করতে পারি। প্রোগ্রামাররা যে কোড গুলো লিখে সবার ব্যবহার করার জন্য উন্মুক্ত করে দিয়েছে, আমরা সে সব কোড গুলোও আমাদের প্রজেক্টে ব্যবহার করতে পারি। মডিউল হচ্ছে একটা সিঙ্গেল ফাইল, যার মধ্যে অনেক গুলো মেথড থাকে। অনেক গুলো ফাইল মিলে তৈরি হয় একটা প্যাকেজ। এক একটা প্যাকেজ এক একটা কাজে ব্যববার করা যায়। এমন থার্ড পার্টি অনেক প্যাকেজের ইন্ডেক্স হচ্ছে PyPi। সব গুলো পাওয়া যাবে https://pypi.python.org/pypi এ।
    এখানে ভিজিট করলে দেখতে পাবো অনেক গুলো প্যাকেজ। আমাদের নিজেদের প্রজেক্টে এসব প্যাকেজের যে কোনটাই আমরা ব্যবহার করতে পারব। আমাদের জন্য দরকারী অনেক কোড আগে থেকেই লেখা রয়েছে। নিজেরা শুরু থেকে না লিখে আগের কোড ব্যবহার করলে অনেক সময়ই তো বেচে যাবে।
    PyPi এর প্যাকেজ গুলো ব্যবহার করার জন্য আমাদের Pip ইন্সটল করে নিতে হবে। Pip ব্যবহার করে ঐ প্যাকেজ গুলো আমরা আমাদের প্রজেক্টের জন্য প্রথমে ডাউনলোড করব এবং প্রজেক্টে ইম্পোর্ট করে ব্যবহার করতে পারব। পাইথনের স্ট্যান্ডার্ড প্যাকেজ গুলো সেভাবে ব্যবহার করা যায়, ঠিক সেভাবে। তার জন্য https://pip.pypa.io/en/latest/installing.html এখানে গিয়ে get-pip.py পাইথন ফাইলটা কম্পিউটারে সেভ করতে হবে। যেমন আমরা সেভ করলাম Desktop এ।
    কমান্ডলাইনে ডিরেক্টরি পরিবর্তন করে Desktop এ এসে নিচের কমান্ডটা রান করলে Pip আমাদের কম্পিউটারে ইনস্টল হবেঃ
    python get-pip.py
    তাহলে Pip আমাদের কম্পিউটারে ইন্সটল হবে যা আমাদের জন্য setuptools ইন্সটল করে দিবে। এবার আমরা যে কোন প্যাকেজ ইন্সটল করার জন্য প্রস্তুত।

    পাইথন প্রোগ্রামিং স্ট্রিং

    স্ট্রিং হচ্ছে কারেকটার সেট। একটা ওয়ার্ড, একটা বাক্য, একটা প্র্যারাগ্রাফ, সব গুলোই স্ট্রিং। যেমন Hello World একটা স্ট্রিং। সব প্রোগ্রামেই স্ট্রিং নিয়ে অনেক কাজ করতে হয়। গেম হোক, সফটওয়ার হোক, মোবাইল অ্যাপ হোক। তাই স্ট্রিং নিয়ে ভালো ধারণা থাকা দরকার। স্ট্রিং বোঝাতে পাইথনে ডাবল কোটেশন বা সিঙ্গেল কোটেশন ব্যবহার করা হয়।
    স্ট্রিং কনক্যাটিনেশন
    Concatenation মানে জোড়া দেওয়া বা একত্র করা। আমাদের কাছে যদি দুইটা স্ট্রিং থাকে, আমরা তাকে এক সাথ করতে চাইলে স্ট্রিং কনক্যাটিনেশন করতে পারি। দুইটা স্ট্রিং এর মাঝে যোগ চিহ্ন (+) দিয়ে একত্র করা যায়। যেমনঃ
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    s1 = "Hello "
    s2 = "World!"
    print(s1+s2)
    /
    যা প্রিন্ট করবেঃ
    Hello World!
     
    পাইথন স্ট্রিং ফরমেট</strong>
    একটা স্ট্রিং এর ভেতরে একটা ভ্যারিয়েবল প্রিন্ট করার জন্য String Formats ব্যবহার করা হয়। যেমন আমাদের a এবং b নামে দুইটি ভ্যারিয়েবল আছে। a এবং b এর মান আমরা স্ট্রিং এর ভেতরে প্রিন্ট করব। এভাবেঃ value of a = 10. value of b = 50
    তার জন্যঃ
     
    a = 10
    b = 50
    print ('value of a = {}, value of b = {}' .format(a ,b)  )
    যা আউটপুট দিবেঃ
    value of a = 10, value of b = 50
    আমরা চাইলে স্ট্রিংটা একটা ভ্যারিয়বলে রেখে তারপর ও ফরমেট করতে পারি। যেমনঃ
    1
    2
    3
    4
    a = 10
    b = 50
    s = "value of a = {}, value of b = {}"
    print (s.format(a,b))
    আউটপুটঃ
    value of a = 10, value of b = 50
    আরেকটা মজার কাজ করা যায়। format(b,a ) লিখে a এর ভ্যালু আগে এক্সেস করার জন্য আমরা এভাবে কোড লিখতে পারিঃ
    1
    2
    3
    a = 10
    b = 50
    print ('value of a = {1}, value of b = {0}' .format(b,a)  )
    আউটপুটঃ
    value of a = 10, value of b = 50
    স্ট্রিং ফরম্যাট দিয়ে যে কোন ভ্যারিয়েবলই ফরম্যাট করা যায়। যেমনঃ
    1
    2
    name  = " Guido van Rossum"
    print (' Developer of Python is  {}!' .format(name))
    আউটপুটঃ
    Developer of Python is Guido van Rossum!
    আমরা চাইলে লিস্টও স্ট্রিং ফরমেট ব্যবহার করে প্রিন্ট করতে পারি। একটা লিস্ট স্ট্রিং ফরম্যাট ব্যবহার করে প্রিন্ট করতেঃ
    1
    2
    mylist = [ 1, 2, 3, 4]
    print ("My List {}" .format(mylist))
    আউটপুটঃ
    My List [1, 2, 3, 4]
    পাইথন স্ট্রিং জোড়া [join] লাগানো এবং আলাদা [split] করা:
    স্ট্রিং এর ওয়ার্ড গুলো আলাদা আলাদা করতেঃ
    1
    2
    s = "This is a string."
    print (s.split())
    যা ওয়ার্ড গুলোর একটা লিস্ট করে দিবে, এমনঃ [‘This’, ‘is’, ‘a’, ‘string.’]
    নিচের প্রোগ্রামটি দেখিঃ
    1
    2
    3
    4
    s = "This is a string."
    words = s.split()
    for w in words:
        print (w)
    যা সব গুলো ওয়ার্ড আলাদা আলাদা করে প্রিন্ট করেবে।
    এখন আমরা চাচ্ছি ওয়ার্ড গুলোকে আবার এক সাথ করতে। তার জন্যঃ
    1
    2
    3
    4
    5
    6
    s = "This is a string."
    words = s.split()
    for w in words:
        print (w)
        
    print (' ' .join(words))
    এখানে প্রথমে সব গুলো ওয়ার্ডকে split দিয়ে আলাদা করা হয়েছে এবং রাখা হয়েছে words ভ্যারিয়েবলে। তারপর লুপ দিয়ে সব গুলো প্রিন্ট করা হয়েছে। এরপর আবার join দিয়ে এক সাথ করে তা প্রিন্ট করা হয়েছে।
    স্ট্রিং জয়েন করার জন্য মাঝখানে আমরা কি দিব তা বলে দিতে পারি। ‘ ‘ .join(words) এখানে স্পেস দেওয়া হয়েছে। আমরা যদি চাই, অন্য কোন কারেকটার ব্যবহার করতে পারি। যেমন আমরা এবার হাইপেন দিতে চাই, তার জন্যঃ
    1
    2
    3
    4
    5
    6
    s = "This is a string."
    words = s.split()
    for w in words:
        print (w)
        
    print ('-' .join(words))
    জয়েন করা অংশ প্রিন্ট করবে এভাবেঃ This-is-a-string। সুন্দর না?
    একটা স্ট্রিং লিস্টকে জোড়া দিতে পারি এভাবেঃ
    1
    2
    list = [ 'Hello' , 'This' , 'is', 'Rossum!']
    print (' ' .join(list))
    যা আউটপুট দিবেঃ
    Hello This is Rossum!
    স্ট্রিং মেথডঃ
    স্ট্রিং নিয়ে কাজ করার জন্য পাইথনে অনেক গুলো বিল্টইন মেথড রয়েছে। যেগুলোকে আমরা কেউ কেউ ফাংশন বলে। এখানেন আমরা কিছু মেথড দেখব। যেমন একটা স্ট্রিং এর সব গুলো কারেকটারকে ছোট হাতে কনভার্ট করতেঃ
    1
    2
    s = "This is a String!"
    print (s.lower())
    যা আউটপুট দিবেঃ
    this is a string!
    উপরে আমরা একটা স্ট্রিং নিয়েছি। এর দুইটা কারেকটা বড় হাতের ছিল, এখন পরে তা lower করে প্রিন্ট করাতে সব গুলোই ছোট হাতের অক্ষরে পরিনত হয়েছে।
    upper করলে সব গুলো আবার বড় হাতের অক্ষরে পরিনত হবেঃ
    1
    2
    s = "This is a String!"
    print (s.upper())
    যা আউটপুট দিবেঃ
    THIS IS A STRING!
    যেটা বড় হাতের রয়েছে তা ছোট হাতের, যেটা ছোট হাতের তাকে বড় হাতের করার জন্যঃ
    1
    2
    s = "This is a String!"
    print (s.swapcase())
    যা আউটপুট দিবেঃ
    tHIS IS A sTRING!
    স্ট্রিং রিপ্লেসঃ
    আমরা চাইলে স্ট্রিং এর যে কোন শব্দ অন্য কিছু দিয়ে রিপ্লেস করে দিতে পারি। যেমনঃ
    1
    2
    3
    s = "This is a String!"
    new = s .replace("This" , "That")
    print (new)
    যা আউটপুট দিবেঃ
    That is a String!
    count()
    কোন স্ট্রিং এ একটা সাবস্ট্রিং বা একটা লেটার কতবার আছে, তা বের করতে count() মেথড ব্যবহার করা হয়। যেমনঃ
    1
    2
    str = "This is a string!"
    print (str.count( 's'))
    উপরের প্রোগ্রামটি “This is a string!” এ কয়টি s আছে, তা প্রিন্ট করবে। আর তা হচ্ছে ৩।
    এখন আমরা চাইলে একটা সাব স্ট্রিং যেমন ‘is’ বা ‘This’ এভাবে ও যে কোন কিছু ব্যবহার করতে পারব।
    find()
    কোন স্ট্রিং এ কোন একটা সাবস্ট্রিং খুঁজতে find() মেথড ব্যবহার করা হয়। যেমনঃ
    1
    2
    3
    s = "This is a String!"
    if s.find('is' ):
        print ( 'we found "is" in the string')
    len()
    স্ট্রিং এর লেন্থ বা কয়টা ক্যারেক্টার রয়েছে, তা বের করার জন্য len() মেথড ব্যবহার করা হয়। খেয়াল রাখতে হবে স্পেস ও একটা কারেক্টার।
    1
    print (len(str))
    যা আউটপুট দিবে 17।
    এগুলো ছাড়াও আরো অনেক গুলো মেথড রয়েছে। এছাড়া আমরা চাইলে নিজেদের মত করে মেথড লিখে নিতে পারি। যা আমরা সামনের অধ্যায় গুলোতে শিখব।

  • 0 comments:

    Post a Comment

    New Research

    Attention Mechanism Based Multi Feature Fusion Forest for Hyperspectral Image Classification.

    CBS-GAN: A Band Selection Based Generative Adversarial Net for Hyperspectral Sample Generation.

    Multi-feature Fusion based Deep Forest for Hyperspectral Image Classification.

    ADDRESS

    388 Lumo Rd, Hongshan, Wuhan, Hubei, China

    EMAIL

    contact-m.zamanb@yahoo.com
    mostofa.zaman@cug.edu.cn

    TELEPHONE

    #
    #

    MOBILE

    +8615527370302,
    +8807171546477