ভূমিকা
নেস্টেড লুপ (nested loop) এবং কন্ডিশনাল লজিক ব্যবহার করে অক্ষরের আকারে স্টার (*) প্যাটার্ন প্রিন্ট করা একটি کلاسিক প্রোগ্রামিং এক্সারসাইজ। এই নিবন্ধে বড় হাতের 'G' অক্ষরের প্যাটার্ন প্রিন্ট করার পাইথন প্রোগ্রাম দেখানো হয়েছে।
উদাহরণ কোড
def display_pattern(my_line):
my_pattern = ""
for i in range(0, my_line):
for j in range(0, my_line):
# জটিল কন্ডিশন যা 'G' আকার তৈরি করে
if ((j == 1 and i != 0 and i != my_line-1) or
((i == 0 or i == my_line-1) and j > 1 and j < my_line-2) or
(i == ((my_line-1)//2) and j > my_line-5 and j < my_line-1) or
(j == my_line-2 and i != 0 and i != my_line-1 and i >= ((my_line-1)//2))):
my_pattern += "*"
else:
my_pattern += " "
my_pattern += "\n"
return my_pattern
num_line = 8
print("The pattern G has been shown below :")
print(display_pattern(num_line))
আউটপুট
The pattern G has been shown below : **** * * * ** * * * * ****
ব্যাখ্যা
display_patternফাংশনটি লাইনের সংখ্যা (my_line) গ্রহণ করে এবং একটি স্ট্রিং বিল্ড করে।দুটি নেস্টেড লুপ (
iসারি,jকলাম) দিয়ে গ্রিড ট্রাভার্স করা হয়।বড় কন্ডিশন ব্লকে 'G' আকারের জ্যামিতি সংজ্ঞায়িত করা হয়েছে:
- বামের ভের্টিক্যাল লাইন:
j == 1(প্রথম এবং শেষ সারি বাদে) - উপরের এবং নিচের হরিজন্টাল লাইন:
i == 0 or i == my_line-1(দ্বিতীয় কলাম থেকে শেষের দুইটি কলাম বাদে) - মাঝপথে ছোট হরিজন্টাল লাইন: মাঝ সারি (
(my_line-1)//2) এ ডান দিকে - ডানের নিচের ভের্টিক্যাল লাইন:
j == my_line-2(মাঝ সারির নিচে)
- বামের ভের্টিক্যাল লাইন:
শর্ত পূরণ হলে
*, নহলে স্পেসযোগ করা হয়।প্রতিটি সারির শেষে নিউলাইন (
\n) যোগ করা হয়।
দ্রষ্টব্য
মূল কোডে ভেরিয়েবল নাম I (বড় হাতের আই) এবং i (ছোট হাতের আই) মিশিয়ে ব্যবহার করা হয়েছে, যা পাইথনে কেস-সেনসিটিভ। সঠিক কোডে সব জায়গায় i (ছোট হাতের) ব্যবহার করা উচিত। উপরের কোডে সংশোধন করা হয়েছে।