Python For Loop සිංහලෙන්: ආරම්භක මාර්ගෝපදේශය | Learn Loops in Sinhala

Python For Loop සිංහලෙන්: ආරම්භක මාර්ගෝපදේශය | Learn Loops in Sinhala

ආයුබෝවන් කොල්ලෝ කෙල්ලෝ හැමෝටම! කොහොමද ඉතින් ඔයාලට? අද අපි කතා කරමු programming ලෝකේ හරිම වැදගත් සහ නිතරම අපිට උදව් වෙන concept එකක් ගැන – ඒ තමයි Loops. විශේෂයෙන්ම Python වලදී අපිට වැඩ ගොඩක් ලේසි කරගන්න උදව් වෙන for loop එක ගැන තමයි අද අපි ගැඹුරින්ම කතා කරන්නේ.

සමහර වෙලාවට ඔයාලට දැනෙනව ඇති එකම වැඩේ ආයෙ ආයෙ කරන්න වෙනකොට හරිම කම්මැලියි කියලා, නේද? උදාහරණයක් විදියට, list එකක තියෙන හැම number එකකටම මොකක් හරි operation එකක් කරන්න ඕන වෙන්න පුළුවන්. නැත්නම්, string එකක තියෙන හැම අකුරක්ම check කරන්න ඕන වෙන්න පුළුවන්. මේ වගේ අවස්ථා වලට තමයි Loops කියන අපේ යාළුවා අපිට උදව් වෙන්නේ. Loops කියන්නේ එකම කෝඩ් කොටසක් කිහිප වතාවක් run කරන්න පුළුවන් කරන mechanism එකක්. ඒකෙන් අපේ කාලයත්, කෝඩ් එකේ දිගත් අඩු වෙනවා, වැරදි අඩු වෙනවා, වැඩේ ලේසි වෙනවා. කොහොමද, පට්ට නේද?

Python වල Loops වර්ග දෙකක් තියෙනවා: for loops සහ while loops. අද අපි for loops ගැන විතරක් අවධානය යොමු කරමු, මොකද ඒක ගොඩක් වෙලාවට Python වලදී වැඩිපුරම පාවිච්චි වෙන loop එකක්. ලෑස්තිද එහෙනම්? අපි යමු!

Iteration: මොකක්ද මේ "Iterate" කරනවා කියන්නේ?

පළමුවෙන්ම, "iteration" කියන්නේ මොකක්ද කියලා තේරුම් ගමු. සරලව කිව්වොත්, "iterate" කරනවා කියන්නේ මොකක් හරි collection එකක (list, string, tuple, dictionary වගේ) තියෙන item එකින් එක, පිළිවෙලට ගිහින් බලන එක. හිතන්න ඔයාලට පොත් පේලියක් තියෙනවා කියලා. ඒ පොත් පේලියේ හැම පොතක්ම අරගෙන ඒකේ පිටු ගාන බලනවා නම්, ඔයාලා කරන්නේ ඒ පොත් පේලිය "iterate" කරන එක. programming වලදීත් මේක හරියටම ඒ වගේ තමයි. for loop එකේ ප්‍රධානම කාර්යය තමයි මේ iteration එක පහසුවෙන් කරන්න අවස්ථාව සලසන එක.

for loop එකේ Syntax එකයි range() function එකයි

Python for loop එකේ syntax එක හරිම සරලයි, තේරුම් ගන්නත් ලේසියි. ඒක මෙන්න මේ වගේ:

for item in iterable:
    # මේ කෝඩ් එක තමයි හැම iteration එකකදිම run වෙන්නේ
    # 'item' කියන්නේ 'iterable' එකේ තියෙන වත්මන් element එක
  • item: මේක variable එකක්. හැම iteration එකකදිම, iterable එකේ තියෙන ඊළඟ element එක මේ item variable එකට assign වෙනවා. මේක ඔයාලට ඕන නමක් දෙන්න පුළුවන්. (උදා: i, num, char)
  • iterable: මේක තමයි අපි iterate කරන්න යන collection එක. (list, string, tuple, set, dictionary keys/values/items, range() object වගේ)

අපි මේක පොඩි උදාහරණයකින් බලමු. අපි my_list කියලා list එකක් හදමු.

my_list = ["ඇපල්", "කෙසෙල්", "දොඩම්", "අඹ"]

for fruit in my_list:
    print(fruit + " හරිම රසයි!")

මේ කෝඩ් එක run කරාම මෙහෙම print වෙයි:

ඇපල් හරිම රසයි!
කෙසෙල් හරිම රසයි!
දොඩම් හරිම රසයි!
අඹ හරිම රසයි!

දැක්කා නේද? my_list එකේ තියෙන හැම fruit එකක්ම fruit කියන variable එකට අරගෙන, loop එක ඇතුලේ තියෙන කෝඩ් එක run කළා. ඒක තමයි for loop එකක මූලික ක්‍රියාකාරීත්වය.

range() function එක

for loop එකත් එක්ක වැඩ කරනකොට අපිට ගොඩක් වෙලාවට උදව් වෙන තව පට්ට function එකක් තමයි range() කියන්නේ. මේකෙන් අපිට අංක ගණනාවක් generate කරගන්න පුළුවන්. මේ range() function එක විවිධ විදියට පාවිච්චි කරන්න පුළුවන්.

1. range(stop)

මේකෙන් කරන්නේ 0 ඉඳලා (stop - 1) වෙනකම් අංක generate කරන එක. stop කියන අංකය generate වෙන්නේ නැහැ. මතක තියාගන්න, Python වල බොහෝ වෙලාවට counting පටන් ගන්නේ 0 ඉඳලා (zero-indexed).

print("Range(5) උදාහරණය:")
for i in range(5): # 0, 1, 2, 3, 4
    print(i)

Output:

Range(5) උදාහරණය:
0
1
2
3
4

2. range(start, stop)

මේකෙන් start අංකයේ ඉඳලා (stop - 1) වෙනකම් අංක generate කරනවා.

print("\nRange(2, 7) උදාහරණය:")
for i in range(2, 7): # 2, 3, 4, 5, 6
    print(i)

Output:

Range(2, 7) උදාහරණය:
2
3
4
5
6

3. range(start, stop, step)

මේකෙන් start අංකයේ ඉඳලා (stop - 1) වෙනකම්, step එකේ ගාණට අංක generate කරනවා. step එක කියන්නේ එක අංකයකින් ඊළඟ අංකයට පනින ගාණ.

print("\nRange(1, 11, 2) උදාහරණය:")
for i in range(1, 11, 2): # 1, 3, 5, 7, 9
    print(i)

Output:

Range(1, 11, 2) උදාහරණය:
1
3
5
7
9

දැන් range() function එක ගැන හොඳ අවබෝධයක් ලැබෙන්න ඇති කියලා හිතනවා. මේක for loops වලදී ගොඩක්ම පාවිච්චි වෙන එකක්.

Strings සහ Lists වල Iterate කරමු

for loop එකේ තියෙන තවත් ලස්සනම දෙයක් තමයි අපිට Strings සහ Lists වල elements එකින් එකට access කරන්න පුළුවන් වෙන එක.

Strings

String එකක් කියන්නේ අකුරු එකතුවක්නේ. for loop එකක් පාවිච්චි කරලා අපිට String එකක තියෙන හැම අකුරක්ම වෙන වෙනම අරගෙන වැඩ කරන්න පුළුවන්.

name = "Python"
print("අපේ නම Python:")
for char in name:
    print(char)

Output:

අපේ නම Python:
P
y
t
h
o
n

මේකෙන් ඔයාලට String එකක තියෙන vowel (ස්වර) ගාන හොයන්න, අකුරු count කරන්න වගේ වැඩ ගොඩක් කරන්න පුළුවන්. පොඩි Challenge එකක් විදියට, උඩ තියෙන කෝඩ් එක modify කරලා "Python" කියන String එකේ තියෙන 'o' අකුරු කීයක් තියෙනවද කියලා හොයන්න බලන්න!

Lists

Lists ගැන නම් අපි කලින් කතා කරා. Lists වල තියෙන elements වලට access කරන්න for loop එක තමයි හොඳම විදිය. කලින් උදාහරණයේත් අපි ඒක දැක්කා.

numbers = [10, 20, 30, 40, 50]
total = 0

print("\nList එකේ අංක එකතු කරමු:")
for num in numbers:
    total += num # total = total + num
    print(f"දැන් total එක: {total}")

print(f"අවසාන total එක: {total}")

Output:

List එකේ අංක එකතු කරමු:
දැන් total එක: 10
දැන් total එක: 30
දැන් total එක: 60
දැන් total එක: 100
දැන් total එක: 150
අවසාන total එක: 150

මේකෙන් අපිට List එකක තියෙන හැම අංකයකම එකතුව හොයාගන්න පුළුවන් වුණා. මේ වගේ සරල වැඩවලට වගේම, complex data processing වලටත් for loops නැතුවම බැහැ.

break සහ continue: Loops පාලනය කරමු!

සමහර වෙලාවට අපිට loop එකක් අතරමග නවත්තන්න, නැත්නම් current iteration එක skip කරලා ඊළඟ එකට යන්න ඕන වෙනවා. මේ වැඩේට තමයි break සහ continue කියන statements දෙක උදව් වෙන්නේ. මේවාට කියන්නේ "Loop Control Statements" කියලා.

break Statement එක

break statement එක පාවිච්චි කරන්නේ loop එකක් සම්පූර්ණයෙන්ම නවත්තලා, ඒකෙන් එළියට එන්න. Condition එකක් true වුණ ගමන් අපිට තවදුරටත් loop වෙන්න ඕන නැත්නම් මේක පාවිච්චි කරන්න පුළුවන්.

print("\nbreak උදාහරණය:")
for i in range(1, 11):
    if i == 5:
        print("5 ට ආව නිසා loop එක නවත්තනවා!")
        break # Loop එක නවත්වයි
    print(i)

Output:

break උදාහරණය:
1
2
3
4
5 ට ආව නිසා loop එක නවත්තනවා!

දැක්කා නේද? i කියන එක 5 වුණ ගමන් break වුණා, ඊට පස්සේ 6, 7, වගේ අංක print වුණේ නැහැ. පට්ට නේද?

continue Statement එක

continue statement එක පාවිච්චි කරන්නේ current iteration එක skip කරලා, loop එකේ ඊළඟ iteration එකට යන්න. ඒ කියන්නේ, continue එකට පස්සේ තියෙන කෝඩ් කොටස current iteration එකේදී run වෙන්නේ නැහැ.

print("\ncontinue උදාහරණය:")
for i in range(1, 11):
    if i % 2 == 0: # i ඉරට්ටේ සංඛ්‍යාවක් නම්
        print(f"{i} ඉරට්ටේ සංඛ්‍යාවක් නිසා skip කරනවා.")
        continue # මේ iteration එක skip කරලා ඊළඟ එකට යයි
    print(i)

Output:

continue උදාහරණය:
1
2 ඉරට්ටේ සංඛ්‍යාවක් නිසා skip කරනවා.
3
4 ඉරට්ටේ සංඛ්‍යාවක් නිසා skip කරනවා.
5
6 ඉරට්ටේ සංඛ්‍යාවක් නිසා skip කරනවා.
7
8 ඉරට්ටේ සංඛ්‍යාවක් නිසා skip කරනවා.
9
10 ඉරට්ටේ සංඛ්‍යාවක් නිසා skip කරනවා.

මේකෙන් අපි ඉරට්ටේ සංඛ්‍යා (even numbers) print වීම skip කළා. ඒ කියන්නේ continue statement එකට පස්සේ තියෙන print(i) කියන line එක ඉරට්ටේ සංඛ්‍යාවක් ආවොත් run වුණේ නැහැ.

Review සහ Troubleshooting: පොඩි පොඩි වැරදි හදාගමු!

Loops එක්ක වැඩ කරනකොට අපිට පොඩි පොඩි අවුල් යන්න පුළුවන්. ඒත් අවුලක් නෑ, ඒක සාමාන්‍ය දෙයක්. අපි බලමු පොදුවේ වෙන වැරදි මොනවද, ඒවා හදාගන්නේ කොහොමද කියලා.

"Off-by-one" Errors with range()

මේක තමයි range() එක්ක වැඩ කරනකොට නිතරම වෙන පොදු වැරැද්දක්. range(stop) කියන්නේ 0 ඉඳලා stop-1 වෙනකම්. range(start, stop) කියන්නේ start ඉඳලා stop-1 වෙනකම්. ගොඩක් වෙලාවට අපි හිතනවා stop කියන අංකයත් generate වෙයි කියලා. ඒත් එහෙම වෙන්නේ නෑ. ඒ නිසා, ඔයාලට 1 ඉඳලා 10 වෙනකම් print කරන්න ඕන නම්, range(1, 11) කියලා දෙන්න ඕන මිසක් range(1, 10) කියලා නෙමෙයි. නැත්නම් "අයියෝ! එකකින් අඩුයිනේ!" කියලා හිතෙන්න පුළුවන්.

# වැරදි විදිය: 1 සිට 9 දක්වා print වේ
print("වැරදි off-by-one උදාහරණය:")
for i in range(1, 10):
    print(i) # 1, 2, ..., 9

# නිවැරදි විදිය: 1 සිට 10 දක්වා print වේ
print("\nනිවැරදි off-by-one උදාහරණය:")
for i in range(1, 11):
    print(i) # 1, 2, ..., 10

Infinite Loops (for Loops වලදී අඩුයි)

Infinite loop එකක් කියන්නේ කවදාවත් නොනවතින loop එකක්. while loops වලදී මේක වෙන්න තියෙන ඉඩකඩ වැඩියි, මොකද while loop එකක් run වෙන්නේ condition එකක් true වෙලා තියෙනකම්. for loop එකක් නම් iterate වෙන්නේ finite iterable එකක් (list, string, range object වගේ) උඩ. ඒ නිසා for loop එකක් infinite වෙන්න තියෙන ඉඩකඩ ගොඩක් අඩුයි. හැබැයි, break හෝ continue වගේ logic එකක් වැරදිලා ලිව්වොත්, නැත්නම් nested loops වලදී පොඩි පොඩි අවුල් යන්න පුළුවන්.

Best Practices: Smart විදියට කෝඩ් ලියමු!

Iterables ගැන තේරුම් ගන්න

for loop එකක් පාවිච්චි කරනකොට, ඒක වැඩ කරන්නේ "iterable" object එකක් එක්ක කියන එක හොඳට තේරුම් ගන්න. Python වල Strings, Lists, Tuples, Sets, Dictionaries (මේවායේ keys, values, හෝ items) සහ range() objects මේ හැම එකක්ම iterables තමයි. මේවා ගැන හොඳ අවබෝධයක් තියෙනවා නම්, ඔයාලට for loop එකෙන් කරන්න පුළුවන් දේවල් අසීමිතයි.

Readability: කෝඩ් එක කියවන්න ලේසි වෙන්න ඕනේ

variable නම් දෙද්දී, i, j, k වගේ අකුරු පාවිච්චි කරනවාට වඩා, fruit, number, character වගේ අර්ථවත් නම් පාවිච්චි කරන්න. ඒකෙන් ඔයාලා ලියපු කෝඩ් එක තව කෙනෙක්ට වගේම, ඔයාලටම ආයෙ බලනකොටත් තේරුම් ගන්න ලේසියි.

# නරක උදාහරණය
for x in my_data:
    print(x)

# හොඳ උදාහරණය
for customer_name in customer_list:
    print(customer_name)

for vs. while: කවදාද මොකක් පාවිච්චි කරන්නේ?

  • for loop: ඔයාලා දන්නවා නම් කොපමණ වාර ගාණක් loop වෙන්න ඕනෙද කියලා (උදා: list එකක හැම element එකක්ම, 10 වතාවක්), එහෙම නැත්නම් collection එකක තියෙන හැම element එකක්ම process කරන්න ඕන නම්, for loop එක තමයි හොඳම විසඳුම.
  • while loop: ඔයාලා දන්නේ නැත්නම් කොපමණ වාර ගාණක් loop වෙන්න ඕනෙද කියලා, හැබැයි යම්කිසි condition එකක් true වෙනකම් loop වෙන්න ඕන නම් (උදා: user input එකක් නිවැරදි වෙනකම්), while loop එක පාවිච්චි කරන්න.

Nested Loops: Loops ඇතුලේ Loops!

සමහර වෙලාවට අපිට Loop එකක් ඇතුලේ තව Loop එකක් ලියන්න වෙනවා. මේවට කියන්නේ "Nested Loops" කියලා. මේවා පාවිච්චි කරන්නේ දෙකකට වඩා වැඩි dimension තියෙන දේවල් (matrix එකක් වගේ) manipulate කරනකොට. මේ ගැන අපි අනාගත ලිපියකින් කතා කරමු, මොකද මේවා පොඩ්ඩක් සංකීර්ණ වෙන්න පුළුවන්.

අවසාන වචනය...

ඉතින් කොල්ලෝ කෙල්ලෝ, අද අපි Python for loop එක ගැන මුල ඉඳලා අගටම කතා කළා. Loop එකක මූලික concept එක, for loop එකේ syntax එක, range() function එක, Strings සහ Lists එක්ක for loop එක පාවිච්චි කරන විදිය, break සහ continue statements, පොදු වැරදි සහ හොඳ පුරුදු ගැන ඔයාලට හොඳ අවබෝධයක් ලැබෙන්න ඇති කියලා හිතනවා.

Programming කියන්නේ ප්‍රැක්ටිස් කරන්න ඕන දෙයක්. මේ ලිපියේ තියෙන උදාහරණ ඔයාලගේම IDE එකක (PyCharm, VS Code, Thonny වගේ) run කරලා බලන්න. තව ඔයාලගේම පොඩි problems හදාගෙන ඒවාට for loops පාවිච්චි කරලා විසඳුම් හොයන්න උත්සාහ කරන්න. එතකොට තමයි මේ concept එක ඔයාලට හොඳටම කාවදින්නේ.

ඔයාලට මේ ලිපියෙන් අලුත් දෙයක් ඉගෙන ගන්න ලැබුණා නම්, නැත්නම් ප්‍රශ්න මොනවා හරි තියෙනවා නම්, පහළ comment section එකේ අහන්න ලැජ්ජා නැතුව. ඔයාලගේ අදහස් දැනගන්න අපි කැමතියි!

මීළඟ ලිපියකින් නැවත හමුවෙමු! Good Luck!