হাতে-কলমে পাইথন: পর্ব ৪ (লুপ লুপ, সব খবর একসাথে)

June 14, 2016

আশা করি আপনারা পর্ব-৩ এ একটি একটি করে নিউজ বের করে হেডলাইন দেখতে পেরেছেন পাইথনের সাহায্যে! এই পর্বে আমরা সবগুলো খবর দেখাবো! আগের পর্বে যা করেছিলাম, তা অনেকটা এরকম:

import requests
from bs4 import BeautifulSoup

daily_star = requests.get('http://www.thedailystar.net')
parsed_html = BeautifulSoup(daily_star.text, 'lxml')
headlines  = parsed_html.find_all('h5')

এরপর আমরা একেকটা হেডলাইনকে ইনডেক্স নাম্বার ধরে বের করেছি!

print(headlines[0].text)
print(headlines[19].text)

হুম… (আমাদের যদি পূর্বের প্রোগ্রামিংয়ের অভিজ্ঞতা থাকে, তাহলে আমরা নিশ্চয়ই জানি লুপের কথা!) এখন আমাদের দরকার সবগুলো হেডলাইনকে এভাবে ধরে প্রিন্ট করা। এখন দেখি পাইথনের for loop এর চেহারা কেমন!

for item in items:
	do_something(item)
	say_hello()
	print(item.price)

প্রিয় প্রোগ্রামিং জানা পাঠক, পাইথনে {} (সেকেন্ড ব্র্যাকেট বা কার্লি ব্রেসেস) দিয়ে কোড ব্লক বুঝায় না! for loop এর ভেতর যেসকল লাইন কোড লুপ করতে থাকবে বা বার বার কাজ করতে থাকবে, সেগুলোকে Tab দিয়ে আলাদা করতে হয়!

হুম, এবার তাহলে আমাদের ডেইলি স্টারের headlines এর উপর একই ভাবে চেষ্টা করি।

for headline in headlines:
	print(headline.text)

for headline in headlines লিখে এন্টার চাপার পর iPython নিজে নিজেই বুদ্ধিমানের মত তার পরের লাইনকে ট্যাব মেরে সরিয়ে দেবে। print(headline.txt) লেখার পর দুইবার এন্টার চাপলে এই কোডের ব্লক থেকে বের হয়ে পাইথন কোড এক্সিকিউট করবে। ম্যাজিক!

এইখানে কাহিনী কি হল শেষ পর্যন্ত? আমরা headlines লিস্ট এর সকল এলিমেন্টকে headline হিসেবে চিহ্নিত করেছি প্রথম লাইনে। দ্বিতীয় লাইনে প্রত্যেকটা headline এর text প্রোপার্টি প্রিন্ট করেছি headline.text - এভাবে। আপনি যদি আমাদের লেখা লাইন দুইটি ইংরেজি হিসেবে পড়েন, কোডটি বোঝা কিন্তু অনেক সহজ!

নিজেদের লিস্ট

এতক্ষণ আমরা ডেইলি স্টারের খবরের লিস্ট নিয়ে গুতোগুতি করলাম। এবার আসুন নিজেরা একটা লিস্ট বানাই!

favorite_people = ["herock", "noor", "wordh"]

একইভাবে আমরা প্রত্যেককে একে একে..,

favorite_people[0]

এবং সবাইকে একসাথে প্রিন্ট করতে গেলে…

for person in favorite_people:
	print(person)

চিন্তা করুন তো, কেন person.text লিখলাম না? dir(favorite_people[0]) এর সাহায্য নেওয়া যেতে পারে। ব্যাপারটা এমন হতে পারে, favorite_people এর প্রতিটা এলিমেন্ট নিজেই text, আলাদা করে text বের করার দরকার নেই।

কোন টাইপের জিনিস রে ভাই!

type(headlines[0])
type(headlines[0].text)
type(favorite_people[0])
type(favorite_people)
type(120)
type("ATM")

লাইনগুলো এক্সিকিউট করে আউটপুট পর্যবেক্ষণ করুন তো!

এই পর্বে আর বেশি জটিলতায় দিকে আগালাম না আজকের মত। লুপ চালিয়ে একটু মজা করুন, বিভিন্ন জিনিসের type পর্যবেক্ষণ করুন। আবার, হেডলাইনগুলো বের করতে গেলে খেয়াল করে দেখবেন, কিছু ফাঁকা লাইনও প্রিন্ট হচ্ছে কমান্ড-লাইন কনসোলে। আন্দাজ করার চেষ্টা করুন তো কেন হচ্ছে? আগামী পর্বে এই বিষয়ে আলোচনা চলবে।

আজকের হোমওয়ার্ক,

  1. headline এর পরিবর্তে x বা যেকোন ভ্যারিয়েবল দিয়ে চেষ্টা করুন তো! (headlines নয়, headlineheadline কে আমরা যেকোন নামে ডাকতে পারি, আমাদের ইচ্ছে। কিন্তু headlines কিন্তু আগেই ডিক্লেয়ার করেছিলাম। ব্যাপারটা নিয়ে একটু ভাবুন সময় নিয়ে)
  2. গুগল বা বিং সার্চ ইঞ্জিনে পাইথনের ফর লুপ নিয়ে একটু পড়াশুনো করে দেখুন তো!
  3. নিজে গবেষণা চালিয়ে যান
comments powered by Disqus