• পাইথন প্রোগ্রামিং কি? [1]



    পাইথন প্রোগ্রামিং কি? - প্রাথমিক ধারনা

    পাইথন একটি শক্তিশালী হাই-লেভেল এবং অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা। গুইডো ভ্যান রাসম এই প্রোগ্রামিং ভাষার স্রষ্টা।
    এই প্রোগ্রামিং ভাষার গঠন(Syntax) শৈলী এবং ব্যবহার খুবই সহজ। ফলস্বরুপ, যদি কেউ জীবনে প্রথমবার প্রোগ্রামিং ভাষা শিখতে চাই তাহলে পাইথনই হবে তার জন্য সবচেয়ে পছন্দের ল্যাঙ্গুয়েজ।
    কিভাবে পাইথন প্রোগ্রামিং শেখা শুরু করবেন, কেনই বা পাইথন শিখবেন এবং কোথায় থেকে শিখবেন পরবর্তী অধ্যায় সমূহে তারই কিছু তুলনামূলক দিক তুলে ধরার চেষ্টা করেছি।
    শুরু করার পূর্বে চলুন পাইথন ভাষার সঙ্গে পরিচিত হয়ে নিই।
    পাইথন সাধরণ উদ্দেশে(general-purpose) ব্যবহৃত একটি শক্তিশালী প্রোগ্রামিং ভাষা। সুতরাং ওয়েব ডেভেলপমেন্ট(যেমন-Django এবং Bottle) থেকে শুরু করে বৈজ্ঞানিক ও গাণিতিক হিসাব-নিকাশ(যেমন-Orange, SymPy, NumPy) এবং এমনকি ডেস্কটপ গ্রাফিক্যাল ইউজার ইন্টারফেসেও(যেমন-Pygame, Panda3D) এটার ব্যপক ব্যবহার রয়েছে।
    গঠন(Syntax) খুবই স্বচ্ছ এবং কোড এর দৈর্ঘ্যও ছোট হয়। ফলে পাইথন-এ কাজ করা আপনার কাছে কিছুটা মজাদার কৌতুকের মত মনে হবে। কেননা এটি আপনাকে কোডের গঠনের দিকে নজর না দিয়ে সমস্যা নিয়ে চিন্তা করতে সহায়তা করবে।

    গুইডো ভ্যান রাসম কর্তৃক সৃষ্ট পাইথন তুলনামূলক একটি পুরাতন ভাষা। ১৯৮০ দশক এর পরে তিনি সর্বপ্রথম পাইথন ডিজাইন শুরু করেছিলেন এবং ১৯৯১ সালের ফেব্রুয়ারিতে এটি প্রথম প্রকাশিত হয়।

    পাইথন সৃষ্টির নেপথ্যে

    ১৯৮০ দশকের পরে গুইডো ভ্যান রাসম আমিবা ডিস্ট্রিবিউটেড অপারেটিং সিস্টেম গ্রুপের সাথে কাজ করছিলেন। তিনি ABC(ABC এর সিনট্যাক্স খুবই সহজ এবং বোধগম্য)-এর মত ইটারপ্রেটেড(Interpreted) ভাষা ব্যবহার করতে চাইলেন যা আমিবা সিস্টেম কলকে এক্সেস করতে পারবে। তাই তিনি নতুন একটি ভাষা তৈরির দিদ্ধান্ত নিলেন যেটা হবে সমপ্রসারনযোগ্য । এটাকে কেন্দ্র করেই নতুন একটি ভাষার সূত্রপাত হলো এবং পরবর্তীতে এটার নাম রাখা হলো পাইথন

    পাইথন নাম কেন হলো?

    ভয়ংকর কোন সাপের নামানুসারে পাইথন এর নামকরণ হয়নি। সত্তরের দশকের পরে রাসম একটি কমেডি সিরিজের ভক্ত ছিলেন। "মন্টি পাইথন' এর উড়ন্ত সার্কাস এর সাথে সমঞ্জস্য রেখেই এটার নাম রাখা হয়েছে পাইথন।

    পাইথন এর বিভিন্ন ভার্সন এবং প্রকাশকাল

    ভার্সনপ্রকাশকাল
    পাইথন 1.0 (প্রথম স্টান্ডার্ড প্রকাশনী)১৯৯৪ এর জানুয়ারি
    পাইথন 1.6 ( শেষ মাইনর ভার্সন)২০০০ সালের ৫-এ সেপ্টেম্বর
    পাইথন 2.0 (লিস্ট-list এর সূচনা)২০০০ সালের ১৬ই অক্টোবর
    পাইথন 2.7 (শেষ মাইনর ভার্সন)২০১০ সালের ৩-এ জুলাই
    পাইথন 3.0 (ডেপ্রিকেটেড কন্সট্রাক্ট এবং মডিউল রিমুভে জোর প্রদান )২০০৮ সালের ৩-এ সেপ্টেম্বর
    পাইথন 3.5 (নিরাপত্তা সংশোধন)২০১৫ সালের ১৩-ই সেপ্টেম্বর
    পাইথন 3.6 (শেষ আপডেট ভার্সন )২০১৬ সালের ২৩-এ ডিসেম্বর

    পাইথন ভাষার বৈশিষ্ট্যসমূহ

    পাইথন প্রোগ্রামিং ল্যাংগুয়েজ এর অসংখ্য বৈশিষ্ট্য রয়েছে। নিম্নে পাইথন ভাষার কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য তুলে ধরা হলোঃ
    • এটি একটি সাধারণ ভাষা যা শেখা খুবই সহজ।
      পাইথন-এর গঠন(syntax) শৈলী খুবই সহজ ও পরিচ্ছন্ন। অন্যান্য প্রোগ্রামিং ভাষা যেমন- C++, Java এবং C# ইত্যাদির তুলনায় পাইথন প্রোগ্রাম পড়া এবং লেখা উভয়ই সহজ। পাইথন প্রোগ্রামিংকে অনেক মজাদার করে তুলেছে। কেননা এটা আপনাকে কোডের গঠনের দিকে নজর না দিয়ে সমস্যা সমাধানে নজর দিতে সহায়তা করবে।
      প্রোগ্রামিং জগতে আপনি যদি নতুন হোন তাহলে পাইথন দিয়ে যাত্রা শুরু করাই হবে আপনার পছন্দের মধ্যে অন্যতম।

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

    •  বহনযোগ্যতা(Portability)
      আপনি পাইথন প্রোগ্রামকে এক প্লাটফর্ম থেকে অন্য প্লাটফর্ম-এ নিতে পারবেন এবং কোনো ধরণের পরিবর্তন ছাড়াই রান করাতে পারবেন।
      এটি অধিকাংশ প্লাটফর্ম(যেমন- উইন্ডোজ, লিনাক্স এবং ম্যাক ওএস) এ নিজস্ব এপ্লিকেশনের মতই রান করে।

    •  সম্প্রসারণ এবং সংস্থাপনযোগ্য(Extensible and Embeddable)
      ধরুন, উচ্চ ক্ষমতাসম্পন্ন আপনার একটি এপ্লিকেশন এর প্রয়োজন । আপনি চাইলে C/C++ অথবা অন্য কোনো প্রোগ্রামিং ভাষার কোডকে পাইথন কোডের সাথে সংযুক্ত করতে পারেন।
      এটি আপনার এপ্লিকেশনকে উচ্চ ক্ষমতাসম্পন্ন করে তুলে এবং স্ক্রিপ্টিং সক্ষমতা প্রদান করে। অথচ অন্য প্রোগ্রামিং ভাষা এই সুবিধা প্রদান নাও করতে পারে।

    • হাই-লেভেল এবং ইন্টারপ্রেটেড ভাষা
      এটি C/C++ এর মত না। ভীতিকর বিষয় যেমন মেমোরি ম্যানেজমেন্ট(memory management), গার্বেজ কালেকশন(garbage collection) এবং পয়েন্টার(Pointer) ইত্যাদি বিষয় নিয়ে আপনাকে কোনো দুঃচিন্তা করতে হবে না।
      অনুরূপভাবে, আপনি যখন পাইথন কোড রান করাবেন তখন এটি স্বয়ংক্রিয়ভাবেই আপনার কোডকে কম্পিউটারের ভাষায় রূপান্তর করবে। এক্ষেত্রে নিম্ন-লেভেল অপারেশন নিয়েও আপনাকে উদ্বিগ্ন হতে হবে না।

    •  সাধারণ সমস্যা সমাধানের জন্য অনেক বড় লাইব্রেরী
      পাইথন-এর কিছু নিজস্ব স্টান্ডার্ড লাইব্রেরী আছে যার মাধ্যমে প্রোগ্রামিং জীবন সহজতর হয়ে উঠেছে। কারণ লাইব্রেরী ব্যবহার করলে এপ্লিকেশন এর সমস্ত কোড আপনারকে আর নতুন করে লিখতে হবে না। উদাহরণস্বরূপ, আপনার ওয়েব সার্ভারে MySQL ডাটাবেজে সংযোগ নিতে হবে? এক্ষেত্রে আপনি import MySQLdb এর মাধ্যমে আপনার কোডে MySQLdb লাইব্রেরী ব্যবহার করতে পারেন।
      পাইথন এর স্টান্ডার্ড লাইব্রেরিগুলো প্রতিনিয়তই খুব ভালভাবে পরীক্ষা করা হয় এবং হাজার হাজার মানুষ এগুলো ব্যবহার করে। সুতরাং আপনি নিশ্চিত থাকতে পারেন যে এতে কোনো এরর/বাগ নাই এবং এগুলো আপনার প্রোগ্রামকে থামিয়ে দিবে না।

    •  অবজেক্ট ওরিয়েন্টেড(Object-oriented)
      পাইথনে সবকিছুই অবজেক্ট। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ব্যবহার করে নিজস্ব জ্ঞান দ্বারাই জটিল জটিল সমস্যার সমাধান করতে পারবেন।

    পাইথন ভাষার ব্যবহার


    কম্পিউটার এর সকল ক্ষেত্রেই পাইথন এর পদচারণা সুদীপ্ত এবং এটার বিস্তৃতি প্রতিনিয়ত বেড়েই চলছে। নিম্নে পাইথন ভাষা প্রয়োগ এর কিছু ক্ষেত্র তুলে ধরা হলোঃ
    • ওয়েব এপ্লিকেশন(Web Application)
      পাইথন দ্বারা গঠিত বিভিন্ন ফ্রেমওয়ার্ক এবং CMS(কন্টেন্ট ম্যানেজমেন্ট সিস্টেম ) ব্যবহার করে আপনি সম্প্রসারণযোগ্য(scalable) ওয়েব এপ্লিকেশন তৈরি করতে পারবেন। ওয়েব এপস্‌ তৈরির জন্য পাইথনের রয়েছে অসংখ্য জনপ্রিয় প্লাটফর্ম। যেমন- Django, Flask, Pyramid, Plone, Django CMS ইত্যাদি।
      বিভিন্ন সাইট যেমন-Mozilla, Reddit, Instagram, PBS ইত্যাদি ওয়েব এপ্লিকেশন পাইথন দিয়ে লেখা।
    • বৈজ্ঞানিক এবং গাণিতিক হিসাব-নিকাশ(Scientific and Numeric Computing)
      বৈজ্ঞানিক এবং গাণিতিক হিসাবনিকাশের জন্য পাইথনে অনেক লাইব্রেরী আছে। কিছু লাইব্রেরী যেমন-SciPy এবং NumPy ব্যবহার করে সাধারণ হিসাবনিকাশ করা হয়। আরও কিছু লাইব্রেরী যেমন- পৃথিবী বিজ্ঞানের জন্য EarthPy, জ্যোতির্বিজ্ঞান এর জন্য AstroPy ইত্যাদি।
      উপরোক্ত ক্ষেত্র ছাড়াও মেসিং লার্নিং, ডাটা মাইনিং এবং ডিপ লার্নিং- এও প্রচুর পরিমাণে পাইথন ব্যবহৃত হয়।

    •  সফটওয়্যার প্রটোটাইপ তৈরি
      পাইথন কম্পাইল্ড(compiled) প্রোগ্রামিং ভাষার(যেমন-C++ এবং Java) তুলনায় পাইথন একটু ধীর গতির। যদি এমনটা হয় যে আপনার রিসোর্স সিমীত কিন্তু ইফিসিয়েন্সি(efficiency) নিশ্চিত করতে হবে তাহলে এটা আপনার জন্য না ব্যবহার করাই ভাল হবে।
      যাইহোক, প্রটোটাইপ তৈরির জন্য পাইথন এর জুড়ি নাই। উদাহরণস্বরূপঃ গেম তৈরির জন্য আপনি Pygame লাইব্রেরী ব্যবহার করে প্রথমেই গেম প্রটোটাইপ তৈরি করে নিতে পারেন। আপনার কাছে যদি প্রটোটাইপ প্রোগ্রামিং ভাল লাগে তাহলে প্রকৃত গেম তৈরির জন্য আপনি একটি ভাষা (যেমন- C++) ব্যবহার করতে পারবেন।

    • প্রোগ্রামিং শেখানোর জন্য উপযুক্ত ভাষা
      শিশু-কিশোর এবং নতুনদেরকে প্রোগ্রামিং শেখানোর জন্য অনেক কোম্পানি পাইথন ব্যবহার করে।
      পাইথন অনেক বৈশিষ্ট্য এবং সক্ষমতাসম্পন্ন একটি প্রোগ্রামিং ভাষা। সহজ সিনট্যাক্স এবং ব্যবহার সহজের জন্য সহজ প্রোগ্রামিং ভাষাগুলোর মধ্যে পাইথন এখন পর্যন্ত অন্যতম।

    পাইথন কেন শিখবেন?


    পাইথন কেন শিখবেন কিংবা পাইথনকে কেন প্রথম ভাষা হিসাবে পছন্দ করবেন? এই প্রশ্নের উত্তর হিসাবে আমরা ৪টি কারণ নিম্নে তুলে ধরলামঃ
    • সহজ ও মার্জিত গঠন(সিনট্যাক্স)
      পাইথন দিয়ে প্রোগ্রামিং মানেই মজা। পাইথন কোড যেমন লিখতে মজা তেমনি এটা পড়াও সহজ। এটার গঠন(syntax) কেন প্রাকৃতিক মনে হয়? চলুন নিচের উদাহরণটি দেখিঃ
      a = input()
      b = input()
      sum = a + b
      print(sum)
      
      আপনি যদি কখনো প্রোগ্রামিং নাও করে থাকেন তবুও উপরের উদাহরণ থেকে খুব সহজেই অনুমান করতে পারবেন যে, এই প্রোগ্রামটি দুটি সংখ্যা যোগ করে এবং যোগফল প্রিন্ট করে।

    • মাত্রাতিরিক্ত কঠোর নয়
      পাইথনে ভ্যারিয়েবলের টাইপ নির্ধারন(define) করতে হয় না এবং স্টেটমেন্ট(statement)-এর শেষে সেমিকোলনও(;) বাধ্যতামূলক নয়।
      পাইথন বরং আপনাকে প্রোগ্রাম অনুশীলনের দিকে জোর দেয়। ফলে নতুনদের জন্য প্রোগ্রামিং শেখা সহজতর হয়ে উঠে।

    •  অর্থবহ(Expressiveness) ভাষা
      পাইথন আপনাকে অল্প কোড লিখেই বিভিন্ন কার্যকারিতা সম্পন্ন প্রোগ্রাম তৈরি করতে সহায়তা করবে। এখানে গ্রাফিক্যাল ইউজার ইন্টারফেস এবং স্মার্ট কম্পিউটার কম্পোনেটসহ ৫০০ লাইনের নিচে টিক-টাক-টো গেম -এর লিংক দেওয়া আছে। এটা শুধুমাত্র উদাহরণ এর জন্য দেওয়া হয়েছে। পাইথন দিয়ে আপনি কি করতে পারবেন তার আসল মজাটা পাবেন যদি আপনি এর মৌলিক বিষয়গুলো একবার জেনে নিতে পারেন।

    • বিশাল জনগোষ্ঠী এবং সমর্থন
      আপনাকে সহায়তা করার জন্য পাইথনের রয়েছে বিশাল জনগোষ্ঠী। এছাড়া অনলাইনে অনেক সক্রিয় ফোরামও আছে। সমস্যা সমাধানে যেগুলো খুবই সহায়ক। নিম্নে কিছু অনলাইন ফোরাম এর তালিকা দেওয়া হলোঃ

    সঠিক পদ্ধতিতে পাইথন শিখুন

    নিজে নিজে পাইথনে কোড করুন

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


    ডাটা সাইন্স এর জন্য ডাটাক্যাম্প থেকে ইন্টারেক্টিভ টিউটোরিয়াল দেখুন

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

    পাইথন ইনস্টলেশন

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

    Mac OS X এ পাইথন ইনস্টল এবং রান করানো

    • পাইথনের অফিসিয়াল সাইট ডাউনলোড পাইথন পেজে গিয়ে Download Python 3.6.3-এ ক্লিক করে পাইথন ডাউনলোড করুন(এই পেজে আপনি এটার অনেক ভার্সন দেখতে পেতে পারেন)।
    • ডাউনলোড সম্পন্ন হলে প্যাকেজ ওপেন করে ইন্সট্রাকশন অনুসরণ করুন। পাইথন সফলভাবে ইনস্টল হলে "The installation was successful" এই ম্যাসেজটি পাবেন।
    • শুরু করার পূর্বে আমরা আপনাকে ভাল একটি টেক্সট এডিটর ডাউনলোড করার জন্য সুপারিশ করছি। আপনি যদি একেবারে নতুন হোন তাহলে আমরা আপনাকে পরামর্শ দেবো সাবলাইম টেক্সট এডিটর ডাউনলোড করার জন্য। এটি সম্পূর্ণ ফ্রি।
    •  সাবলাইম টেক্সট এর ইনস্টলেশন প্রক্রিয়া একেবারেই সহজ। ডাউনলোড করা সাবলাইম টেক্সট এর ডিস্ক ইমেজ ফাইলটি রান করে নির্দেশনা অনুসরণ করুন।
    • সাবলাইম টেক্সট ওপেন করে File > New File (শর্টকাটঃ Cmd+N) এ যান। তারপরে .py এক্সটেনশন দিয়ে ফাইলটি(যেমন-hello.py অথবা myFirstProgram.py নামে) Cmd+S অথবা File > Save এর মাধ্যমে সংরক্ষণ(save) করুন।
    • সংরক্ষণ করা ফাইলে কোড লিখে পুনরায় সংরক্ষণ(save) করুন। পাইথন প্রোগ্রামিং শুরু করার জন্য আপনি নিচের কোড কপি(copy) করতে পারেনঃ
      print "Hello, World!"
      
      
      এই সাধারণ প্রোগ্রামটি "Hello, World!" আউটপুট দিবে।
    • Tool > Build (শর্টকাটঃ Cmd + B) এ যান। সাবলাইম টেক্সট এর নিচে আপনি আউটপুট দেখতে পাবেন। স্বাগতম, আপনি আপনার প্রথম পাইথন প্রোগ্রাম সফলভাবে রান করিয়েছেন।

    লিনাক্স(উবন্তু)-এ পাইথন ইনস্টল এবং রান করানো

    • নিম্নোক্ত ডিপেন্ডেন্সিগুলো(dependencies) ইনস্টল করুনঃ
      $ sudo apt-get install build-essential checkinstall
      $ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
      
    • পাইথনের অফিসিয়াল সাইট ডাউনলোড পাইথন পেজে গিয়ে Download Python 3.6.3 -এ ক্লিক করে পাইথন ডাউনলোড করুন। এই পেজে আপনি এটার অনেকগুলো ভার্সন দেখতে পেতে পারেন।
    • terminal ওপেন করে পাইথন ফাইলটি যে ডিরেক্টরিতে ডাউনলোড করা আছে সেই ডিরেক্টরিতে যান এবং নিচের কমান্ডটি রান করানঃ
      $ tar -xvf python-3.6.3.tgz
      
      এটি জিপ(zip) ফাইলটিকে নিষ্কাশন(extract) করবে।
      বিঃদ্রঃ আপনি যদি ডিফারেন্ট ভার্সন ডাউনলোড করেন তাহলে ফাইল নামও ভিন্ন হবে।
    • নিষ্কাশিত ডিরেক্টরিতে যান।
      $ cd python-3.6.3
      
    • আপনার নিজের অপারেটিং সিস্টেমে পাইথন সোর্স কোড কম্পাইল করার জন্য নিচের কমান্ডগুলো দেন।
      $ ./configure
      $ make
      $ make install
      
    • আপনি যদি প্রোগ্রামিং-এ নতুন হোন তাহলে আমরা আপনাকে সাবলাইম টেক্সট ইনস্টল করার জন্য সুপারিশ করছি। উবন্তু(ভার্সন ১৪.০৪)-তে সাবলাইম টেক্সট ইনস্টল করার জন্য নিচের কমান্ডগুলো দেন।
      sudo add-apt-repository -y ppa:webupd8team/sublime-text-2
      sudo apt-get update
      sudo apt-get install sublime-text
      
    • সাবলাইম টেক্সট ওপেন করুন। নতুন ফাইল তৈরির জন্য File > New File (শর্টকাটঃ Ctrl+N)-এ যান।
    • .py এক্সটেনশন দিয়ে ফাইলটি যেমন-hello.py অথবা myFirstProgram.py নামে সংরক্ষণ(save) করুন।
    • কোড লিখে পুনরায় সংরক্ষণ(save) করুন। শুরু করার জন্য আপনি নিচের কোড কপি(copy) করতে পারেনঃ
      print "Hello, World!"
      
      এই সাধারণ প্রোগ্রামটি "Hello, World!" আউটপুট দিবে।
    • Tool > Build (শর্টকাটঃ Cmd + B) এ যান। সাবলাইম টেক্সট এর নিচে আপনি আউটপুট দেখতে পাবেন। স্বাগতম, আপনি আপনার প্রথম পাইথন প্রোগ্রাম সফলভাবে রান করিয়েছেন।

    উইন্ডোজ-এ পাইথন ইনস্টল এবং রান করানো

    • পাইথনের অফিসিয়াল সাইট ডাউনলোড পাইথন পেজে গিয়ে Download Python 3.6.3 -এ ক্লিক করে পাইথন ডাউনলোড করুন। এখানে আপনি এটার অনেক ভার্সন দেখতে পেতে পারেন।
    • ডাউনলোড সম্পন্ন হলে ফাইলের উপরে ডাবল-ক্লিক করে পাইথন ইনস্টল এর নির্দেশনাসমূহ অনুসরণ করুন।
      পাইথন ইনস্টলেশন সম্পন্ন হলে IDLE নামের একটি প্রোগ্রামও এর সঙ্গে ইনস্টল হবে। পাইথন নিয়ে কাজ করার জন্য এটি আপনাকেগ্রাফিক্যাল ইউজার ইন্টারফেস(GUI) সরবরাহ করবে।
    • IDLE ওপেন করুন এবং নিচের কোড কপি করে Enter প্রেস করুন।
      print "Hello, World!"
      
    • IDLE-তে ফাইল তৈরি করতে File > New Window (শর্টকাট: Ctrl+N) এ যান।
    • পাইথন কোড লিখুন ( দুটি সংখ্যার যোগফল প্রদর্শনীর জন্য নিচের কোড কপি করতে পারেন) এবং .py এক্সটেনশন দিয়ে ফাইলটি যেমন-hello.py অথবা myFirstProgram.py নামে সংরক্ষণ(শর্টকাটঃ Ctrl+S) করুন।
      # দুটি সংখ্যার যোগ করুন
      a = 5
      b = 6
      sum = a + b
      print(sum)
       
      
    • Run > Run module (শর্টকাটঃ F5)-এ যান। ফলে আপনি পাইথন কোডের আউটপুট দেখতে পাবেন। স্বাগতম, আপনি আপনার প্রথম পাইথন প্রোগ্রাম সফলভাবে রান করিয়েছেন।

    প্রথম পাইথন প্রোগ্রাম

    আপনার প্রথম পাইথন প্রোগ্রাম

    নবাগত প্রোগ্রামারদের কাছে নতুন কোনো প্রোগ্রামিং ভাষা পরিচয় করিয়ে দেওয়ার জন্য প্রায়ই "Hello, World!" নামের একটি প্রোগ্রাম ব্যবহার করা হয়। এটি একটি সাধারণ প্রোগ্রাম এবং যার আউটপুট "Hello, World!"
    যাইহোক, পাইথন প্রোগ্রামিং শেখা অনেক অনেক সহজ এবং "Hello, World!" প্রোগ্রাম লেখার জন্য শুধুমাত্র print("Hello, World!") কোডটুকু লিখতে হয়। তাই আমরা ভিন্ন একটি প্রোগ্রাম লিখতে যাচ্ছি।
    # দুটি সংখ্যার যোগ
    num1 = 5
    num2 = 6
    sum = num1+num2
    print(sum)
    

    এই প্রোগ্রামটি কিভাবে কাজ করে?

    •  সারি ১: # দুটি সংখ্যার যোগ
      এটি একটি মন্তব্য(comment)। আপনি কী উদ্দেশে কোড লিখবেন তা বুঝানোর জন্য এটি ব্যবহার করতে হবে। এটা আপনাকে এবং আপনার অনুসারী প্রোগ্রামারদেরকে আপনার লেখা কোড এর অভিপ্রায়/উদ্দেশ্য বুঝতে সহায়তা করবে। কম্পাইলার এবং ইন্টারপ্রেটার মন্তব্যকে(comment) সম্পূর্ণভাবে অবজ্ঞা করে।
      পাইথন-এ কোনো সারি(line) # দিয়ে শুরু হলে তা একটি মন্তব্য বলে বিবেচিত হয়।
    •  সারি ২: num1 = 5
      এখানে num1 একটি চলক(variable)। আপনি যেকোনো মান(value) চলকের মধ্যে জমা(store) রাখতে পারেন। এখানে পূর্ণসংখ্যা(integer) 5 কে num1 চলক এর মধ্যে জমা রাখা হয়েছে।
    •  সারি ৩: num1 = 5
      একইভাবে পূর্নসংখ্যা 5 কে num2 চলকের মধ্যে রাখা হয়েছে।
    •  সারি ৪: sum = num1 + num2
      + অপারেটর(operator) ব্যবহার করে num1 এবং num2 ভ্যারিয়েবলকে যোগ করা হয়েছে। ফলাফল অন্য একটি ভ্যারিয়েবল sum-এর মধ্যে রাখা হয়েছে।
    •  সারি ৫: print(sum)
      স্ক্রিন এ আউটপুট প্রিন্ট করার জন্য print() ফাংশন ব্যবহার করা হয়েছে। এক্ষেত্রে sum চলকের মান(11) স্ক্রিনে প্রিন্ট হয়েছে।

    কিছু গুরুত্বপূর্ণ বিষয় যা জানতে হবে!!

    পাইথন এ স্টেটমেন্ট(statement) লিখতে হলে newline (enter) ব্যবহার করতে হয়। এটি অন্যান্য প্রোগ্রামিং ভাষা যেমন-C/C++, JavaScript, PHP ইত্যাদির মত নয়। স্টেটমেন্ট এর শেষে সেমিকোলন এর ব্যবহার ঐচ্ছিক অর্থাৎ বাধ্যতামূলক নয়। বস্তুত আমরা আপনাকে পাইথন স্টেটমেন্টের শেষে সেমিকোলন না দেওয়ার জন্য সুপারিশ করছি।
    পাইথনে ব্লক(block) নির্দেশের জন্য কারলি ব্রাকেট(curly braces { }) এর পরিবর্তে ইন্ডেন্টেশন(indentation) ব্যবহার করা হয়।
    im_a_parent:
        im_a_child:
            im_a_grand_child
        im_another_child:
            im_another_grand_child
    

    পাইথন কীওয়ার্ড

    এই অধ্যায়ে আপনি পাইথন কীওয়ার্ড(keywords) সম্মন্ধে জানবেন। কীওয়ার্ড হলো পাইথনের সংরক্ষিত শব্দ(word) যা সিনট্যাক্স এর অংশ।
    আপনি ভ্যারিয়েবল এবং ফাংশন এর নাম দেওয়ার জন্য কীওয়ার্ড অথবা আইডেন্টিফায়ার ব্যবহার করতে পারবেন না। এগুলো পাইথন ভাষার সিনট্যাক্স এবং গঠন নির্ধারণের জন্য ব্যবহৃত হয়।
    পাইথন এর কীওয়ার্ডসমূহ কেস-সেনসিটিভ(case-sensitive)।

    পাইথন ৩.৬ এ ৩৩ টি কীওয়ার্ড আছে। এগুলো ভার্সন পরিবর্তনের সময় খুব সামান্যই পরিবর্তন হয়।
    True, False এবং None কীওয়ার্ড ছাড়া অন্য সকল কিওয়ার্ডসমূহ ছোট হাতের অক্ষর(lowercase) লিখতে হয় এবং লিখার সময় হুবুহু লিখতে হবে। নিম্নে কীওয়ার্ডসমূহের তালিকা দেওয়া হলো।
    পাইথন ভাষার কীওয়ার্ডসমূহ
    Falseclassfinallyisreturn
    Nonecontinueforlambdatry
    Truedeffromnonlocalwhile
    anddelglobalnotwith
    aselififoryield
    assertelseimportpass
    breakexceptinraise

    পাইথন আইডেনটিফায়ার

    এই অধ্যায়ে আপনি পাইথন আইডেন্টিফায়ার(Identifier) সম্মন্ধে জানবেন।
    বিভিন্ন সত্ত্বা(entity) যেমন- চলক(variable), ক্লাস(class), ফাংশন(function) ইত্যাদির নাম দেওয়ার জন্য আইডেন্টিফায়ার ব্যবহৃত হয়। এটি সত্ত্বাসমূহ(entities)-কে পৃথক করতে সহায়তা করে।

    আইডেন্টিফায়ার লেখার নিয়মঃ

    • ছোট হাতের অক্ষর(a to z), বড় হাতের অক্ষর(A to Z), ডিজিট(0 to 9) এবং আন্ডারস্কোর(_) এর সমন্বয়ে আইডেন্টিফায়ার গঠিত হতে পারে। যেমন- mySatt, var_1 এবং hello_my_friend এইসব বৈধ আইডেন্টিফায়ার।
    • আইডেন্টিফায়ার ডিজিট দিয়ে শুরু হতে পারবে না। যেমন- 4_satt_you বৈধ নয়। কিন্তু satt_4_you খুব জোরে বৈধ।
    • আইডেন্টিফায়ার যেকোনো দৈর্ঘ্যের হতে পারে।
    • কিওয়ার্ডকে আইডেন্টিফায়ার হিসাবে ব্যবহার করা যাবে না।
      >>> class = 5
        File "", line 1
          class = 5
                 ^
      SyntaxError: invalid syntax
      
    • আইডেন্টিফায়ার এর জন্য আমরা বিশেষ প্রতীক যেমন- !, @, #, $, % ইত্যাদি ব্যবহার করতে পারবো না।
      >>> b% = 5
        File "", line 1
          b% = 5
           ^
      SyntaxError: invalid syntax
      

    যে বিষয়ে সতর্ক থাকতে হবে

    • পাইথন কেস-সেনসিটিভ(case-sensitive) ভাষা। অর্থাৎ Variable এবং variable একই রকম না। আইডেন্টিফায়ার-এর জন্য সর্বদা অর্থপূর্ণ নাম ব্যবহার করুন।
    • a= 25 পাইথনের জন্য বৈধ(valid) আইডেন্টিফায়ার হলেও age= 25 লিখলে খুব সহজেই বুঝা যায় যে এটি বয়স বুঝানোর জন্য ব্যবহার করা হয়েছে। এমনকি আপনি যদি ধীর্ঘ দিন পরেও কোড দেখেন তবুও সহজেই বুঝতে পারবেন কেন এই কোড লিখেছিলেন।
    • মাল্টিপলওয়ার্ড(Multiple word) আন্ডারস্কোর এর মাধ্যমে আলাদা করা যেতে পারে। যেমন-this_is_a_long_variable
    • আমরা চাইলে ক্যামেল-কেস(camelCase ) স্টাইলও ব্যবহার করতে পারি। এক্ষেত্রে প্রথম শব্দ ছাড়া বাকী সকল শব্দের প্রথম অক্ষর বড় হাতের অক্ষরে লিখতে হবে। যেমন-camelCaseVariable

    পাইথন স্টেটমেন্ট, ইন্ডেন্টেশন এবং কমেন্ট


    এই অধ্যায়ে আপনি পাইথন স্টেটমেন্ট এবং ইন্ডেন্টেশন সম্মন্ধে জানবেন। এছাড়া প্রোগ্রামিং এ কমেন্ট এর ব্যবহারও শিখবেন।

    পাইথন স্টেটমেন্ট

    পাইথন ইন্টারপ্রেটার(interpreter) যে ইন্সট্রাকশনসমূহ(Instruction) সম্পাদন করে তাকেই স্টেটমেন্ট বলে। উদাহরণস্বরূপ, name = SATT একটি এসাইনমেন্ট স্টেটমেন্ট। এটা ছাড়াও অন্যান্য স্টেটমেন্ট যেমন- ifforwhilepass ইত্যাদি স্টেটমেন্ট পরবর্তী অধ্যায়সমূহে আলোচনা করা হয়েছে।

    মাল্টিলাইন(Multi-line) স্টেটমেন্ট

    পাইথনে নিউলাইন ক্যারেক্টার((newline character) দ্বারা স্টেটমেন্ট শেষ হয়। কিন্তু আপনি চাইলে লাইন কন্টিনিউয়েশন ক্যারেক্টার দ্বারা মাল্টিপল লাইনের স্টেটমেন্ট তৈরি করতে পারবেন।
    উদাহরণঃ
    sum_of_1_to_9 = 1 + 2 + 3 + \
                    4 + 5 + 6 + \
                    7 + 8 + 9
    
    এটি প্রকাশ্য লাইন কন্টিনিউয়েশন। পাইথনে প্যারেন্থেসিস( ), ব্রাকেট[ ] এবং ব্রাসেস{ } ব্যবহার করলে স্বয়ংক্রিয়ভাবেই লাইন চলমান থাকে। এক্ষেত্রে প্রকাশ্য লাইন কন্টিনিউয়েশন ক্যারেক্টার ব্যবহার করতে হয় না।
    উদাহরণস্বরূপঃ উপরের মাল্টিলাইন স্টেটমেন্টকে আপনি নিচের মত করেও লিখতে পারেন।
    sum_of_1_to_9 = (1 + 2 + 3 +
                    4 + 5 + 6 +
                    7 + 8 + 9)
    
    এখানে প্যারেন্থেসিস( ) ব্যবহার করায় নিজ থেকেই লাইন চলমান রয়েছে। একইভাবে [ ] এবং { } ব্যবহার করলেও বাহ্যিকভাবে লাইন কন্টিনিউয়েশনের প্রয়োজন হয় না। উদাহরণস্বরূপঃ
    fav_food = ['sweet',
              'hilsha fish',
              'milk',
              'Eag']
    
    সেমিকোলন ব্যবহার করে আমরা মাল্টিপল স্টেটমেন্টকে একই লাইনে রাখতে পারি।

    উদাহরণস্বরূপঃ
     age= 30; name="Azizur Rahman"; mobile =1000000
    

    পাইথন ইন্ডেন্টেশন

    অধিকাংশ প্রোগ্রামিং ভাষা যেমন- C, C++, Java ইত্যাদিতে কোড ব্লক নির্ধারণের জন্য ব্রাসেস{ } ব্যবহার করা হয়। কিন্তু পাইথনে ইন্ডেন্টেশন(Indentation) ব্যবহার করতে হয়।
    একটি কোড ব্লক যেমন function, loop, condition ইত্যাদির বডি(body)) ইন্ডেন্টেশন দিয়ে শুরু হয় এবং এর প্রথম আনইনডেন্টেশন লাইন দিয়ে শেষ হয়। ইন্ডেন্টেশন কি পরিমাণ হবে তা আপনার উপর নির্ভর করবে। কিন্তু সমস্ত ব্লক জুড়ে এটি অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে।
    সাধারণত ইন্ডেন্টেশনের জন্য ট্যাব এর পরিবর্তে চারটি স্পেস ব্যবহার করতে হয়।
    উদাহরণস্বরূপঃ
    for i in range(1,10):
        print(i)
        if i ==6:
            break
    
    পাইথনে ইন্ডেন্টেশনের প্রতি জোর দেওয়ায় কোড দেখতে অনেক ঝরঝরে লাগে। এটি পাইথন প্রোগ্রামকে দেখতে একইরকম এবং সামঞ্জস্যপূর্ণ কর তোলে।
    লাইন চলমান থাকলে ইন্ডেন্টেশন এড়িয়ে চলা হয়। কিন্তু সর্বদাই ইন্ডেন্ট ব্যবহার করা ভাল। কারণ এটি আপনার কোডকে আরোও পাঠযোগ্য করে তোলে।
    উদাহরণস্বরূপঃ
    if True:
        print('Hello')
        name= "SATT"
    
    এবং
    if True: print('Hello');  name= "SATT"
    
    
    উপরের উভয় প্রোগ্রামই বৈধ এবং একই কাজে ব্যবহৃত হয়। কিন্তু পুর্বের টার স্টাইল অনেক সহজ।
    যাইহোক, ইন্ডেন্টেশনের ব্যবহার ভূল করলে IndentationError ফলাফল দেখাবে।

    পাইথন কমেন্ট

    প্রোগ্রামিং লেখার সময় কমেন্ট খুবই গুরুত্বপূর্ণ। প্রোগ্রামের মাধ্যমে কি করা হচ্ছে তা কমেন্টের মাধ্যমে বর্ণনা করা হয়। ফলে নতুন কোনো প্রোগ্রামারকে আপনার লেখা কোড দেখে প্রোগ্রামের উদ্যেশ্য বুঝতে খুব বেশি পরিশ্রম করতে হয় না। দীর্ঘদিন পূর্বের লেখা প্রোগ্রামের মূল বিষয় আপনি ভুলে যাওয়াটাই স্বাভাবিক। তাই কিছু সময় নিয়ে হলেও কমেন্টের মাধ্যমে প্রোগ্রামের উদ্দেশ্য লিখলে ভবিষ্যতে এর ভাল ফল পাওয়া যাবে।
    পাইথনে কমেন্ট শুরু করার জন্য হ্যাস(#) প্রতীক ব্যবহার করা হয়।

    এটি নতুন লাইন(new line) পর্যন্ত সম্প্রসারিত হয়। প্রোগ্রাম ভালভাবে বুঝার সর্বত্তোম উপায় হলো প্রোগ্রামে কমেন্ট করা। পাইথন ইন্টারপ্রেটার কমেন্টকে এড়িয়ে চলে।
    #এটি একটি কমেন্ট
    #SATT প্রিন্ট করবে
    print('SATT')
    

    মাল্টিলাইন(Multi-line) কমেন্ট

    আপনি যদি একাধিক/মাল্টিপল লাইনকে একই সাথে কমেন্ট করতে চান তাহলে একটি পদ্ধতি হচ্ছে প্রত্যেক লাইনের শুরুতে হ্যাস(#) প্রতীক ব্যবহার করুন।
    উদাহরণস্বরূপঃ
    #এটি অনেক লাইনের কমেন্ট  
    #এটিও অনেক লাইন কমেন্ট এর অংশ
    #একই ভাবে এটিও অনেক লাইন কমেন্ট এর অংশ
    
    
    অন্য আরেকটি পদ্ধতি হচ্ছে ট্রিপল-কোট(Triple quotes) ব্যবহার করা। যেমন- ''' অথবা """।
    এই ট্রিপল-কোট(Triple quotes) মূলত মাল্টি-লাইন স্ট্রিং কমেন্ট করার জন্য ব্যবহার করা হয়। কিন্তু এগুলো মাল্টি-লাইন কমেন্টের জন্যও ব্যবহার করা যেতে পারে। ডকস্ট্রিং না হওয়া পর্যন্ত এগুলো অতিরিক্ত কোনো কোড উৎপাদন করে না।
    """এটিও মাল্টি-লাইন
       কমেন্টের স্বয়ংসম্পূর্ণ উদাহরণ!"""
    

    পাইথন ডকস্ট্রিং

    ডকুমেন্টেশন স্ট্রিং এর সংক্ষিপ্ত রুপ হচ্ছে ডকস্ট্রিং(Docstring)
    এটি একটি স্ট্রিং যাকে অবশ্যই মডিউলফাংশনক্লাস এবং মেথড ডেফিনিশন এর একেবারে প্রথম স্টেটমেন্টে লিখতে হয়। ফাংশন এবং ক্লাস এর মাধ্যমে আপনি কি করতে চাচ্ছেন তা অবশ্যই ডকস্ট্রিং এ লিখতে হবে।
    ডকস্ট্রিং লেখার সময় ট্রিপল-কোট(Triple quotes) ব্যবহার করা হয়।
    উদাহরণস্বরূপঃ
    def double(num):
        """Function to double the value"""
        return 2*num
    
    ফাংশন এর মধ্য দিয়ে __doc__ এট্রিবিউট/প্যারামিটার অতিক্রম করানোর মাধ্যমে ডকস্ট্রিং(Docstring ) পুনরুদ্ধার করা যায় বা পাওয়া যায়। উপরের প্রোগ্রামটি একবার রান করানোর পরে নিচের কোড পাইথন শেল-এ লিখুন।
    >>> print(double.__doc__)
    Function to double the value
    
    

    পাইথন ভ্যারিয়েবল

    এই অধ্যায়ে আপনি জানবেন ভ্যারিয়েবল, ভ্যারিয়েবল নামকরণ এর নিয়ম এবং পাইথনে কিভাবে বিভিন্ন ধরনের ভ্যারিয়েবল তৈরি করতে হয়।

    পাইথন ভ্যারিয়েবল

    ভ্যারিয়েল হচ্ছে কম্পিউটার মেমরির মধ্যে অবস্থিত একটি জায়গা/স্থান যা সচরাচর তথ্য(Data)/মান(value) সংরক্ষণের জন্য ব্যবহৃত হয়।
    মেমরির মধ্যে অবস্থিত বিভিন্ন স্থানকে আলাদাভাবে বুঝানোর জন্য ভ্য্যারিয়েবলের নামসমূহ ইউনিক(একটি হতে অন্যটি ভিন্ন) হতে হবে। পাইথনে আইডেন্টিফায়ার যে নিয়মে লিখতে হয় ভ্যারিয়েবলের নামও ঐ একই নিয়মে লিখতে হয়।
    ব্যবহারের পূর্বে পাইথনে ভ্যারিয়েবল ডিক্লেয়ার(declare) করার প্রয়োজন হয় না। আমারা সাধারণভাবেই ভ্যারিয়েবলে ভ্যালু(value) এসাইন করি এবং এটি বিদ্যমান/জমা থাকে। এমনকি আমাদেরকে ভ্যারিয়েবলের টাইপও ডিক্লেয়ার করতে হয় না। আমারা যখন ভ্যালু এসাইন করি তখন এটি ডেটা/তথ্যের উপর ভিত্তিকরে নিজ থেকেই টাইপ নির্ধারণ করে।

    ভ্যারিয়েবল এসাইনমেন্ট

    ভ্যারিয়েবলে ভ্যালু এসাইন করার জন্য আমরা এসাইনমেন্ট অপারেটর (=) ব্যবহার করি। যেকোনো বৈধ্য(valid) ভ্যারিয়েবলের মধ্যে যেকোনো টাইপের ভ্যালু রাখা যায়।
     int_num= 10
    float_num= 5.4
    str_var= "SATT"
    
    
    উপরের উদাহরণে তিনটি এসাইনমেন্ট স্টেটমেন্ট লেখা হয়েছে। ভ্যরিয়েবল int_num এ পূর্ণসংখ্যা(integer) 10 এসাইন করা হয়েছে।
    একইভাবে, ভ্যরিয়েবল float_num এবং str_var-এর মধ্যে যথাক্রমে দশমিক সংখ্যা(floating point number) 5.4 এবং স্ট্রিং(অক্ষরের ক্রম) "SATT" এসাইন করা হয়েছে।

    মাল্টিপল এসাইনমেন্ট

    পাইথনে অনেক এসাইনমেন্ট একই স্টেটমেন্টে রাখা যেতে পারে। যেমন-
    int_num, float_num, str_var= 10, 5.4, "SATT"
    
    
    আমরা যদি একই সাথে বিভিন্ন ভ্যারিয়েবলে একই ভ্যালু এসাইন করতে চাই তাহলে উপরের উদাহরণটি অনুসরণ করতে পারি।
    x = y = z = "Bangladesh"
    
    
    এখানে একই স্ট্রিং "Bangladesh" কে তিনটি ভিন্ন ভ্যারিয়েবলের মধ্যে এসাইন করা হয়েছে।

    পাইথন পাইথন ডেটা টাইপ

    এই অধ্যায়ে আপনি পাইথন ডেটা টাইপ(data type) এবং ভ্যারিয়েবল ডিক্লেয়ারেশন(declaration) সম্মন্ধে জানবেন।

    পাইথন ডেটা টাইপ

    পাইথনে প্রত্যেকটি ভ্যালুর ডেটা টাইপ থাকে। পাইথনে যেহেতু সবকিছুই অবজেক্ট, সুতরাং ডেটা টাইপ হচ্ছে প্রকৃতপক্ষে ক্লাস এবং ভ্যারিয়েবলগুলো এই সমস্ত ক্লাসের ইন্সট্যান্স(instance) বা অবজেক্ট।
    পাইথনে ডেটার বিভিন্ন টাইপ রয়েছে। নিম্নে কিছু গুরুত্বপূর্ণ টাইপ সম্মন্ধে সংক্ষিপ্তভাবে আলোচনা করা হলোঃ

    পাইথন নাম্বার

    পূর্ণ সংখ্যা, দশমিক সংখ্যা এবং জটিল সংখ্যা(Integers, floating point numbers এবং complex numbers) পাইথন নাম্বার ক্যাটাগরির মধ্যে পড়ে। এগুলোকে int, float এবং complex ক্লাস হিসাবে নির্ধারণ করা হয়।
    একটি ভ্যারিয়েবল অথবা ভ্যালু কোন ক্লাসের অন্তর্গত তা জানার জন্য আপনি type() ফাংশন ব্যবহার করতে পারেন এবং একটি অবজেক্ট কোন ক্লাসের অন্তর্গত তা চেক করার জন্য isinstance() ফাংশন ব্যবহার করতে পারেন।
    num = 5
    print(num, "is of type", type(num))
    
    num= 5.0
    print(num, "is of type", type(num))
    
    num= 1+2j
    print(num, "is complex number?", isinstance(1+2j,complex))
    
    কম্পিউটার মেমোরির উপর ভিত্তিকরে পূর্ণ সংখ্যা যেকোনো দৈর্ঘ্যের হতে পারে।
    দশমিক সংখ্যা ১৫ দশমিক পর্যন্ত নিখুঁত হতে পারে। দশমিক বিন্দুর মাধ্যমে পূর্ণ এবং দশমিক অংশকে পৃথক করা হয়। উদাহরণস্বরূপ- এখানে 5 একটি পূর্ণ সংখ্যা এবং 5.0 একটি দশমিক সংখ্যা।
    জটিল সংখ্যার গঠন হচ্ছে x + yj। যেখানে, x বাস্তব অংশ এবং y কাল্পনিক অংশ। নিচে জটিল সংখ্যার কিছু উদাহরণ দেওয়া হলোঃ
    >>> a = 1234567890123456789
    >>> a
    1234567890123456789
    >>> b = 0.1234567890123456789
    >>> b
    0.12345678901234568
    >>> c = 1+2j
    >>> c
    (1+2j)
    
    লক্ষ্য করলে দখেবেন float ভ্যারিয়েবল b এর শেষে 9 বাদ পড়েছে।

    পাইথন লিস্ট

    লিস্ট হচ্ছে আইটেম/উপাদানের ক্রমিক অর্ডার। এই ডেটা টাইপটি পাইথনে সবচেয়ে বেশি ব্যবহৃত হয়। লিস্টে ব্যবহৃত সকল উপাদান একই টাইপের হওয়া জরুরী নয়।
    পাইথনে লিস্ট ডিক্লেয়ার করা একেবারেই সহজ। লিস্ট ডিক্লেয়ার করতে [ ] ব্রাকেট ব্যবহার করা হয় এবং কমা চিহ্নের মাধ্যমে এর উপাদানগুলোকে আলাদা করা হয়। যেমন-
    >>> list_example = [5, 'java', 'python']
    
    পাইথনে 0(শূন্য) দিয়ে ইনডেক্স শুরু হয় । লিস্ট থেকে কোনো একটি উপাদান বা উপাদানের রেঞ্জ খুঁজে বের করতে আমরা স্লাইসিং অপারেটর [ ] ব্যবহার করি।
    num = [10,20,30,40,50,60,70,80]
    
    # num[3] = 40
    print("num[3] = ", num[3])
    
    # num[0:4] = [10, 20, 30, 40]
    print("num[0:4] = ", num[0:4])
    
    # num[4:] = [50, 60, 70, 80]
    print("num[4:] = ", num[4:])
    
    
    লিস্ট মিউটেবল(mutable) অর্থাৎ লিস্টের উপাদান পরিবর্তন করা যায়।
    >>> num = [1,2,3]
    >>> num[2]=4
    >>> num
    [1, 2, 4]
    

    পাইথন টাপল

    একইভাবে টাপলও লিস্টের ন্যায় উপাদানের ক্রমিক অর্ডার। শুধু পার্থক্য হচ্ছে টাপল ইমিউটেবল(immutable) অর্থাৎ টাপলকে পরিবর্তন করা করা যায় না।
    ডেটাকে সুরিক্ষিত রাখতেই মূলত টাপল(Tuple) ব্যবহৃত হয় এবং এটি ডাইনামিক্যালি পরিবর্তন না হওয়ায় লিস্টের তুলনায় দ্রুত কাজ করে।
    এটাকে প্যারেন্থেসিস() এর মাধ্যমে সংজ্ঞায়িত করা হয় এবং এর উপাদানগুলো কমা চিহ্নের মাধ্যমে পৃথক করা হয়।
    >>> t_example = (2,'Python', 3+4j)
    
    স্লাইসিং অপারেটর [] এর মাধ্যমে আমরা টাপলের উপাদানগুলোকে খুঁজে বের করতে পারি কিন্তু পরিবর্তন করতে পারি না ।
    t = (2,'Python', 3+4j)
    
    # t[1] = 'Python'
    print("t[1] = ", t[1])
    
    # t[0:3] = (5, 'program', (1+3j))
    print("t[0:3] = ", t[0:3])
    
    # Generates error
    # Tuples are immutable
    t[0] = 10
    

    পাইথন স্ট্রিং

    স্ট্রিং হচ্ছে ইউনিকোড ক্যারেক্টার এর ক্রম(sequence of Unicode characters)। এটা প্রকাশের জন্য আমরা সিঙ্গেল অথবা ডাবল কোটেশন ব্যবহার করতে পারি এবং মাল্টি-লাইন স্ট্রিং এর জন্য আমরা ট্রিপল কোট(''' অথবা """) ব্যবহার করতে পারি।
    >>> s = "This is a string"
    >>> s = '''a multiline
    
    লিস্ট এবং টাপল এর ন্যায় স্ট্রিং এর ক্ষেত্রেও আমরা স্লাইসিং অপারেটর [] ব্যবহার করতে পারি। স্ট্রিং ইমিউটেবল, অর্থাৎ পরিবর্তন হয় না।
    s = 'Hello world!'
    
    # s[4] = 'o'
    print("s[4] = ", s[4])
    
    # s[6:11] = 'world'
    print("s[6:11] = ", s[6:11])
    
    # এরর উৎপন্ন হবে
    # পাইথনে স্ট্রিং পরিবর্তন হয় না।
    s[5] ='d'
    

    পাইথন সেট

    সেট হচ্ছে ইউনিক উপাদানের সংগ্রহ। এটাকে ব্রাসেস{ } এর মাধ্যমে সংজ্ঞায়িত করা হয় এবং এর মধ্যে উপাদানগুলোকে কমা দ্বারা পৃথক করা হয়। সেট এর উপাদানসমূহের ক্রম ঠিক থাকে না।
    উদাহরণস্বরূপঃ
    a = {5,2,3,1,4}
    
    # সেট ভ্যারিয়েবল প্রিন্ট করা
    print("a = ", a)
    
    # data type of variable a
    print(type(a))
    
    বীজগণিতের মত পাইথনেও আমরা দুটি সেটের মধ্যে ইউনিয় এবং ইন্টারসেকশন করতে পারি। সেটের ভ্যালুসমূহ ইউনিক।
    উদাহরণস্বরূপঃ
    >>> a = {1,2,2,3,3,3}
    >>> a
    {1, 2, 3}
    
    সেটের উপাদানসমূহের ক্রম ঠিক না থাকায় ইন্ডেক্সিং এর কোনো অর্থ নাই। সুতরাং স্লাইসিং অপারেটর[] কাজ করে না।
    উদাহরণস্বরূপঃ
    >>> a = {1,2,3}
    >>> a[1]
    Traceback (most recent call last):
      File "", line 301, in runcode
      File "", line 1, in 
    TypeError: 'set' object does not support indexing
    

    পাইথন ডিকশনারি

    ডিকশনারি(Dictionary) হচ্ছে উপাদান/আইটেমসমূহের key-value জোড়ায় জোড়ায় সংগ্রহ।
    আমরা যখন প্রচুর পরিমাণ ডেটা নিয়ে কাজ করি তখন এটি ব্যবহৃত হয়। ডিকশনারি থেকে নিখুঁতভাবে ডেটা পুনরুদ্ধার(retrieving) করা যায়। ভ্যালু পুনরুদ্ধার করতে অবশ্যই key জানতে হবে।
    পাইথনে ব্রাসেস{} এর মধ্যে key:value জোড় তৈরি করে এবং প্রত্যেক জোড় কে কমা(,) চিহ্ন দিয়ে আলাদা করে একটি ডিকশনারি তৈরি করা হয়। key এবং value যেকোনো টাইপের হতে পারে।
    উদাহরণস্বরূপঃ
    উদাহরণস্বরূপঃ
    >>> d = {1:'value','key':2}
    >>> type(d)
    
    
    ডিকশনারির উপাদানসমূহকে আপনি লিস্টের মতই এক্সেস করতে পারবেন। লিস্টে যেমন থার্ড ব্র্যাকেট এর মধ্যে ইনডেক্স দিয়ে উক্ত ইনডেক্সের ভ্যালু পুনরূদ্ধার করতে পারতেন, তেমনি এক্ষেত্রেও ইনডেক্স এর পরিবর্তে key ব্যবহার করে সংশ্লিষ্ট ভ্যালু অ্যাক্সেস করতে পারবেন।
    উদাহরণস্বরূপঃ
    d = {1:'value','key':2}
    print(type(d))
    
    print("d[1] = ", d[1]);
    
    print("d['key'] = ", d['key']);
    
    # Generates error
    print("d[2] = ", d[2]);
    

    ডেটা টাইপ রূপান্তর(Conversion between data type)

    টাইপ কনভার্সন ফাংশন যেমন- int(), float(), str() ইত্যাদি ব্যবহার করে আপনি ডেটা টাইপ পরিবর্তন করতে পারবেন অর্থাৎ এক ধরণের ডেটা থেকে অন্য ধরণের ডেটায় রূপান্তর করতে পারবেন।
    উদাহরণস্বরূপঃ
    >>> float(10)
    10.0
    
    দশমিক থেকে পূর্ণ সংখ্যায় রূপান্তর করলে দশমিক অংশ বাদ যায় কারণ এটি শূন্যর কাছাকাছি একটি মান ফেরত দেয়।
    উদাহরণস্বরূপঃ
    >>> int(5.5)
    5
    >>> int(-5.5)
    -5
    
    স্ট্রিং এ এবং স্ট্রিং থেকে রূপান্তরের সময় সামঞ্জস্যপূর্ণ ভ্যালু ব্যবহার করতে হবে।
    উদাহরণস্বরূপঃ
    >>> float('5.6')
    5.6
    >>> str(20)
    '20'
    >>> int('1p')
    Traceback (most recent call last):
      File "", line 301, in runcode
      File "", line 1, in 
    ValueError: invalid literal for int() with base 10: '1p'
    
    আপনি এক ক্রমকে অন্য ক্রমেও রূপান্তর করতে পারবেন।
    উদাহরণস্বরূপঃ
    >>> set([1,2,3, 4])
    {1, 2, 3, 4 }
    >>> tuple({5,6,7, 8})
    (5, 6, 7, 8)
    >>> list('bangla')
    ['b', 'a', 'n', 'g', 'l', 'a']
    
    উদাহরণস্বরূপঃ
    >>> dict([[1,2],[3,4]])
    {1: 2, 3: 4}
    >>> dict([(3,9),(4,16)])
    {3: 9, 4: 16}
    
    

    পাইথন ইনপুট, আউটপুট এবং ইম্পোর্ট

    এই অধ্যায়ে আপনি জানবেন পাইথন বিল্ট-ইন(নিজস্ব) ফাংশন print() এবং input() ব্যবহার করে কিভাবে ইনপুট এবং আউটপুট কার্য সম্পাদন করতে হয়। এছাড়া ইম্পোর্ট মডিউল সম্বন্ধেও সংক্ষিপ্ত ধারনা পাবেন।
    পাইথন নানা ধরণের বিল্ট-ইন ফাংশন সরবরাহ করে যেগুলো আমরা আমাদের প্রয়োজনে নির্দিধায় ব্যবহার করতে পারি।
    স্টান্ডার্ড ইনপুট এবং আউটপুটের জন্য যথাক্রমে input() এবং print() ফাংশন ব্যবহৃত হয়। চলুন প্রথমেই আমরা আউটপুট সেকশনটি দেখে নেই।

    print() ফাংশনের মাধ্যমে পাইথন আউটপুট

    স্টান্ডার্ড আউটপুট ডিভাইসে(যেমন-স্ক্রিনে) আউটপুট নেওয়ার জন্য আমরা print() ফাংশন ব্যবহার করি।
    এছাড়া আমরা ডাটা ফাইলেও আউটপুট নিতে পারি। পরিবর্তি অধ্যায়ে এটি সম্মন্ধে বিস্তারিত আলোচনা করা হবে।
    উদাহরণস্বরূপঃ
    print('This sentence will be displayed on the screen')
    # Output: This sentence will be displayed on the screen
    
    num= 10
    
    print('The value of num is', num)
    # Output: The value of num is 10
    
    
    
    দ্বিতীয় print() স্টেটমেন্টে লক্ষ্য করলে দেখবেন স্ট্রিং(string) এবং ভ্যারিয়েবল num এর মধ্যে একটি স্পেস দেওয়া আছে এবং এটি ডিফল্টভাবে ব্যবহৃত হয়, কিন্তু আমরা ইচ্ছা করলে এটি পরিবর্তন করতে পারি।
    print() ফাংশনের প্রকৃত সিনট্যাক্স(syntax নিম্নরূপঃ
    print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
    
    
    সিনট্যাক্স এর ব্যাখ্যা
    • এখানে objects হচ্ছে ভ্যালু যা প্রিন্ট করতে হবে।
    •  sep সেপারেটর দুটি ভ্যালুর মধ্যে ব্যবহৃত হয়। এটার ডিফল্ট ভ্যালু হচ্ছে স্পেস ক্যারেক্টার।
    • সকল ভ্যালু প্রিন্ট হওয়ার পরে end প্রিন্ট হয় যার ডিফল্ট ভ্যালু হলো নতুন লাইন(new line)।
    • file হলো অবজেক্ট যেখানে /যাতে ভ্যালু প্রিন্ট হয় এবং এটার ডিফল্ট ভ্যালু হলো sys.stdout(স্ক্রিন)। নিচের উদাহরণের সাহায্যে ব্যাখ্যা দেওয়া হলোঃ
    • print(1,2,3,4,5)
      # Output: 1 2 3 4
      
      print(1,2,3,4,sep='&')
      # Output: 1&2&3&4&5
      
      print(1,2,3,4,5,sep='#',end='&')
      # Output: 1*2*3*4&
      
      
      

    আউটপুট ফরম্যাটিং(Output formatting)

    আউটপুটকে অধিক আকর্ষনীয় করে তোলার জন্য মাঝে মাঝে আমাদের আউটপুট বিন্যাস/ফরম্যাটিং এর প্রয়োজন হতে পারে। str.format() মেথড ব্যবহার করে এটি সম্পন্ন করা যায়। যেকোনো স্ট্রিং অবজেক্টে এই মেথডটি প্রয়োগ করা যায়।
    >>> x = 3; y = 5
    >>> print('The value of x is {} and y is {}'.format(x,y))
    #Output: The value of x is 3 and y is 5
    
    
    এখানে কারলি ব্রাকেট{} স্থানধারক(placeholder) হিসাবে ব্যবহৃত হয়েছে। আমরা নাম্বার(টাপল ইনডেক্স) ব্যবহার করে এগুলোর অর্ডার ঠিক করে দিতে পারি।
    উদাহরণস্বরূপঃ
        
    print('We love {0} and {1}'.format('SATT','founder of SATT'))
    # Output: We love SATT and founder of SATT
    
    print('We love {1} and {0}'.format('SATT','founder of SATT'))
    # Output: We love founder of SATT and SATT
            
    
    
    স্ট্রিং ফরম্যাটের জন্য আমরা আর্গুমেন্টও ব্যবহার করতে পারি।
    উদাহরণস্বরূপঃ
    >>> print('Hello {name}, {asking}'.format(asking = 'How are you?', name = 'Tamjid'))
    #Output: Hello Tamjid How are you?
    
    
    সি প্রোগ্রামিং ভাষায় ব্যবহৃত পুরাতন স্টাইল sprintf() ফাংশন ব্যবহার করেও আমরা স্ট্রিং ফরম্যাট করতে পারি।
    উদাহরণস্বরূপঃ
    >>> num = 10.35623906
    >>> print('The value of num is %3.2f' %x)
    #Output: The value of num is 10.36
    >>> print('The value of num is %3.4f' %x)
    #Output: The value of num is 10.3562
    
    

    পাইথন ইনপুট(Python Input)

    এতক্ষণ পর্যন্ত আমাদের প্রোগ্রাম ছিল স্ট্যাটিক(static)। অর্থাৎ ভ্যারিয়েবল এর ভ্যালু সোর্স কোডে ডিফাইন্ড(Defined) করা ছিল অথবা আমরা বলতে পরে এটি ছিল হার্ড কোডেড(Hard coded)।
    প্রোগ্রামকে সহজ এবং ডাইনামিক করে তোলার জন্য আমাদেরকে অবশ্যই ইউজারদের কাছ থেকে ইনপুট নিতে হবে। পাইথনে এই কাজটি সম্পন্ন করতে input() ফাংশন ব্যবহৃত হয়। input() ফাংশনের সিনট্যাক্স নিম্নরূপঃ
    input([prompt])
    
    যেখানে prompt হচ্ছে স্ট্রিং যা স্ক্রিনে প্রদর্শিত হয় এবং যার মাধ্যমে ইউজারকে নির্দেশনা দেওয়া হয়। এটি ঐচ্ছিক(optional)।
    উদাহরণস্বরূপঃ
    >>> num = input('Enter a number: ')
    Enter a number: 10
    >>> num
    #Output: '10'
    
    
    এখানে আমরা 10 যে ভ্যালুটি দেখছি তা নাম্বার নয় বরং স্ট্রিং। এটাকে নাম্বারে রূপান্তর(convert) করার জন্য আমরা int() অথবা float() ফাংশন ব্যবহার করতে পারি।
    >>> int('10')
    #Output: 10
    >>> float('10')
    #Output: 10.0
    
    
    একই কাজ আমরা eval() ফাংশনের মাধ্যমেও সম্পন্ন করতে পারি। বরং এটার সুযোগ-সুবিধা আরও বেশী। যদি ইনপুট ভ্যালু স্ট্রিং হয় তাহলে এটি এক্সপ্রেশন(expression) কেও নির্ণয়(evaluate) করতে পারে।
    >>> int('3+7')
    Traceback (most recent call last):
      File "<string>", line 301, in runcode
      File "<interactive input>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: '3+7'
    >>> eval('3+7')
    #Output: 10
    
    

    পাইথন ইম্পোর্ট(Python Import)

    যখন আমাদের প্রোগ্রাম অনেক বড় হতে থাকে তখন সবচেয়ে ভালো বুদ্ধি হলো প্রোগ্রামের বিভিন্ন অংশকে বিভিন্ন মডিউল(module)-এ বিভক্ত করা।
    মডিউল হচ্ছে পাইথন এর বিভন্ন সংজ্ঞা এং স্টেটমেন্ট সম্বলিত একটি ফাইল। পাইথন মডিউলের একটি ফাইল নাম থাকে এবং এটি .py এক্সটেনশন এর মাধ্যমে শেষ হয়।
    পাইথনে এক মডিউলে থাকা সংজ্ঞা(কোড) অন্য মডিউলে ইম্পোর্ট করা যায়। এটি করার জন্য আমরা import কীওয়ার্ড ব্যবহার করি।
    উদাহরণস্বরূপ, import math এর মাধ্যমে আমারা math মডিউলকে ইম্পোর্ট করতে পারি।
    import math
    print(math.pi)
    
    
    
    এখন math মডিউলে থাকা সমস্ত সংজ্ঞা(কোড) আমাদের স্কোপেও বিদ্যমান অর্থাৎ আমরা এর সমস্ত কোড ব্যবহার করতে পারি। এছাড়া আমরা চাইলে from কীওয়ার্ড ব্যবহার করে কোনো মডিউলের নির্দিষ্ট কোনো সংজ্ঞাকেও ইম্পোর্ট করতে পারি।
    উদাহরণস্বরূপঃ
    >>> from math import pi
    >>> pi
    #Output: 3.141592653589793
    
    
    যখন একটি মডিউলকে ইম্পোর্ট করা হয় তখন এটি sys.path এ নির্ধারিত বিভিন্ন স্থানে খোঁজ করে। নিম্নে ডিরেক্টরি লোকেশন এর তালিকা তুলে ধরা হলোঃ
    >>> import sys
    >>> sys.path
    ['', 
     'C:\\Python36\\Lib\\idlelib', 
     'C:\\Windows\\system32\\python36.zip', 
     'C:\\Python36\\DLLs', 
     'C:\\Python36\\lib', 
     'C:\\Python36', 
     'C:\\Python36\\lib\\site-packages']
    
    
    আপনি চাইলে আপনার নিজস্ব লোকেশনকেও এই তালিকায় যুক্ত করতে পারেন।








  • 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