با یکی دیگر از مجموعه مقالات چگونه با پایتون برنامه بنویسیم، با شما برنامه ماشین حساب ساده در پایتون، را خواهیم نوشت. زبان برنامه نویسی پایتون، ابزاری عالی برای کار با اعداد و محاسبات ریاضی است که از آن میتوان در نوشتن برنامههای کاربردی مفید استفاده کرد.
میتوان از روشهای مختلفی برای نوشتن یک برنامه ماشین حساب ساده در پایتون استفاده کرد که ما یکی از آن راهها را انتخاب کردهایم. کدی که خواهیم نوشت، جای زیادی برای بهبود و ایجاد یک ماشین حساب پیشرفتهتر دارد.
اگر از علاقمندان برنامه نویسی پایتون هستید، در ادامه با ما همراه باشید.
برنامه ماشین حساب ساده در پایتون
در این قسمت قصد داریم نحوهی کدنویسی برنامه ماشین حساب ساده در پایتون را برای شما توضیح دهیم. برای نوشتن یک ماشین حساب ساده، به الگوریتم خاصی نیاز نداریم، با کمی حوصله و خلاقیت قادر خواهیم بود، برنامهی موردنظر خود را کدنویسی کنیم.
بیایید از سادهترین شکل ممکن برای نوشتن این ماشین حساب خط فرمان شروع کنیم و مرحله به مرحله به امکانات آن اضافه کنیم.
مرحلهی اول برنامه ماشین حساب ساده در پایتون: دریافت ورودی کاربر
ابتدا با استفاده از دستور input() و نوشتن پیغامی مناسب برای کاربر، دو عدد صحیح مدنظر او را دریافت میکنیم. به این صورت:
number_1 = int(input("Enter your the first number: "))
number_2 = int(input("Enter your the second number: "))
Enter your the first number: 54
Enter your the second number: 23
مرحلهی دوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عملگر
پس از آنکه دو عدد صحیح از کاربر گرفتیم، برای محاسبه و عملیات ریاضی باید مشخص کنیم کاربر میخواهد چه عملیاتی روی اعداد انجام دهد. به همین جهت بار دیگر با دستور input() عملگر مورد نظر را دریافت میکنیم. برای آنکه هر کس ورودی متفاوتی وارد نکند با نوشتن راهنما، یک استاندارد برای ورود عملگر تعیین میکنیم. به این صورت:
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
در اینجا ما از نمادهای ریاضی برای تعیین عملگر کاربر، استفاده کردهایم، اما میتوانیم از اعداد یا حروف انگلیسی نیز برای این کار استفاده کنیم. به عنوان مثال 1 for addition یا b for subtraction.
در ضمن ما، در مثال بالا برای نوشته شدن هر رشته در خط جدید، از سه کوتیشن (‘’’) استفاده کردیم. برای این کار راههای دیگری نیز وجود دارد از جمله میتوان هر خط رشته را در یک پرینت جداگانه نوشت، یا کاراکتر (\) را در انتهای هر خط اضافه کرد.
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
*
مرحلهی سوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عبارات شرطی
اکنون که اعداد و عملگر مورد نظر کاربر را گرفتیم، باید با توجه به عملگر ورودی و با استفاده از if و elif و else عملیات ریاضی خواسته شده کاربر را روی اعداد انجام دهیم. به این صورت:
number_1 = int(input("Enter your the first number: "))
number_2 = int(input("Enter your the second number: "))
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
if operation == '+':
output_number = number_1 + number_2
print( "{} + {} = {}" .format(number_1, number_2, output_number))
elif operation == '-':
output_number = number_1 - number_2
print( "{} - {} = {}" .format(number_1, number_2, output_number))
elif operation == '*':
output_number = number_1 * number_2
print( "{} * {} = {}" .format(number_1, number_2, output_number))
elif operation == '/':
output_number = number_1 / number_2
print( "{} / {} = {}" .format(number_1, number_2, output_number))
else:
print('You have not typed a valid operator, please run the program again.')
اگر در اینجا کاربر عدد اول خود را 65 و عدد دوم را 24 وارد کند و در ادامه عملگر ضرب (*) را انتخاب کند، خروجی به شکل زیر است.
Enter your the first number: 65
Enter your the second number: 24
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
*
65 * 24 = 1560
خب همانطور که میبینید، ما به سادگی ماشین حساب خط فرمان خود را نوشتیم. در مراحل بعدی کد خود را کاملتر و ماشین حساب را کاراتر خواهیم کرد.
مرحلهی چهارم برنامه ماشین حساب ساده در پایتون: تعریف توابع
ما قصد داریم، کاری کنیم که وقتی برنامه اجرا شد، پس از یافتن جواب، خاتمه نیابد و همچنان تا وقتی که ما دستور خاتمه دادن به آن ندادیم، انجام عملیات ریاضی ادامه پیدا کند. برای چنین کاری لازم است از توابع استفاده کنیم.
ابتدا کدی که در بالا نوشتیم را در یک تابع به نام calculate() قرار میدهیم و سپس برنامه را با فراخوانی تابع اجرا میکنیم. به این صورت:
def calculate():
number_1 = int(input("Enter your the first number: "))
number_2 = int(input("Enter your the second number: "))
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
if operation == '+':
output_number = number_1 + number_2
print( "{} + {} = {}" .format(number_1, number_2, output_number))
elif operation == '-':
output_number = number_1 - number_2
print( "{} - {} = {}" .format(number_1, number_2, output_number))
elif operation == '*':
output_number = number_1 * number_2
print( "{} * {} = {}" .format(number_1, number_2, output_number))
elif operation == '/':
output_number = number_1 / number_2
print( "{} / {} = {}" .format(number_1, number_2, output_number))
else:
print('You have not typed a valid operator, please run the program again.')
# Call calculate() outside of the function
calculate()
در ادامه، یک تابع دیگر اضافه میکنیم که در آن از کاربر درمورد ادامه داشتن برنامه یا خاتمه دادن به آن سوال میکند. این تابع را در پایان تابع اول و قبل از فراخوانی calculate() اضافه میکنیم.
در این تابع ابتدا از کاربر با دریافت Yes و No میپرسیم که به اجرا ادامه دهیم یا خیر. در ادامه با توجه به پاسخ کاربر، با استفاده از if و elif و else برنامه را ادامه، متوقف یا تکرار میکنیم.
...
# 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()
در اینجا اگر کاربر، 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()
...
در قدم آخر، باید تابع agian() را در انتهای کدهای داخل تابع calculate() قرار دهیم تا بتوانیم بعد از پایان هر اجرا، از کاربر سوال کنیم به برنامه ادامه میدهد یا خیر. به این صورت:
def calculate():
number_1 = int(input("Enter your the first number: "))
number_2 = int(input("Enter your the second number: "))
operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
if operation == '+':
output_number = number_1 + number_2
print( "{} + {} = {}" .format(number_1, number_2, output_number))
elif operation == '-':
output_number = number_1 - number_2
print( "{} - {} = {}" .format(number_1, number_2, output_number))
elif operation == '*':
output_number = number_1 * number_2
print( "{} * {} = {}" .format(number_1, number_2, output_number))
elif operation == '/':
output_number = number_1 / number_2
print( "{} / {} = {}" .format(number_1, number_2, output_number))
else:
print('You have not typed a valid operator, please run the program again.')
again()
# 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.upper() == 'Y':
calculate()
# If user types N, say good-bye to the user and end the program
elif calc_again.upper() == 'N':
print('See you later.')
# If user types another key, run the function again
else:
again()
# Call calculate() outside of the function
calculate()
مرحلهی پنجم برنامه ماشین حساب ساده در پایتون: بهبود کد
اکنون یک برنامهی خوب و کاربردی داریم، با این حال، موارد بسیاری وجود دارد که میتوان برای بهبود کد انجام داد. برای مثال میتوان یک خوشآمدگویی در ابتدای کد قرار داد. به این صورت:
def welcome():
print('''
Welcome to Calculator
''')
...
# فراموش نکنید که این تابع را فراخوانی کنید
welcome()
calculate()
به طور قطع، این کد به خطاهای بسیاری در موقع اجرا برمیخورد، از جمله خطای تقسیم یک عدد بر صفر یا خطای وارد کردن یک عدد اعشاری یا یک رشته در ورودی که این موارد منجر به دریافت خطا و متوقف شدن برنامه میشود. برای رفع اینگونه خطاها میتوان از مدیریت استثنا (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
''')
...
# فراموش نکنید برای حل توان و باقیمانده تقسیم، باید عبارات شرطی دیگری بنویسید.
روشهای بسیاری برای رفع خطاها و اصلاح و بهبود هر پروژه کدنویسی وجود دارد. در نتیجه نباید منتظر باشید که فقط از یک راه حل صحیح واحد، مشکل به وجود آمده را حل کرد.
جمع بندی
با هم یک پروژه کوچک برنامه نویسی با پایتون را مرحله به مرحله کدنویسی کردیم و دیدیم چگونه یک برنامه میتواند شاخ و برگ بگیرد و رشد کند. هیچ برنامه نویسی قادر نخواهد بود، برنامه را از همان ابتدا به صورت پیچیده بنویسد، بلکه او برنامه را از سادهترین حالت ممکن شروع کرده و به مرور آن را ارتقا داده و پیشرفتهتر میکند.
برنامهی ماشین حسابی که نوشتیم، این امکان را دارد تبدیل به یک ماشین حساب قویتر شود و عملیاتهای پیچیدهتری را محاسبه کند. به شما پیشنهاد میکنیم، برای این منظور خودتان این کار را انجام داده و به تجربه برنامه نویسی خود با پایتون، بیافزایید.
اگر به یادگیری بیشتر در زمینهی برنامه نویسی پایتون علاقه داری، یادگیری زبان پایتون بسیار ساده است. و با شرکت در دورهی آموزش پایتون توسعه وب در آینده میتونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزهی هوش مصنوعی هم بشوی.
۲۳ دیدگاه
آرتا کریمیان۱۳ آذر ۱۴۰۲، ۱۳:۳۵
سلام خیلی عالی بود فقط یه سوال چجوری باید خروجی رو راست چین کنیم؟
نازنین کریمی مقدم۱۹ آذر ۱۴۰۲، ۱۰:۳۳
درود
یکم سخته اما شاید تاپیک زیر بتونه کمک تون کنه:
https://stackoverflow.com/questions/3856403/right-to-left-languages-in-python
۱۰ شهریور ۱۴۰۲، ۱۶:۵۷
خیلی عالی بود ممنونم
۰۹ مرداد ۱۴۰۲، ۰۷:۴۶
عالی بود
۰۸ تیر ۱۴۰۱، ۱۴:۲۱
ارور میده
۱۷ فروردین ۱۴۰۱، ۰۹:۲۵
عالی بود مخصوصا این که از توابع پیس ساخته استفاده نشده بود
۲۹ اسفند ۱۴۰۰، ۱۰:۵۴
عالی بود. سپاس
۱۶ بهمن ۱۴۰۰، ۱۷:۵۶
سلام خیلی عالی بود من فقط یه سوال داشتم من کدام رو نوشتم حالا چجوری باید از ماشین حساب استفاده کنم؟
نازنین کریمی مقدم۱۷ بهمن ۱۴۰۰، ۰۶:۰۲
سلام
کافیه برنامه رو اجرا کنید و ورودی رو در کنسول وارد کنید تا براتون محاسبات انجام بشه و خروجی همونجا نمایش داده بشه.
BOT۱۶ مهر ۱۴۰۰، ۲۱:۲۱
عالی بود هیچ نقصی نداشت ممنون از سایت خوبتون
علیرضا۱۸ شهریور ۱۴۰۰، ۰۸:۱۹
نحوه آموزشتون مرحله به مرحله و عالی بود ممنونم
نازنین کریمی مقدم۱۹ شهریور ۱۴۰۰، ۱۸:۲۶
درود
ممنون که با ما همراه هستید.
امین۳۰ اردیبهشت ۱۴۰۰، ۱۹:۵۰
سلام. کاملاً جامع و مفید.
ممنون
mehdi۰۴ فروردین ۱۴۰۰، ۱۱:۱۴
خیلی خوب و جامع توضیح دادید جایی هیچ سوالی باقی نموند خیلی خیلی ممنون
محمد مبین ملاجعفر۲۳ دی ۱۳۹۹، ۱۳:۴۵
سلام خسته نباشید یه سوال ما باید چی بزنیم که >>> این علامت بیاد هر کاری کردم نتونستم.بعد یه سوال دیگه اگه یه حرکت اشتباه کنیم باید از اول شروع به نوشتن کنیم؟
عبدالرضا مولایی۲۴ دی ۱۳۹۹، ۱۶:۵۷
سلام. محمد مبین عزیز،
شما اگر دوست دارید سه علامت فلش، قبل از عدد ورودی کاربر وجود داشته باشه، باید در مرحله اول کد، جایی که عدد را از کاربر میگیریم، در رشته ورودی تابع input این '<<<' را وارد کنید.. در مورد سوال دوم، اگر منظورت اشتباه در کد نویسی است، شما این برنامه را در یک ویرایشگر کد، نظیر IDLE خود پایتون کد نویسی و ذخیره میکنید و در صورت اشتباه، فقط اون را اصلاح میکنید.
nasiri۱۸ آذر ۱۳۹۹، ۲۰:۰۰
سلام خسته نباشید...
منظورم از خروجی گرفتن به صورت گرافیکی اینه که یه برنامه exe مثل ماشین حسابهای معمول طراحی کنید نه صرف اجرای کد در ترمینال.
:)
نازنین کریمی مقدم۱۹ آذر ۱۳۹۹، ۱۰:۳۳
درود. آموزش گرافیک در پایتون (روی همین بحث ماشین حساب) رو در مقالات بعدی حتما پوشش خواهیم داد.
اما اگر نیاز فوری به یادگیری و کدنویسیش دارید، میتونید از tkinter مشابه با <a href="https://www.geeksforgeeks.org/python-simple-gui-calculator-using-tkinter/" target="_blank" rel="noopener noreferrer nofollow ugc">این راهنما</a> استفاده کنید. منطق عملیات مثل مقاله هست فقط یسری کد برای ساخت المانهای گرافیکی اضافه میشه که مفصل درون لینک توضیح داده.
مینا۱۷ آذر ۱۳۹۹، ۰۸:۱۵
ممنون از اموزش خوبتون حال اگر بخوایم ماشین حساب رو به صورت پیشرفته جلوببریم یعنی مثلا عبارات )2*3(-)1+3(-2 رو محاسبه کنه چیکار باید کنیم
نازنین کریمی مقدم۱۸ آذر ۱۳۹۹، ۱۹:۵۷
درود.
جواب سوالتون یکم توضیح دادنش سخته. شما باید روی شرط پرانتزتون یه بولین فعال کنید تا هر مقداری که از اون به بعد کاربر وارد کرده رو به صورت جدا در یک متغیر دیگه محاسبه کنه و بعد که پرانتز بسته رو دید، متغیر رو غیر فعال کنه و مقدار پرانتز رو در معادله اصلی قرار بده.
حالا اینجا بحث پیش میاد که اگه دو تا پرانتز تو در تو داشته باشیم چطوری میشه؟ برای پرانتز تو در تو بهتر هست که از یه آرایه یا لیست استفاده کنید به صورتی که هر خونه از آرایه میتونه خودش یه آرایه باشه.
سعی میکنیم یه مقاله آموزشی از ماشین حساب پیشرفته رو در لیست مقالات آینده قرار بدیم. تا با دیدن کدش روند رو بهتر متوجه بشید.
nasiri۱۴ آذر ۱۳۹۹، ۱۶:۳۱
سلام
میتونید کدهای ماشین حساب به صورت گرافیکی هم آپلود کنید؟
نازنین کریمی مقدم۱۴ آذر ۱۳۹۹، ۲۳:۲۷
سلام.
منظورتون از به صورت گرافیکی چی هست؟
A. A. Y۰۴ تیر ۱۳۹۹، ۱۶:۱۶
ممنون خیلی خوب و آموزنده
راهنمای مقاله
برنامه ماشین حساب ساده در پایتون
مرحلهی اول برنامه ماشین حساب ساده در پایتون: دریافت ورودی کاربر
مرحلهی دوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عملگر
مرحلهی سوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عبارات شرطی
مرحلهی چهارم برنامه ماشین حساب ساده در پایتون: تعریف توابع
مرحلهی پنجم برنامه ماشین حساب ساده در پایتون: بهبود کد
راهنما و فهرست مقاله
برنامه ماشین حساب ساده در پایتون
مرحلهی اول برنامه ماشین حساب ساده در پایتون: دریافت ورودی کاربر
مرحلهی دوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عملگر
مرحلهی سوم برنامه ماشین حساب ساده در پایتون: اضافه کردن عبارات شرطی
مرحلهی چهارم برنامه ماشین حساب ساده در پایتون: تعریف توابع
مرحلهی پنجم برنامه ماشین حساب ساده در پایتون: بهبود کد