கணக்குப் போட கத்துப்போம் பகுதி 1 | பைத்தானில் ஒரு கால்குலேட்டர் |

By | May 3, 2025

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

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

from math import sqrt
print("""Welcome to this wonderful and very easy-to-learn calculator
created by Srikaleeswarar!""")
print("""In this calculator, you can easily do the following operations:
Addition (1)
Subtraction (2)
Multiplication (3)
Division (4)
Power (5)
Square Root (6)
Please select the operation by entering the corresponding number.""")
try:
operator = int(input("Select the operation that you want to proceed: "))
if operator > 6 or operator <= 0:
print("Enter a correct option between 1 and 6.")
exit()
a = float(input("Enter the first value: "))
if operator == 5:
p = int(input("Enter the power value: "))
print(f"The value of {a}^{p} is:", a ** p)
elif operator == 6:
if a < 0:
print("Error: Cannot calculate square root of a negative number.")
else:
print(f"The square root of {a} is:", sqrt(a))
else:
b = float(input("Enter the second value: "))
if operator == 1:
print(f"Sum of {a} + {b} is:", a + b)
elif operator == 2:
print(f"The subtracted value of {a} – {b} is:", a – b)
elif operator == 3:
print(f"The multiplied value of {a} × {b} is:", a * b)
elif operator == 4:
if b == 0:
print("Error: Division by zero is not allowed.")
else:
print(f"The divided value of {a} by {b} is:", a / b)
print("Thank you for using the calculator!")
except ValueError:
print("Invalid input: Please enter numbers only.")
except Exception as e:
print("Sorry folks, there's an error:", e)

படித்து பார்த்து விட்டீர்களா? அல்லது நேரடியாக இங்கு வந்து விட்டீர்களா? சரி வரிக்கு வரி எளிமையாக விளக்குகிறேன். நான் முந்தைய கட்டுரையிலேயே சொன்னது போல, பைத்தான் மொழியின் அடிப்படை சில தெரிந்திருந்தால் தான் கொஞ்சம் முன்னேறி செல்ல முடியும். அதெல்லாம் பெரியதான ஒரு வேலை இல்லை. # எனும் குறியீட்டிற்குள் நீங்கள் என்ன எழுதினாலும், python அதை நிரலாக கருதாது. ஏற்கனவே, நான் எழுதி வரும் C மொழிக்கான கட்டுரைகளில் comments பற்றி விரிவாக விளக்கியிருக்கிறேன். அது பைத்தானுக்கும் பொருந்தும்.

Print எனும் செயல்பாட்டை கொண்டு உங்களால் அச்சிட முடியும். அதை பயன்படுத்தி தான், முதல் வரியில் நாம் அருமை பெருமைகள் எல்லாம் எழுதித் தீர்த்து இருக்கிறேன். பிற மொழிகளைப் போல் அல்லாமல், ஒரு மேற்கோள் குறி, இரு மேற்கோள் குறி மூன்று மேற்கோள் குறியென உங்களுக்கு விருப்பமான வகையில் மேற்கோள் குறிகளுக்குள் அச்சிட முடியும். மூன்று மேற்கோள் குறிகளை (”’- triple quotes) பயன்படுத்தினால் பல வரியில் எழுத முடியும்.

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

பைத்தான் மொழியில் indentation  விஷயத்தை ஸ்ட்ரிட்டாக கடைபிடிக்க வேண்டும். try: என்பதற்கு கீழே, கொஞ்சம் காலியிடம் விட்டு உள்ளே தள்ளிதான் நிரல்களை எழுத வேண்டும். அதே வரிசையில் எழுதிவிடக் கூடாது. நீங்கள் நிரலை பார்க்கும்போதே இதை புரிந்து கொள்வீர்கள். இவ்வாறு உள்ளே தள்ளி எழுதும்போது, குறிப்பிட்ட பகுதிக்கு உரித்தான நிரல் இதுவென அறிந்து கொள்ளலாம். பொதுவாகவே colon ( : ) பயன்படுத்தும், வரிகளில் indentation பயன்படுத்தப்படும்.

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

அடுத்தபடியாக, எண் 6 க்கு மேலோ அல்லது 1 க்கு கீழ் நமக்கு எந்த செயல்பாடும் இல்லை. நம்மைப் போன்ற சில வில்லங்கம் பிடித்த ஜென்மங்கள் வேண்டுமென்றே 1946 என உள்ளீடை கொடுப்போம். இப்படி கொடுக்கும்போது, இது தவறு சரியான எண்ணை தேர்ந்தெடுக்கவும் என, முதலாவது if விதியை கொண்டு வெளியீடு வரும். exit() எனக் கொடுத்திருப்பது எதற்காக என கேட்டால், நீங்கள் ஆரம்பத்திலேயே வில்லங்கமான எண்ணைப் போட்ட உடனேயே நிரலிருந்து தானாக வெளியில் வந்துவிடும். தேவை இன்றி அடுத்தடுத்த வரிகளை  இயக்கி பார்த்து க்கொண்டிருக்கிறது.

நீங்கள் சரியான உள்ளீடு, அதாவது ஒன்றிலிருந்து 6க்குள் நீங்கள் என்ன செய்ய வேண்டுமோ! அதற்குரிய செயல்பாட்டை தேர்ந்தெடுத்தால், முதலில் உங்களிடம், முதலாவது எண்ணின் மதிப்பை உள்ளிட சொல்லும். அந்த எண்ணின் மதிப்பானது a எனும் மாறி மதிப்பிற்குள் சேமிக்கப்படும். இந்த எண்ணின் வகையானது float எண்ணாக சேமிக்கப்படும். இதனால், உங்களால் தசம புள்ளியிட்ட எண்களைக் கூட கணக்கிட பயன்படுத்தலாம். மேற்கண்டவை இவை தவிர உள்ள  செயல்பாடுகள் என்பதற்காக,elif என்பதை அடுத்தடுத்த செயல்பாடுகளில் பயன்படுத்தியிருப்பதை பார்க்க முடியும்.

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

அல்லது சரியான மதிப்பு கொடுத்தால் மடக்கை மதிப்பை கண்டுபிடித்து சொல்லும். இந்த மடக்கை வேலையை செய்வதற்காகத்தான், நிரலின் முதலாவது வரியிலேயே, import sqrt from math எனக் குறிப்பிட்டு இருக்கிறோம். math எனும் நூலகத்தில் இருக்கும் sqrt செயல்பாட்டை நாம் இங்கு பயன்படுத்துகிறோம் என பொருள்படும். இதை கொடுக்காவிட்டால், sqrt செயல்பாட்டை செய்ய முடியாது.

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

இதேபோல, if, elif எதுவும் இல்லாமல்( else: )operator = 1,2,3,4 ஆகிய உள்ளீடுகளுக்கும், இரண்டாவது எண் மதிப்பானது(b value )கேட்கப்பட்டு அதற்குரிய செயல்பாடுகள் செவ்வனே செய்யப்படும்.”f என்பதை பயன்படுத்துவதன் மூலம், மாறி மதிப்புகளையும் கூட அச்சிட்டு திரையில் காட்ட முடியும்.”f என அச்சிடும் செயல்பாட்டில் முதலில் கொடுத்துவிட்டு, அதைத்தொடர்ந்து {a} என கொடுத்து விட்டால் போதும். எளிமையாக வேலை முடிந்து விடும்.

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

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

இல்லையப்பா! நான் ஆரம்பத்திலேயே கொஞ்சம் வில்லங்கமான வேலை செய்பவன் என, செயல்பாட்டை தேர்ந்தெடுப்பதற்கு பதிலாக abcdxyz என கொடுத்து விட்டீர்கள் என்றால் ValueError ஆகிவிடும். ஏனெனில் operator என்பதில் int அதாவது எண்களை மட்டுமே வாங்க வேண்டும் என நான் முதலிலேயே சொல்லி வைத்து விட்டேன். அதை மீறி உங்களுடைய எழுத்து திறமையை காண்பித்தால், அது தவறு என சொல்வதற்கு தான் இந்த exception. அதைத்தொடர்ந்து ValueError என கொடுத்திருப்பதால், நீங்கள் ஏபிசிடி அடித்தாலும் அது தவறு என முன்பே நாங்கள் காட்டி விடுவோம்.

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

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

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

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

கருத்துக்களை மின் மடலில் தெரிவியுங்கள்.

மேலும் வாய்ப்பு இருப்பின் இந்த நிரலை எழுதி பாருங்கள்.

கட்டுரையாளர்:-

ஸ்ரீ காளீஸ்வரர் செ,
இளங்கலை இயற்பியல் மாணவர்,
(தென் திருவிதாங்கூர் இந்துக் கல்லூரி, நாகர்கோவில் – 02)
இளநிலை கட்டுரையாளர் மற்றும் மொழிபெயர்ப்பாளர்,
கணியம் அறக்கட்டளை.
மின்மடல் : srikaleeswarar@myyahoo.com
இணையம்: ssktamil.wordpress.com