آموزش ساخت ماشین حساب ساده و پیشرفته با پایتون
آموزش ساخت ماشین حساب ساده و پیشرفته با پایتون
قبل از اینکه به آموزش ساخت ماشین حساب ساده و پیشرفته با پایتون بپردازیم، باید مختصری با این زبان برنامه نویسی آشنا شوید. پایتون، زبان برنامه نویسی تفسیری، شیء گرا و سطح بالایی بوده که به دلیل ساختمان داده پیش ساخته، نوع دهی و پیوند پویا به زبانی کارامد و توسعه چابک مبدل شده است.
پایتون را به شکلی طراحی کردهاند که علاوه بر سادگی، از ماژولها و بستههای متعددی پشتیبانی کند. پایتون، دارای کتابخانههای متعددی بوده که به صورت متن باز، برای بسیاری از پلتفرمها قابل دسترسی خواهند بود. پروژه ساخت ماشین حساب با پایتون، از اولین پروژههایی ست که یادگیری همه زبانهای برنامه نویسی با آن آغاز میشود. چراکه به کمک آن میتوان تعداد زیادی از مفاهیم را فرا گرفت.
برای ساخت ماشین حساب با پایتون چه پیش نیازهایی لازم است؟
برای اینکه بتوانید ساخت ماشین حساب با پایتون را بطور کامل آموزش ببینید، مواردی را به عنوان پیش نیاز لازم دارید. قبل از آغاز پروژه ساخت ماشین حساب، باید پایتون 3 را روی سیستم خود نصب کنید. علاوه براین بایستی با زبان برنامه نویسی پایتون در سطح مقدماتی آشنایی داشته باشید. تا درصورتی که این برنامه را در اختیار ندارید، بتوانید با آشنایی با شیوه نصب آن، برنامه را نصب و اجرا کنید.
معرفی ماژول Tkinter برای رابط گرافیکی
ماژول Tkinter، یکی از کتابخانههای گرافیکی در پایتون بوده که باید همزمان با نصب پایتون، نصب شود. این ماژول، مجموعهای از ابزارها و ویجتها برای ساخت اپلیکیشنهای دسکتاپ با رابط گرافیکی است. Tkinter، از «Tk Interface»گرفته شده که اشاره به Tk GUI دارد. از این کتابخانه در زبان برنامه نویسی پایتون، برای طراحی و ساخت پنجرهها، دکمهها، برچسبها، کاردهای مخصوص متن و... استفاده میشود. گرچه بیشترین کاربرد این ماژول برای ساخت اپلیکیشنهای با رابط کاربری گرافیکی است، اما میتوان برای ساخت ماشین حساب در پایتون نیز از آن استفاده کرد.
اولین مرحله؛ دریافت ورودی ماشین حساب از پایتون
ممکن است آموزش پایتون ماشین حساب مشکل به نظر برسد. اما باید بدانید همان زمان که اعداد را به ماشین حساب میدهید تا معاملات را انجام دهد، شما در حال برنامه نویسی هستید. پس ساخت ماشین حساب با پایتون هم زیاد نباید مشکل باشد البته در صورتی که قدم به قدم ما را همراهی کنید. پس باید یک فایل پایتون با پسوند py را باز کرده و ویرایشگر دلخواهتان را انتخاب کنید.
فایل را به صورت «calculator.py»، نامگذاری کرده و ویرایشگر متن Nano را اجرا کنید تا کد نویسی بطور رسمی آغاز شود. دو عدد را به عنوان ورودی کاربر وارد کرده که باید از توابع پیش ساخته bulit-in پایتون، یعنی input استفاده شود. با تابع input()، رشتهای به کاربر نشان داده میشود که داده کاربر باید به متغیری تخصیص داده شود. لازم است از یک فضای خالی Space، در پایان رشته استفاده شود. با این شیوه، فاصلهای بین ورودی کاربر و پیام نمایش داده شده تا ظاهر برنامه مطلوبتر شود.
number_1 = input('Enter your first number: ')
number_2 = input('Enter your second number: ')
بعداز اینکه این دوخط کد را مشاهده کردید، میتوان برنامه را اجرا کرد که قبل از آن باید فایل برنامه ذخیره شده باشد. از آنجاییکه برای ساخت ماشین حساب با پایتون، از ویرایشگر nano استفاده شده، ترکیبی از کلیدهای CTRL و X در صفحه کلید و سپس Y و Enter نیز میتوانند به کار برده شوند.
python calculator.py
برای اینکه فایل پروژه ماشین حساب اجرا شود، بایستی دستور بالا در شل سیستم عامل یا ترمینال، وارد شود. بعد از اجرای کد، پیامی در خروجی خط فرمان نمایش داده شده تا کاربر دو عدد ورودی را با صفحه کلید، وارد کند.
Output
Enter your first number: 5
Enter your second number: 7
با این کد، برنامه میتواند مجدد باز شده و عملیات را با اعداد مختلف، کلمهها، نمادها، فضاهای خالی و کلید Enter انجام دهد. زیرا تابع ()input، داده ها را به صورت رشته دریافت کرده تا محدودیتی در دریافت نوع داده نداشته باشد. این رشته از تابع ()input، با عدد صحیح (Integer) یا نوع ممیز شناور (Float) ، قابل تبدیل هستند.
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
درصوتی که فایل برنامه اجرا شود و مقادیر عدد صحیح از صفحه کلید دریافت شود، خطایی رخ نخواهد داد.
Output
Enter your first number: 23
Enter your second number: 674
اما درصورتی که دادهها از نوع نماد یا حروف باشند، دربرنامه خطا را به شما نشان میدهد.
Output
Enter your first number: sammy
Traceback (most recent call last):
File "testing.py", line 1, in <module>
number_1 = int(input('Enter your first number: '))
ValueError: invalid literal for int() with base 10: 'sammy'
دومین مرحله؛ اضافه کردن عملگرهای ماشین حساب با پایتون
بعد از اینکه دادهها وارد ماشین حساب شدند، نوبت به اضافه کردن عملگرها مانند جمع، تفریق، ضرب و تقسیم است. همزمان با نوشتن این برنامه باید مطمئن شد که تمامی بخشها به درستی کار میکنند. به همین خاطر باید تمامی کدهایی که تا به الان نوشته شده را به دقت بررسی کرد. این مورد همان مسئلهای ست که ما در دوره پروژه محور پایتون به آن میپردازیم. زیرا در بسیاری از موارد، کاربران تا به این قسمت از ساخت ماشین حساب با پایتون را روی کاغذ پیش میبرند و با فرض صحیح بودن کدها، پروژه را کامل شده میدانند.
اما زمانی که روی یک پروژه واقعی کار میکنند، متوجه خطاها و مشکلاتی میشوند که برای حل کردنش باید تمامی کدها را از ابتدا بررسی کنند. به بیانی دیگر دورههای آموزشی پروژه محور، در کنار آموزش، تجربه زیادی را هم در اختیار کاربر میگذارد.
برای ساخت ماشین حساب به کمک زبان پایتون، برای انجام عملیات جمع، باید از علامت + استفاده کنید. به این صورت که اعداد را به شکل متغیر تعریف کرده و علامت + را بین آنها قرار داده و آن را داخل تابع Print بگذارید. برای اینکه کاربر در طول زمان اجرا،از نحوه عملکرد آن اطلاع داشته باشد، میتوان از فرمت کنندههای رشته استفاده کرد.
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
print(number_1 + number_2)
در مرحله بعد، کاربر باید بتواند دادههای نمایش داده شده را تایید کند. پس لازم است کد زیر را وارد کنید:
Output
Enter your first number: 90
Enter your second number: 717
90 + 717 =
807
سپس نوبت به اضافه کردن دیگر عملگرها میرسد که برای وارد کردن آن باید از فرمتی یکسان استفاده کرد.
مرحله سوم، اضافه کردن عبارت های شرط در پایتون
نوبت به آن میرسد که برای کاربر این امکان فراهم شود تا عملگرهای مختلف را به برنامه اضافه کرده تا محاسبات را انجام دهد. برای نوشتن این رشته در خطهای مختلف، باید از نقل قول استفاده کرد:
'''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
'''
در این مرحله میتوان نمادی را برای عملگرهای ریاضی استفاده کرد. برای مثال نماد /، برای تقسیم است. سپس باید عبارتهای شرطی را به برنامه اضافه کرد. در زبان پایتون، If در بخش مربوط به عمل جمع قرار میگیرد و برای باقی اعمال ریاضی، سه عبارت elseif یا elif به کار میروند. اگر کاربر نمادی را وارد نکند، بایستی در خروجی، خطایی نمایش داده شود. به همین دلیل باید در قسمت پایانی if، عبارت else قرار داده شده تا خطا به کاربر نمایش داده شود.
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
number_1 = int(input('Enter your first number: '))
number_2 = int(input('Enter your second number: '))
if operation == '+':
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)
elif operation == '-':
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)
elif operation == '*':
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)
elif operation == '/':
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)
else:
print('You have not typed a valid operator, please run the program again.')
تعریف توابع ماشین با پایتون در مرحله چهارم
اگر کاربر بخواهد برنامه را به دفعات تکرار کند، لازم است چند تابع در برنامه تعریف شود. برای اولین مرحله، کدهای موجود باید در یک بلوک تابع قرار داده شده و آن را calculator() نامید. برای اینکه از اجرای برنامه مطمئن شوید، بایستی در بخش پایانی فایل، تابع فراخوانی شود.
# Define our function
def calculate():
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
number_1 = int(input('Please enter the first number: '))
number_2 = int(input('Please enter the second number: '))
if operation == '+':
print('{} + {} = '.format(number_1, number_2))
print(number_1 + number_2)
elif operation == '-':
print('{} - {} = '.format(number_1, number_2))
print(number_1 - number_2)
elif operation == '*':
print('{} * {} = '.format(number_1, number_2))
print(number_1 * number_2)
elif operation == '/':
print('{} / {} = '.format(number_1, number_2))
print(number_1 / number_2)
else:
print('You have not typed a valid operator, please run the program again.')
# Call calculate() outside of the function
calculate()
اکنون باید تابع دوم را ساخت که دارای عبارتهای شرطی مختلفی هستند. این بلوک کد، امکان درخواست برای محاسبه مجدد را با ماشین حساب فراهم کرده که بعداز آن باید تابعی با نام again() تعریف و پس از def calculate() قرار داده شود.
...
# Define again() function to ask user if they want to use the calculator again
def again():
# Take input from user
calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')
# If user types Y, run the calculate() function
if calc_again == 'Y':
calculate()
# If user types N, say good-bye to the user and end the program
elif calc_again == 'N':
print('See you later.')
# If user types another key, run the function again
else:
again()
# Call calculate() outside of the function
calculate()
در کد بالا استفاده از عبارت else، میتواند خطا را مدیریت کرده و حروف انگلیسی کوچکy و n را نیز به Y و N اضافه کرد. برای اینکار میتوان از تابع رشتهای به نام str.upper() استفاده کرد.
...
def again():
calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')
# Accept 'y' or 'Y' by adding str.upper()
if calc_again.upper() == 'Y':
calculate()
# Accept 'n' or 'N' by adding str.upper()
elif calc_again.upper() == 'N':
print('See you later.')
else:
again()
...
بعد از این کد باید تابع again() در پایان تابع function() اضافه کرد تا از کاربر سوال شود، آیا قصد ادامه عملیات را دارد یا خیر.
بهبود کدهای ساخت ماشین حساب با پایتون در پنجمین مرحله
تا به این مرحله با نحوه ساخت ماشین حساب با پایتون آشنا شدید. اما باید بدانید که کدهایی که تا به الان نوشته اید، می تواند بهینه شود. به عنوان مثال، یک پیام تابع خوش آمد گویی به کاربر نشان داده شود.
def welcome():
print('''
Welcome to Calculator
''')
...
# Don’t forget to call the function
welcome()
calculate(
در کنار توابع بالا، روشهای مختلفی وجود دارد تا به کمک آنها بتوان رسیدگی به کدها و مدیریت خطا را به درستی انجام داد. با این کدها، اگر مقادیر وارد شده به جز اعداد صحیح باشند، برنامه خطا داده و عملیات متوقف میشود. اگر کاربر عملگر تقسیم را انتخاب کند و به کمک آن عددی را به 0 تقسیم کند، از برنامه خطا دریافت میکند. برای برطرف کردن این خطا باید از عبارت «Try ... Except» استفاده کرد و عملگرهای اضافه را به روش زیر اضافه کرد:
...
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
** for power
% for modulo
''')
...
# Don’t forget to add more conditional statements to solve for power and modulo
پیشنهاد میکنیم گزاره این حلقه مجدد نوشته شود. اما باید بدانید برای بهینه کردن کدهای پایتون، روشهای دیگری نیز وجود دارد.
خلاصه مطلب
در این مقاله به یکی از ابتداییترین مفاهیم در برنامه نویسی در پایتون، یعنی ساخت ماشین با پایتون پرداختیم. ضمن آموزش گام به گام ساخت ماشین حساب، یکی از کاربردیترین ماژولهای برنامه نویسی پایتون را نیز معرفی کردیم. درنظر داشته باشید که آموزش برنامه نویسی پایتون، در زمینه های مختلف می تواند کاربردی باشد و در حوزههای مختلف به شما کمک کند. چراکه زبان برنامه نویسی پایتون، برای تمام افراد علاقه مند به برنامه نویسی که آشنایی چندانی با زبانهای دیگر برنامه نویسی ندارند، مفید خواهدبود. تا بتوانند جزئیات را بطور کامل درک کنند.
پیام بگذارید.