Skip to content
Home » மலைப்பாம்பு மொழி 25 – தில்லானா தில்லானா

மலைப்பாம்பு மொழி 25 – தில்லானா தில்லானா

Python

சரத்தின் மு.வ.செயல்பாடுகள் இந்த அத்தியாயத்திலும் தொடர்கின்றன.

13. replace()

ஒரு சொல்லில் இடம்பெற்றிருக்கும் குறிப்பிட்ட எழுத்துக்கு (எத்தனை முறை இடம்பெற்றிருந்தாலும் சரி) பதிலாக வேறொன்றை மாற்ற இயலுமா?

கட்டாயம் முடியும். அதற்கு தானே replace() இருக்கிறது. எந்த எழுத்து எதனால் மாற்றப்படவேண்டும் என்கிற இரண்டு அளவுருக்களை அதனிடம் நீங்கள் தர வேண்டும்.

நிரல் 1: சரத்தின் உறுப்பை இன்னொன்றைக்கொண்டு மாற்றுதல்

text என்கிற அடையாளங்காட்டியில் இடம்பெற்றுள்ள சரத்தில், எங்கெங்கெல்லாம் ‘a’ வருகிறதோ அவற்றை ‘z’ஐ கொண்டு மாற்றியிருக்கிறோம். ஒருவேளை அவ்வுறுப்பு நீங்கள் தரும் சரத்தில் இல்லையென்றால் என்ன ஆகுமென்பதை முயன்று பாருங்கள்.

இப்போது இன்னொரு சந்தேகம், எழுத்தை மட்டும் தான் மாற்ற இயலுமா? சரத்தின் ஒரு சொல்லை மாற்றுவதற்கு உண்டான வாய்ப்பு இருக்கிறதா?

ருக்கு ருக்கு என்கிறார் அதே replace().

நிரல் 2: சரத்தின் சொல்லை இன்னொன்றைக்கொண்டு மாற்றுதல்

போன நிரல் தைத்த அதே டைலர் தான், வாடகையும் கூட அதே தான். என்ன எழுத்துக்குப் பதிலாகச் சொல்லை அனுப்பி மாற்றித்தரச் சொல்கிறோம். நிரல் எழுதும்போது “Hello, World!” ஆக இருந்தவர், நிரலை இயக்கியதும் “Hello, Python!” ஆகிவிட்டார்.

14. split()

சரத்தின் உறுப்புகளை split()ஐ கொண்டு பட்டியலின் உறுப்புகளாக மாற்றுவது எப்படி என்பதைப் பார்க்கவிருக்கிறோம்.

நிரல் 3: சரத்தின் உறுப்புகளைப் பட்டியலின் உறுப்புகளாக மாற்றுதல்

மேற்கண்ட நிரலில், நான்கு சொற்களைக்கொண்ட ஒரு சரம் உருவாக்கப்பட்டிருக்கிறது . இப்போது சரத்தில் இடம்பெற்றிருக்கும் இடைவெளியை அடிப்படையாகக் கொண்டு , அதன் சொற்களைத் தனியே பிரித்தெடுத்து பட்டியலின் உறுப்புகளாக மாற்றியிருக்கிறோம்.

அப்படி மாற்றப்படும்போது முன்கூட்டியே பட்டியலில் எத்தனை உறுப்புகள் இடம்பெறும் என்பதையும் நீங்கள் கண்டறியலாம். உதாரணத்துக்கு text அடையாளங்காட்டிக் குறிக்கும் சரத்தில் எத்தனை இடைவெளிகள் உள்ளன, 3 இல்லையா? ஆக nன் மதிப்பு 3.

இனி பட்டியலில் இத்தனை உறுப்புகள் இடம்பெறவிருக்கின்றன என்பதை அறிவது சுலபம். n+1 என்ற சூத்திரத்தை நினைவில் கொள்ளுங்கள். பட்டியலில் நான்கு உறுப்புகள் இடம்பெறும், இதைக் குறைந்தது வெவ்வேறு மதிப்புகளைக் கொண்டு 3 நிரல் எழுதி உறுதிப்படுத்திடுங்கள்.

split()ற்கு கட்டாயம் அளவுரு தந்தே ஆகவேண்டுமா? அப்படியெல்லாம் இல்லை. ஒருவேளை தராவிட்டால் இடைவெளியை அடிப்படையாகக் கொண்டு இயங்கும்.

இடைவெளி தவிர split()ற்கு வேரென்ன அளவிரு தர முடியும்?

நிரல் 4:

இம்முறை காற்புள்ளியை அடிப்படையாகக்கொண்டு சரத்தின் சொற்களைப் பிரித்து, பட்டியலின் உறுப்புகளாக மாற்றியிருக்கிறோம்.

இது என்ன சரத்திற்கு நடக்கும் அநியாயம்? அதன் உறுப்புகள் பறிகொடுக்கப்பட்டு பட்டியலுக்குச் செல்கின்றனவே? பட்டியலை தட்டி கேட்க யாருமே இல்லையா?

ஏன் இல்லை?

15.join()

இவர் முதல் பாதியில் ஆட்டம்போட்ட split()ஐ பழிதீர்க்கப் பிரபஞ்சத்திற்கு பைத்தானால் அனுப்பி வைக்கப்பட்டவர்.

சரங்களின் வரிசையை உள்ளீடாகப் பெற்று, அவற்றை ஒரே சரமாக மாற்றுவது தான் இந்த join() செயல்பாட்டின் நோக்கம்.

நிரல் 5: சரங்களின் வரிசையைப் பெற்று ஒற்றைச் சரமாக மாற்றுதல்

சரங்களை இணைக்க ஏதாவதொரு சிறப்புச் சின்னம் பயன்படுத்தப்பட வேண்டும். இந்நிரலில் ‘-‘ஐ உபயோகப்படுத்தி இருக்கிறோம். words எனும் அடையாளங்காட்டியில் தனித்தனி உறுப்புகளாகப் பட்டியலில் இடம்பெற்ற சரங்களை, join() செயல்பாட்டைப் பயன்படுத்தி ஒற்றை சரமாக ஆக்கியிருக்கிறோம். ஒரு சொல்லையும் மற்றொன்றையும் இணைக்க ‘-‘ உதவி செய்திருக்கிறது. split()ற்கும், join()ற்குமான மற்றுமொரு முக்கிய வேறுபாடு அவை எதைக்கொண்டு இயக்கப்படுகின்றன என்பதில் இருக்கிறது.

split()ஐ சரத்தைச் சேமிக்க உருவாக்கப்பட்ட அடையாளங்காட்டிய கொண்டு இயக்கியிருக்கிறோம். அதுவே join()ஐ சரங்களின் வரிசையை இணைக்கப் பயன்படும் சிறப்புச் சின்னத்தைக்கொண்டு அழைத்திருக்கிறோம். ஆக, எந்த செயல்பாடு எப்படி அழைக்கப்படுகிறது என்பது கவனத்தில் கொள்வதும் அவசியம்.

நிரல் 6:

போன நிரலுக்கும் இதற்கும் பெரிய வேறுபாடில்லை. இங்கே இணைப்புப் பாலமாகக் காற்புள்ளி இருக்கிறது, அவ்வளவுதான்.

எனக்குப் பாலமெல்லாம் தேவையில்லை என்பவர்கள், ”.join(words) என்ற நிரல் வரியை எழுதிப் பார்க்கலாம். சரங்களின் வரிசை இடைவெளியே இல்லாமல் ஒரே சரமாக ஆகிவிடும்.

16. isalnum()

is எனத் தொடங்கும் எல்லா சர மு.வ.செயல்பாடுகளும் ஆம்/இல்லை என்ற இரண்டில் எதாவதொன்றைத்தான் பதிலாகத் தரும். சுருங்கச்சொன்னால் இவ்வகை செயல்பாடுகள் பைனரியில் தான் பதில் சொல்லும்.

எண்ணெழுத்து(AlphaNumeric) குறித்து கேள்விப்பட்டிருப்பீர்கள், ஒரு சரத்தில் எண்களும், எழுத்துக்களும் இருந்தால் அவை எண்ணெழுத்து. இந்த செயல்பாடு நீங்கள் உள்ளீடு செய்யும் சரம் எண்ணெழுத்து தானா என்பதைக் கண்டறிந்து ஆம்/இல்லை என்று பதில் சொல்லும்.

நிரல் 7:

text எனும் அடையாளங்காட்டியில் சேமிக்கப்பட்டிருக்கும் சரம், எண்களையும் எழுத்துக்களையும் கொண்டிருக்கிறது அதனால் முடிவு ஆம்.

நிரல் 8:

text எனும் அடையாளங்காட்டியில் சேமிக்கப்பட்டிருக்கும் சரம், எண்களையும் எழுத்துக்களையும் கொண்டிருக்கவில்லை அதனால் முடிவு இல்லை.

நீதி: இச்செயல்பாடு ஆம் என்று தலையாட்ட வேண்டுமென்றால், சரம் எண்களையும் எழுத்துக்களையும் கட்டாயம் கொண்டிருக்கவேண்டும்.

17.isalpha()

சேமிக்கப்பட்டிருக்கும் சரம் எழுத்துக்களை மட்டும் கொண்டிருந்தால், இச்செயல்பாடு ஆமென்று தலையசைக்கும்.

நிரல் 9:

ஆம் என்று வந்ததற்கான காரணத்தை விளக்க வேண்டியதில்லை, இந்நிரலில் text எழுத்துக்களை மட்டுமே கொண்டிருக்கிறது.

நிரல் 10:

காற்புள்ளி, ஆச்சரியக்குறி போன்றவை சிறப்புச் சின்னங்கள், அவை எழுத்துக்களின் வகைமையில் சேராது. ஆகவே இறுதி முடிவு இல்லையென்று வந்திருக்கிறது.

18. isdigit()

எழுத்துக்கு மட்டும் தனி செயல்பாடு இருக்கலாம், எண் மட்டுமென்ன தொக்கா? இல்லை தக்காளி தொக்கா?

இச்செயல்பாடு சரம் எண்களை மட்டும் கொண்டிருந்தால் ஆம் என்று பதில் போடும், கீழ்க்காணும் வகையில்.

நிரல் 11:

நிரல் 12:

19. islower()

lower() என்ற செயல்பாட்டை ஏற்கனவே பார்த்திருந்தோம். இவர் வேறு வகை, இரண்டையும் குழப்பிக்கொள்ளக்கூடாது. இவரது(islower()) வேலை, நீங்கள் தரும் சரத்தின் அனைத்து உறுப்புகளும் சிறிய எழுத்துகள் தானா என்பதைக் கண்டறிந்து ஆம்/இல்லை என்று சொல்வது.

நிரல் 13:

textன் அனைத்து உறுப்புகளும் சிறிய எழுத்துகள், எனவே ஆம் என்போம்.

நிரல் 14:

textன் அனைத்து உறுப்புகளும் சிறிய எழுத்துகள் அல்ல, எனவே இல்லை என்போம்.

சிறிய எழுத்துக்கெல்லாம் ஒரு செயல்பாடு இருக்கையில் பெரிய ….

20. isupper()

அனைத்து உறுப்புகளும் பெரிய எழுத்துகளாக இருக்கும் பட்சத்தில் மகிழ்ச்சியில் இச்செயல்பாடு ஆமென்று சொல்லும்.

நிரல் 15:

ஆம் என்று வந்ததற்கான காரணத்தை நீங்களே கணித்துக் கொள்ளலாம். போலவே, அடுத்த நிரலில் இல்லையென்று வரவிருப்பதற்கும்.

நிரல் 16:

21. isspace()

சரத்தின் குறிப்பிட்ட ஒரு உறுப்பு இடைவெளியா என்பதைச் சோதித்துச் சொல்பவர் isspace().

கவனிக்க: சரத்தில் இடைவெளி இடம்பெற்றிருந்தால் அல்ல, சரத்தில் குறிப்பிட்ட ஓரிடம்/ ஒரு உறுப்பு இடைவெளியாக இருந்தால் ஆம் என்று பதில் வரும். பெரும்பாலும் இச்செயல்பாடு மறுசெய்கை வரிகளோடு இணைந்து பயணிக்கும்.

நிரல் 17:

நிரல் 18:

22. splitlines()

சரத்தில் ‘\n’ஐ பைத்தான் சந்திக்கும் நொடி, புதிதாக ஒரு வரியை உருவாக்கி அங்கிருந்து தொடரும். மாறாக splitlines() செயல்பாடு தனக்கு வழங்கப்படும் சரத்தில் ‘\n’ஐ கொண்டிருந்தால், உறுப்புகள் பிரிக்கப்பட்டு பட்டியலில் சேர்க்கப்படும்.

எதன் அடிப்படையில் உறுப்புகள் பிரிக்கப்படுகின்றன?

‘\n’ற்கு முன்பு உள்ளவை மற்றும் அதைப் பின்தொடர்ந்து வருபவை ஆகியவை தனித்தனி உறுப்புகளாகப் பிரிக்கப்பட்டு பட்டியலில் சேர்க்கப்படும்.

நிரல் 19:

நிரல் 20:

பைத்தான் மூலம் கோப்புகளை உருவாக்கி அதனோடு தொடர்புகொள்ள இச்செயல்பாடுகள் மிகமுக்கிய பங்காற்றுகின்றன.

23: sorted()

சரத்தில் உள்ள உறுப்புகளை பெரியதிலிருந்து சிறியது வரை வரிசைப்படுத்த இச்செயல்பாடு உதவுகிறது.

நிரல் 21:

நிரல் 22: சரத்தின் உறுப்புகளை தலைகீழாக எழுதுதல்

எதிர் குறியீட்டு எண்களைப் பயன்படுத்தி சரத்தின் உறுப்புகளை தலைகீழாக எழுதுகிறோம். சரத்தின் நீளம் 13, for loopன் படி பார்த்தால் அதன் ஒவ்வொரு செய்கையிலும் பின்வருமாறு மதிப்புகள் இருக்கும்

(len(str)-1, -1, -1) -> 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0

இந்த குறியீட்டு எண்களைச் சரத்திற்குப் பொருத்திப் பார்த்தால், அதன் உறுப்புகள் அப்படியே தலைகீழாக இருக்கும். for loopன் ஒவ்வொரு செய்கையிலும் பின்னாலிருந்து ஒவ்வொரு எழுத்தாக எடுத்து புதிதாக ஒரு அடையாளங்காட்டியில்(reversed_str) சேமித்துக்கொண்டே வருகிறோம். அதை அச்சிட்டுப் பார்த்தால் நமக்கான வெளியீடு இருக்கும்.

நிரல் 23:

விகடகவி என்ற சொல்லின் சிறப்பு உங்களுக்குத் தெரியும்தானே? அதன் எழுத்துக்களைத் தலைகீழாக்கி எழுதினாலும் விகடகவி தான் கிடைக்கும், இதை Palindrome என்று அழைக்கிறார்கள். ஒரு சரத்தைப் பெற்று, அது பாலின்றோமா இல்லையா என்பதைக் கண்டறிய ஒரு நிரல் எழுத இருக்கிறோம்.

போன நிரலின் மூலம், ஒரு சரத்தின் உறுப்புகளைத் திருப்பி எழுதுவது எப்படி என்று பார்த்தோம். அது மூலசரத்தோடு கச்சிதமாக ஒத்துப்போனால் அது பாலின்றோம்.

reversed_strல் தலைகீழாக எழுதப்பட்ட சரம் உள்ளது, அது input_strன் மதிப்போடு ஒத்துப்போகிறதா? இல்லை. ஆகவே உள்ளீடு செய்யப்பட்ட சரம் அந்த விஷயத்துக்குச் சரிப்பட்டு வராது.

இதே நிரலை malayalam என்ற உள்ளீட்டைக் கொண்டு பரிசோதித்துப் பாருங்கள்.

நிரல் 24:

பெற்றவர்களைச் சுற்றி பிள்ளையார் ஞானப்பழம் வாங்கியது போல பாலின்றோம் நிரலுக்கு மற்றுமொரு வழியுண்டு. அதைத்தான் இந்த நிரலில் எழுதியிருக்கிறோம்.

நிரல் 25: வளையோசை கல கல கலவென

போனவாரம் வளையோசை பாடல் குறித்துப் பேசியிருந்தோம் அல்லவா? அதற்குண்டான நிரல் (பாடலின் முதல் வரியை மட்டும் எடுத்துப் பயன்படுத்தியிருக்கிறோம்)

while loopன் மூலம் சரத்தின் உறுப்புகளில் ஊடுருவப் போகிறோம். மேலும் find() செயல்பாடு குறித்து போனவராம் பார்த்தது நினைவிருக்கலாம். ஒரு குறிப்பிட்ட உறுப்பு சரத்தில் இடம்பெற்றிருந்தால் அதன் நேர் குறியீட்டு எண் அச்சிடப்படும், ஒருவேளை அவ்வுறுப்பு இல்லாமலிருந்தால் -1. முதலில் கல, வளையோசை பாடலில் இடம்பெற்றிருக்கிறதா என்பதை நிரலில் பரிசோதிக்கிறோம். இல்லையென்றால் உடனடியாக நிரல் முற்றுப்பெறுகிறது.

உறுப்பு சரத்தில் இடம்பெற்றிருக்கும் பட்சத்தில் அதன் எண்ணிக்கை 1ஆல் கூட்டப்பட்டு, அதன் அடுத்த இருப்பை கண்டறியும் பொருட்டு நேர் குறியீட்டு எண்ணும் (முதல் இருப்பு கிடைத்த இடத்திலிருந்து) 1ஆல் கூட்டப்படுகிறது.

சரத்தின் இறுதி எழுத்தை அடைவது வரைக்கும் இச்செய்கை திரும்பத் திரும்ப மேற்கொள்ளப்பட்டு இறுதியில் கல வளையோசையில் பாடலின் முதல் வரியில் இடம்பெற்றிருக்கும் மொத்த எண்ணிக்கை அச்சிடப்படுகிறது.

தில்லானா தில்லானா பாடலில் எத்தனை முறை தில்லானா இடம்பெறுகிறது என்பதை வைத்து வாரப் பத்திரிக்கையில் போட்டியெல்லாம் வைத்தார்கள். இப்போது அந்த போட்டியை மீண்டும் வைக்கச் சொல்லுங்கள்.

நிரல் 26: இரண்டு சொற்களில் ஒரே எழுத்துகள் தான் இடம்பெற்றுள்ளனவா என்பதைக் கண்டறிவது

listen மற்றும் silent ஆகிய இருசொற்களையும் பாருங்களேன், ஒரே வார்த்தைகள் தான் இடம்பெற்றிருக்கின்றன இல்லையா? இதனை anagram என்று அழைக்கிறார்கள்.

நிரலில் இதை எப்படிச் சாதிப்பது?

sorted() செயல்பாட்டை வைத்துத் தான். இருசொற்களையும் வரிசைப்படுத்தி , அதனை ஒப்பிட்டுப் பார்த்து இரண்டும் சமமாக இருந்தால், anagram என்று அச்சிட வேண்டியது தான்.

இந்த வாரத்தோடு சரம் முடிவுக்கு வருகிறது.

(தொடரும்)

பகிர:
ரிஷிகேஷ் ராகவேந்திரன்

ரிஷிகேஷ் ராகவேந்திரன்

நாமக்கல் மாவட்டம் இராசிபுரத்தை அடுத்த புதுப்பாளையம் என்னும் கிராமத்தைச் சேர்ந்தவர். தொழில்நுட்பத் துறை சார்ந்து தொடர்ந்து எழுதிவருபவர். இவர் எழுதிய ‘தமிழ் ராக்கர்ஸ் தோற்றமும் மறைவும்‘ என்னும் மின்னூல் பரவலான கவனத்தைப் பெற்றது. ரூபியா ரிஷி என்ற பெயரில் புனைவுகள் எழுதி வருகிறார்.View Author posts

பின்னூட்டம்

Your email address will not be published. Required fields are marked *