সহজ ভাষায় পাইথন ৩ বুক কাভার

রকমারি থেকে অর্ডার করুন

এইখানে মূল বইয়ের ৬০% খসড়া আকারে বিনামূল্যে পড়ার জন্য দেওয়া হয়েছে। সম্পূর্ণ বইটি পড়ার জন্য কষ্ট করে আপনাকে হার্ডকপি কিনে নিতে হবে।

প্রাপ্তিস্থান

প্রতিষ্ঠান ঠিকানা ফোন নম্বর
মানিক লাইব্রেরী নীলক্ষেত, ঢাকা ০১৭৩৫-৭৪২৯০৮
রকমারি ডট কম অনলাইন ১৬২৯৭
হক লাইব্রেরী নীলক্ষেত, ঢাকা ০১৮২০-১৫৭১৮১
রূপান্তর বিডি ডট কম অনলাইন ০১৫১১-৫২২৫২৩

লুপ - প্রব্লেম সলভিং

আমরা এখন অনলাইনের অলি-গলি থেকে সংগৃহীত কয়েকটা প্রব্লেম লুপ ব্যবহার করে সলভ করার চেষ্টা করব। একটা প্রব্লেম কয়েকভাবে সলভ করা যেতে পারে। এ নিয়ে রাজনীতি করার কিছু নেই!

প্রব্লেম-১

ইউজার যেকোন একটা পূর্ণসংখ্যা ইনপুট দেবে। আর ঐ পূর্ণসংখ্যার নামতা আউটপুট হিসাবে দেখাতে হবে।

print('Please, input the number:')
number = int(input())
count = 1

while count <= 10:
    print(number, 'x', count, '=', number*count)
    count += 1

আউটপুট

Please, input the number:
9
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
9 x 10 = 90
Please, input the number:
27
27 x 1 = 27
27 x 2 = 54
27 x 3 = 81
27 x 4 = 108
27 x 5 = 135
27 x 6 = 162
27 x 7 = 189
27 x 8 = 216
27 x 9 = 243
27 x 10 = 270

ইউজার যে ইন্টিজার ইনপুট দেবে আমরা তার নামতা আউটপুট দেব। বেশ ভাল কথা। নামতা হল একটা সংখ্যাকে 1 থেকে 10 দিয়ে গুণ করে গুণফল দেখানো। কাজটা আমরা লুপের সাথে করতে পারি। count এর মান 10 বা এর ছোট হলে লুপ ঘুরবে। ইনিশিয়ালি count এর মান 1 দিয়েছি। তাই লুপ ঘোরা শুরু করবে। লুপের ভিতর প্রথমে count আর ইউজারের ইনপুট দেয়া ইন্টিজারের গুণফল প্রিন্ট করব। তারপর count এর মান 1 বাড়িয়ে দেব। তারপর count এর মান হবে 2, আবার লুপ ঘোরা শুরু হবে। এভাবে count এর মান 10 অবধি লুপ ঘুরবে আর গুণফল প্রিন্ট করবে। count এর মান বেড়ে যখন 11 হবে তখন আর লুপটি ঘুরবে না, বন্ধ হয়ে যাবে ঘোরাঘুরি।

প্রব্লেম-২

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

*****
*****
*****
*****
*****
print('Please, input the number:')
number = int(input())
temp = number

while number > 0:
    count = temp
    while count > 0:
        print('*', end='')
        count -= 1
    print()
    number -= 1

আউটপুট

Please, input the number:
4
****
****
****
****
Please, input the number:
7
*******
*******
*******
*******
*******
*******
*******

এখানে আমরা দুইটা while লুপ (নেস্টেড লুপ) নিয়ে কাজ করেছি। বিষয়টা এরকম যে একটা while লুপ দিয়ে আমরা * এর লাইন প্রিন্ট করব আর আরেকটা while দিয়ে আমরা লাইন ব্রেক নেব। ভিতরের লুপটাতে আমরা print('*', end='') ব্যবহার করেছি। print() ফাংশনটা যখন কাজ করে তখন সেটা স্ট্রিংয়ের শেষে নিজ থেকেই একটা \n যোগ করে নিউ লাইন প্রিন্ট করে দেয়। কিন্তু আমরা তো পাশাপাশি প্রিন্ট করব। সেক্ষেত্রে নতুন একটা লাইন প্রিন্ট হলে ঝামেলা আমাদের জন্য। তাই আমরা প্রিন্ট ফাংশনকে বলে দিয়েছি যে তোমার বাপু শেষে নতুন কিছু যোগ করার দরকার নাই। আর বাহিরের লুপের ভিতর আমরা print() ফাংশন ব্যবহার করেছি কিন্তু ভিতরে কোন কিছু পাস করিনি। কিছু পাস করি আর না করি, সে কিন্তু নিজ উদ্যোগে একটা নিউ লাইন প্রিন্ট করতে ভুল করেনি।

প্রব্লেম-৩

ইউজার একটা শব্দ ইনপুট দেবে। আমাদের প্রোগ্রাম দেখবে সেটি একটি প্যালিনড্রোম (Palindrome) কিনা!

Palindrome হল কোন শব্দ, সংখ্যা বা সিকুয়েন্স যাদের উল্টালেও ঐ এক জিনিসই থাকে। যেমন: 707 কে উল্টালেও 707 ই থাকে। আবার Madam কে উল্টালে Madam ই থাকে।

print('Please input your word:')
word = input()
word = word.casefold()
reversed_word = word[::-1]

if word == reversed_word:
    print('Great! It is a pallindrome.')
else:
    print('LOL! It is not a pallindrome.')
Please input your word:
madam
Great! It is a pallindrome.
Please input your word:
number
LOL! It is not a pallindrome.

আমরা ইউজারের থেকে একটা ওয়ার্ড (স্ট্রিং) ইনপুট নিয়েছি। word[::-1] দিয়ে আমরা ওয়ার্ডটাকে রিভার্স করেছি মানে উল্টে দিয়েছি। তারপর নরমাল ওয়ার্ড আর রিভার্সড ওয়ার্ডের ভিতর তুলনা করে সিদ্ধান্ত নিয়েছি।

প্রব্লেম -৪

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

1, 3, 5, 7, 11, 13, 15, 17, 20, 26, 31, 44, 54, 56, 65, 77, 94, 100

এই লিস্ট থেকে আমাদের ইজারের ইনপুট দেয়া নির্দিষ্ট একটি সংখ্যা খোঁজ দ্যা সার্চ করে বের করতে হবে। এর আর কঠিন কি!

my_list = [1, 3, 5, 7, 11, 13, 15, 17, 20, 26, 31, 44, 54, 56, 65, 77, 94, 100]

print('Input the number:')
number = int(input())

first = 0
last = len(my_list)-1
found = False
cycle = 0

while first <= last and not found:
    midpoint = (first + last)//2
    if my_list[midpoint] == number:
        found = True
    else:
        if number < my_list[midpoint]:
            last = midpoint-1
        else:
            first = midpoint+1
    cycle += 1

print('Found after', cycle, 'cycle.')

আউটপুট

Input the number:
44
Found after 4 cycle.
Input the number:
20
Found after 1 cycle.

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

results matching ""

    No results matching ""